自定义View界面大合集iAsHTML5中文学习网 - HTML5先行者学习网
今天我用自己写的一个Demo 和大家详细介绍一个Android中自定义View中的使用与绘制技巧。iAsHTML5中文学习网 - HTML5先行者学习网
iAsHTML5中文学习网 - HTML5先行者学习网
iAsHTML5中文学习网 - HTML5先行者学习网
1.自定义view绘制字符串iAsHTML5中文学习网 - HTML5先行者学习网
iAsHTML5中文学习网 - HTML5先行者学习网
相信在实际开发过程中必然很多地方都须要用到系统字 为什么会用到系统字? 方便 省内存 我相信做过J2ME游戏开发的朋友应该深知内存有多么多么重要 而且使用它还可以带来一个更重要的好处就是很方便的可以实现多国语言的切换 笔者现在在正在做的一个产品就是可以多语言切换的软件 有英语 繁体中文 等等 设想如果使用图片字的话那每个语言都须要出一套图,我用一个例子简单介绍一下绘制字符串。iAsHTML5中文学习网 - HTML5先行者学习网
iAsHTML5中文学习网 - HTML5先行者学习网
iAsHTML5中文学习网 - HTML5先行者学习网
- package cn.m15.xys;iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- import android.app.Activity;iAsHTML5中文学习网 - HTML5先行者学习网
- import android.content.Context;iAsHTML5中文学习网 - HTML5先行者学习网
- import android.graphics.Canvas;iAsHTML5中文学习网 - HTML5先行者学习网
- import android.graphics.Color;iAsHTML5中文学习网 - HTML5先行者学习网
- import android.graphics.Paint;iAsHTML5中文学习网 - HTML5先行者学习网
- import android.graphics.Paint.FontMetrics;iAsHTML5中文学习网 - HTML5先行者学习网
- import android.os.Bundle;iAsHTML5中文学习网 - HTML5先行者学习网
- import android.view.Display;iAsHTML5中文学习网 - HTML5先行者学习网
- import android.view.View;iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- public class Font extends Activity {iAsHTML5中文学习网 - HTML5先行者学习网
- public int mScreenWidth = 0;iAsHTML5中文学习网 - HTML5先行者学习网
- public int mScreenHeight = 0;iAsHTML5中文学习网 - HTML5先行者学习网
- @OverrideiAsHTML5中文学习网 - HTML5先行者学习网
- protected void onCreate(Bundle savedInstanceState) {iAsHTML5中文学习网 - HTML5先行者学习网
- setContentView(new FontView(this));iAsHTML5中文学习网 - HTML5先行者学习网
- // 获取屏幕宽高iAsHTML5中文学习网 - HTML5先行者学习网
- Display display = getWindowManager().getDefaultDisplay();iAsHTML5中文学习网 - HTML5先行者学习网
- mScreenWidth = display.getWidth();iAsHTML5中文学习网 - HTML5先行者学习网
- mScreenHeight = display.getHeight();iAsHTML5中文学习网 - HTML5先行者学习网
- super.onCreate(savedInstanceState);iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- }iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- class FontView extends View {iAsHTML5中文学习网 - HTML5先行者学习网
- public final static String STR_WIDTH = "获取字符串宽为:"; iAsHTML5中文学习网 - HTML5先行者学习网
- public final static String STR_HEIGHT = "获取字体高度为:"; iAsHTML5中文学习网 - HTML5先行者学习网
- Paint mPaint = null;iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- public FontView(Context context) {iAsHTML5中文学习网 - HTML5先行者学习网
- super(context);iAsHTML5中文学习网 - HTML5先行者学习网
- mPaint = new Paint();iAsHTML5中文学习网 - HTML5先行者学习网
- }iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- @OverrideiAsHTML5中文学习网 - HTML5先行者学习网
- protected void onDraw(Canvas canvas) {iAsHTML5中文学习网 - HTML5先行者学习网
- //设置字符串颜色iAsHTML5中文学习网 - HTML5先行者学习网
- mPaint.setColor(Color.WHITE);iAsHTML5中文学习网 - HTML5先行者学习网
- canvas.drawText("当前屏幕宽" + mScreenWidth, 0, 30, mPaint);iAsHTML5中文学习网 - HTML5先行者学习网
- canvas.drawText("当前屏幕高"+ mScreenHeight, 0, 60, mPaint);iAsHTML5中文学习网 - HTML5先行者学习网
- //设置字体大小iAsHTML5中文学习网 - HTML5先行者学习网
- mPaint.setColor(Color.RED);iAsHTML5中文学习网 - HTML5先行者学习网
- mPaint.setTextSize(18);iAsHTML5中文学习网 - HTML5先行者学习网
- canvas.drawText("字体大小为18", 0, 90, mPaint);iAsHTML5中文学习网 - HTML5先行者学习网
- //消除字体锯齿iAsHTML5中文学习网 - HTML5先行者学习网
- mPaint.setFlags(Paint.ANTI_ALIAS_FLAG);iAsHTML5中文学习网 - HTML5先行者学习网
- canvas.drawText("消除字体锯齿后", 0, 120, mPaint);iAsHTML5中文学习网 - HTML5先行者学习网
- //获取字符串宽度iAsHTML5中文学习网 - HTML5先行者学习网
- canvas.drawText(STR_WIDTH + getStringWidth(STR_WIDTH), 0, 150, mPaint);iAsHTML5中文学习网 - HTML5先行者学习网
- //获取字体高度iAsHTML5中文学习网 - HTML5先行者学习网
- canvas.drawText(STR_HEIGHT + getFontHeight(), 0, 180, mPaint);iAsHTML5中文学习网 - HTML5先行者学习网
- //从string.xml读取字符串绘制iAsHTML5中文学习网 - HTML5先行者学习网
- mPaint.setColor(Color.YELLOW);iAsHTML5中文学习网 - HTML5先行者学习网
- canvas.drawText(getResources().getString(R.string.string_font), 0, 210, mPaint);iAsHTML5中文学习网 - HTML5先行者学习网
- super.onDraw(canvas);iAsHTML5中文学习网 - HTML5先行者学习网
- }iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- /**iAsHTML5中文学习网 - HTML5先行者学习网
- * 获取字符串宽iAsHTML5中文学习网 - HTML5先行者学习网
- * @param striAsHTML5中文学习网 - HTML5先行者学习网
- * @returniAsHTML5中文学习网 - HTML5先行者学习网
- */iAsHTML5中文学习网 - HTML5先行者学习网
- private int getStringWidth(String str) {iAsHTML5中文学习网 - HTML5先行者学习网
- return (int) mPaint.measureText(STR_WIDTH); iAsHTML5中文学习网 - HTML5先行者学习网
- }iAsHTML5中文学习网 - HTML5先行者学习网
- /*iAsHTML5中文学习网 - HTML5先行者学习网
- * 获取字体高度iAsHTML5中文学习网 - HTML5先行者学习网
- */iAsHTML5中文学习网 - HTML5先行者学习网
- private int getFontHeight() {iAsHTML5中文学习网 - HTML5先行者学习网
- FontMetrics fm = mPaint.getFontMetrics();iAsHTML5中文学习网 - HTML5先行者学习网
- return (int)Math.ceil(fm.descent - fm.top) + 2;iAsHTML5中文学习网 - HTML5先行者学习网
- }iAsHTML5中文学习网 - HTML5先行者学习网
- }iAsHTML5中文学习网 - HTML5先行者学习网
- }
复制代码
2.绘制无规则几何图形iAsHTML5中文学习网 - HTML5先行者学习网
iAsHTML5中文学习网 - HTML5先行者学习网
绘制无规则几何图形似乎在实际工作中很少可以用到 原因是用程序去绘制图形即使在精准再好看也不会有美术出的图片好看 但是使用程序绘制图形作为学习来说却是基础中的基础,所以建议大家都看一看。iAsHTML5中文学习网 - HTML5先行者学习网
iAsHTML5中文学习网 - HTML5先行者学习网
iAsHTML5中文学习网 - HTML5先行者学习网
- package cn.m15.xys;iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- import android.app.Activity;iAsHTML5中文学习网 - HTML5先行者学习网
- import android.content.Context;iAsHTML5中文学习网 - HTML5先行者学习网
- import android.graphics.Canvas;iAsHTML5中文学习网 - HTML5先行者学习网
- import android.graphics.Color;iAsHTML5中文学习网 - HTML5先行者学习网
- import android.graphics.Paint;iAsHTML5中文学习网 - HTML5先行者学习网
- import android.graphics.Path;iAsHTML5中文学习网 - HTML5先行者学习网
- import android.graphics.RectF;iAsHTML5中文学习网 - HTML5先行者学习网
- import android.os.Bundle;iAsHTML5中文学习网 - HTML5先行者学习网
- import android.view.View;iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- public class Geometry extends Activity {iAsHTML5中文学习网 - HTML5先行者学习网
- public int mScreenWidth = 0;iAsHTML5中文学习网 - HTML5先行者学习网
- public int mScreenHeight = 0;iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- @OverrideiAsHTML5中文学习网 - HTML5先行者学习网
- protected void onCreate(Bundle savedInstanceState) {iAsHTML5中文学习网 - HTML5先行者学习网
- setContentView(new GeometryView(this));iAsHTML5中文学习网 - HTML5先行者学习网
- super.onCreate(savedInstanceState);iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- }iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- class GeometryView extends View {iAsHTML5中文学习网 - HTML5先行者学习网
- Paint mPaint = null;iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- public GeometryView(Context context) {iAsHTML5中文学习网 - HTML5先行者学习网
- super(context);iAsHTML5中文学习网 - HTML5先行者学习网
- mPaint = new Paint();iAsHTML5中文学习网 - HTML5先行者学习网
- mPaint.setFlags(Paint.ANTI_ALIAS_FLAG);iAsHTML5中文学习网 - HTML5先行者学习网
- }iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- @OverrideiAsHTML5中文学习网 - HTML5先行者学习网
- protected void onDraw(Canvas canvas) {iAsHTML5中文学习网 - HTML5先行者学习网
- super.onDraw(canvas);iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- //设置画布颜色 也就是背景颜色iAsHTML5中文学习网 - HTML5先行者学习网
- canvas.drawColor(Color.WHITE);iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- mPaint.setColor(Color.BLACK);iAsHTML5中文学习网 - HTML5先行者学习网
- canvas.drawText("绘制无规则几何图形喔!!!", 150, 30, mPaint);iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- //绘制一条线iAsHTML5中文学习网 - HTML5先行者学习网
- mPaint.setColor(Color.BLACK);iAsHTML5中文学习网 - HTML5先行者学习网
- mPaint.setStrokeWidth(4);iAsHTML5中文学习网 - HTML5先行者学习网
- canvas.drawLine(0, 0, 100, 100, mPaint);iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- //绘制一个矩形iAsHTML5中文学习网 - HTML5先行者学习网
- mPaint.setColor(Color.YELLOW);iAsHTML5中文学习网 - HTML5先行者学习网
- canvas.drawRect(0, 120, 100, 200, mPaint);iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- //绘制一个圆形iAsHTML5中文学习网 - HTML5先行者学习网
- mPaint.setColor(Color.BLUE);iAsHTML5中文学习网 - HTML5先行者学习网
- canvas.drawCircle(80, 300, 50, mPaint);iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- //绘制一个椭圆iAsHTML5中文学习网 - HTML5先行者学习网
- mPaint.setColor(Color.CYAN);iAsHTML5中文学习网 - HTML5先行者学习网
- canvas.drawOval(new RectF(300,370,120,100), mPaint);iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- //绘制多边形iAsHTML5中文学习网 - HTML5先行者学习网
- mPaint.setColor(Color.BLACK);iAsHTML5中文学习网 - HTML5先行者学习网
- Path path = new Path();iAsHTML5中文学习网 - HTML5先行者学习网
- path.moveTo(150+5 , 400 -50);iAsHTML5中文学习网 - HTML5先行者学习网
- path.lineTo(150+45, 400 - 50);iAsHTML5中文学习网 - HTML5先行者学习网
- path.lineTo(150+30, 460 - 50);iAsHTML5中文学习网 - HTML5先行者学习网
- path.lineTo(150+20, 460 - 50);iAsHTML5中文学习网 - HTML5先行者学习网
- path.close();iAsHTML5中文学习网 - HTML5先行者学习网
- canvas.drawPath(path, mPaint);iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- }iAsHTML5中文学习网 - HTML5先行者学习网
- }iAsHTML5中文学习网 - HTML5先行者学习网
- }
复制代码
3.图片的绘制以及旋转缩放的实现iAsHTML5中文学习网 - HTML5先行者学习网
iAsHTML5中文学习网 - HTML5先行者学习网
iAsHTML5中文学习网 - HTML5先行者学习网
在这点上Android 确实比J2ME 强大很多 手机游戏开发最痛苦的是什么?? 是游戏引擎的开发,但是工程师会把大部分时间浪费在对坐标上,如果写引擎的时候没有把自适应考虑周全后期会非常痛苦,现在手机屏幕分辨率是各式各样 内存大小也是各式各样 所以可见自适应屏幕算法有多么的重要。iAsHTML5中文学习网 - HTML5先行者学习网
iAsHTML5中文学习网 - HTML5先行者学习网
iAsHTML5中文学习网 - HTML5先行者学习网
iAsHTML5中文学习网 - HTML5先行者学习网
- package cn.m15.xys;iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- import android.app.Activity;iAsHTML5中文学习网 - HTML5先行者学习网
- import android.content.Context;iAsHTML5中文学习网 - HTML5先行者学习网
- import android.graphics.Bitmap;iAsHTML5中文学习网 - HTML5先行者学习网
- import android.graphics.BitmapFactory;iAsHTML5中文学习网 - HTML5先行者学习网
- import android.graphics.Canvas;iAsHTML5中文学习网 - HTML5先行者学习网
- import android.graphics.Matrix;iAsHTML5中文学习网 - HTML5先行者学习网
- import android.graphics.Paint;iAsHTML5中文学习网 - HTML5先行者学习网
- import android.os.Bundle;iAsHTML5中文学习网 - HTML5先行者学习网
- import android.view.View;iAsHTML5中文学习网 - HTML5先行者学习网
- import android.view.View.OnClickListener;iAsHTML5中文学习网 - HTML5先行者学习网
- import android.widget.Button;iAsHTML5中文学习网 - HTML5先行者学习网
- import android.widget.LinearLayout;iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- public class Image extends Activity {iAsHTML5中文学习网 - HTML5先行者学习网
- ImageView imageView = null;iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- @OverrideiAsHTML5中文学习网 - HTML5先行者学习网
- protected void onCreate(Bundle savedInstanceState) {iAsHTML5中文学习网 - HTML5先行者学习网
- imageView = new ImageView(this);iAsHTML5中文学习网 - HTML5先行者学习网
- setContentView(R.layout.image);iAsHTML5中文学习网 - HTML5先行者学习网
- LinearLayout ll = (LinearLayout) findViewById(R.id.iamgeid);iAsHTML5中文学习网 - HTML5先行者学习网
- ll.addView(imageView);iAsHTML5中文学习网 - HTML5先行者学习网
- // 向左移动iAsHTML5中文学习网 - HTML5先行者学习网
- Button botton0 = (Button) findViewById(R.id.buttonLeft);iAsHTML5中文学习网 - HTML5先行者学习网
- botton0.setOnClickListener(new OnClickListener() {iAsHTML5中文学习网 - HTML5先行者学习网
- @OverrideiAsHTML5中文学习网 - HTML5先行者学习网
- public void onClick(View arg0) {iAsHTML5中文学习网 - HTML5先行者学习网
- imageView.setPosLeft();iAsHTML5中文学习网 - HTML5先行者学习网
- }iAsHTML5中文学习网 - HTML5先行者学习网
- });iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- // 向右移动iAsHTML5中文学习网 - HTML5先行者学习网
- Button botton1 = (Button) findViewById(R.id.buttonRight);iAsHTML5中文学习网 - HTML5先行者学习网
- botton1.setOnClickListener(new OnClickListener() {iAsHTML5中文学习网 - HTML5先行者学习网
- @OverrideiAsHTML5中文学习网 - HTML5先行者学习网
- public void onClick(View arg0) {iAsHTML5中文学习网 - HTML5先行者学习网
- imageView.setPosRight();iAsHTML5中文学习网 - HTML5先行者学习网
- }iAsHTML5中文学习网 - HTML5先行者学习网
- });iAsHTML5中文学习网 - HTML5先行者学习网
- // 左旋转iAsHTML5中文学习网 - HTML5先行者学习网
- Button botton2 = (Button) findViewById(R.id.buttonRotationLeft);iAsHTML5中文学习网 - HTML5先行者学习网
- botton2.setOnClickListener(new OnClickListener() {iAsHTML5中文学习网 - HTML5先行者学习网
- @OverrideiAsHTML5中文学习网 - HTML5先行者学习网
- public void onClick(View arg0) {iAsHTML5中文学习网 - HTML5先行者学习网
- imageView.setRotationLeft();iAsHTML5中文学习网 - HTML5先行者学习网
- }iAsHTML5中文学习网 - HTML5先行者学习网
- });iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- // 右旋转iAsHTML5中文学习网 - HTML5先行者学习网
- Button botton3 = (Button) findViewById(R.id.buttonRotationRight);iAsHTML5中文学习网 - HTML5先行者学习网
- botton3.setOnClickListener(new OnClickListener() {iAsHTML5中文学习网 - HTML5先行者学习网
- @OverrideiAsHTML5中文学习网 - HTML5先行者学习网
- public void onClick(View arg0) {iAsHTML5中文学习网 - HTML5先行者学习网
- imageView.setRotationRight();iAsHTML5中文学习网 - HTML5先行者学习网
- }iAsHTML5中文学习网 - HTML5先行者学习网
- });iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- // 缩小iAsHTML5中文学习网 - HTML5先行者学习网
- Button botton4 = (Button) findViewById(R.id.buttonNarrow);iAsHTML5中文学习网 - HTML5先行者学习网
- botton4.setOnClickListener(new OnClickListener() {iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- @OverrideiAsHTML5中文学习网 - HTML5先行者学习网
- public void onClick(View arg0) {iAsHTML5中文学习网 - HTML5先行者学习网
- imageView.setNarrow();iAsHTML5中文学习网 - HTML5先行者学习网
- }iAsHTML5中文学习网 - HTML5先行者学习网
- });iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- // 放大iAsHTML5中文学习网 - HTML5先行者学习网
- Button botton5 = (Button) findViewById(R.id.buttonEnlarge);iAsHTML5中文学习网 - HTML5先行者学习网
- botton5.setOnClickListener(new OnClickListener() {iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- @OverrideiAsHTML5中文学习网 - HTML5先行者学习网
- public void onClick(View arg0) {iAsHTML5中文学习网 - HTML5先行者学习网
- imageView.setEnlarge();iAsHTML5中文学习网 - HTML5先行者学习网
- }iAsHTML5中文学习网 - HTML5先行者学习网
- });iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- super.onCreate(savedInstanceState);iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- }iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- class ImageView extends View {iAsHTML5中文学习网 - HTML5先行者学习网
- Paint mPaint = null;iAsHTML5中文学习网 - HTML5先行者学习网
- Bitmap bitMap = null;iAsHTML5中文学习网 - HTML5先行者学习网
- Bitmap bitMapDisplay = null;iAsHTML5中文学习网 - HTML5先行者学习网
- int m_posX = 120;iAsHTML5中文学习网 - HTML5先行者学习网
- int m_posY = 50;iAsHTML5中文学习网 - HTML5先行者学习网
- int m_bitMapWidth = 0;iAsHTML5中文学习网 - HTML5先行者学习网
- int m_bitMapHeight = 0;iAsHTML5中文学习网 - HTML5先行者学习网
- Matrix mMatrix = null;iAsHTML5中文学习网 - HTML5先行者学习网
- float mAngle = 0.0f;iAsHTML5中文学习网 - HTML5先行者学习网
- float mScale = 1f;//1为原图的大小iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- public ImageView(Context context) {iAsHTML5中文学习网 - HTML5先行者学习网
- super(context);iAsHTML5中文学习网 - HTML5先行者学习网
- mPaint = new Paint();iAsHTML5中文学习网 - HTML5先行者学习网
- mPaint.setFlags(Paint.ANTI_ALIAS_FLAG);iAsHTML5中文学习网 - HTML5先行者学习网
- bitMap = BitmapFactory.decodeResource(this.getResources(),iAsHTML5中文学习网 - HTML5先行者学习网
- R.drawable.image);iAsHTML5中文学习网 - HTML5先行者学习网
- bitMapDisplay = bitMap;iAsHTML5中文学习网 - HTML5先行者学习网
- mMatrix = new Matrix();iAsHTML5中文学习网 - HTML5先行者学习网
- // 获取图片宽高iAsHTML5中文学习网 - HTML5先行者学习网
- m_bitMapWidth = bitMap.getWidth();iAsHTML5中文学习网 - HTML5先行者学习网
- m_bitMapHeight = bitMap.getHeight();iAsHTML5中文学习网 - HTML5先行者学习网
- }iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- // 向左移动iAsHTML5中文学习网 - HTML5先行者学习网
- public void setPosLeft() {iAsHTML5中文学习网 - HTML5先行者学习网
- m_posX -= 10;iAsHTML5中文学习网 - HTML5先行者学习网
- }iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- // 向右移动iAsHTML5中文学习网 - HTML5先行者学习网
- public void setPosRight() {iAsHTML5中文学习网 - HTML5先行者学习网
- m_posX += 10;iAsHTML5中文学习网 - HTML5先行者学习网
- }iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- // 向左旋转iAsHTML5中文学习网 - HTML5先行者学习网
- public void setRotationLeft() {iAsHTML5中文学习网 - HTML5先行者学习网
- mAngle--;iAsHTML5中文学习网 - HTML5先行者学习网
- setAngle();iAsHTML5中文学习网 - HTML5先行者学习网
- }iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- // 向右旋转iAsHTML5中文学习网 - HTML5先行者学习网
- public void setRotationRight() {iAsHTML5中文学习网 - HTML5先行者学习网
- mAngle++;iAsHTML5中文学习网 - HTML5先行者学习网
- setAngle();iAsHTML5中文学习网 - HTML5先行者学习网
- }iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- // 缩小图片iAsHTML5中文学习网 - HTML5先行者学习网
- public void setNarrow() {iAsHTML5中文学习网 - HTML5先行者学习网
- if (mScale > 0.5) {iAsHTML5中文学习网 - HTML5先行者学习网
- mScale -= 0.1;iAsHTML5中文学习网 - HTML5先行者学习网
- setScale();iAsHTML5中文学习网 - HTML5先行者学习网
- }iAsHTML5中文学习网 - HTML5先行者学习网
- }iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- // 放大图片iAsHTML5中文学习网 - HTML5先行者学习网
- public void setEnlarge() {iAsHTML5中文学习网 - HTML5先行者学习网
- if (mScale < 2) {iAsHTML5中文学习网 - HTML5先行者学习网
- mScale += 0.1;iAsHTML5中文学习网 - HTML5先行者学习网
- setScale();iAsHTML5中文学习网 - HTML5先行者学习网
- }iAsHTML5中文学习网 - HTML5先行者学习网
- }iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- // 设置缩放比例iAsHTML5中文学习网 - HTML5先行者学习网
- public void setAngle() {iAsHTML5中文学习网 - HTML5先行者学习网
- mMatrix.reset();iAsHTML5中文学习网 - HTML5先行者学习网
- mMatrix.setRotate(mAngle);iAsHTML5中文学习网 - HTML5先行者学习网
- bitMapDisplay = Bitmap.createBitmap(bitMap, 0, 0, m_bitMapWidth,iAsHTML5中文学习网 - HTML5先行者学习网
- m_bitMapHeight, mMatrix, true);iAsHTML5中文学习网 - HTML5先行者学习网
- }iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- // 设置旋转比例iAsHTML5中文学习网 - HTML5先行者学习网
- public void setScale() {iAsHTML5中文学习网 - HTML5先行者学习网
- mMatrix.reset();iAsHTML5中文学习网 - HTML5先行者学习网
- //float sx X轴缩放 iAsHTML5中文学习网 - HTML5先行者学习网
- //float sy Y轴缩放iAsHTML5中文学习网 - HTML5先行者学习网
- mMatrix.postScale(mScale, mScale);iAsHTML5中文学习网 - HTML5先行者学习网
- bitMapDisplay = Bitmap.createBitmap(bitMap, 0, 0, m_bitMapWidth,iAsHTML5中文学习网 - HTML5先行者学习网
- m_bitMapHeight, mMatrix, true);iAsHTML5中文学习网 - HTML5先行者学习网
- }iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- @OverrideiAsHTML5中文学习网 - HTML5先行者学习网
- protected void onDraw(Canvas canvas) {iAsHTML5中文学习网 - HTML5先行者学习网
- super.onDraw(canvas);iAsHTML5中文学习网 - HTML5先行者学习网
- canvas.drawBitmap(bitMapDisplay, m_posX, m_posY, mPaint);iAsHTML5中文学习网 - HTML5先行者学习网
- invalidate();iAsHTML5中文学习网 - HTML5先行者学习网
- }iAsHTML5中文学习网 - HTML5先行者学习网
- }iAsHTML5中文学习网 - HTML5先行者学习网
- }
复制代码
- <?xml version="1.0" encoding="utf-8"?>iAsHTML5中文学习网 - HTML5先行者学习网
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"iAsHTML5中文学习网 - HTML5先行者学习网
- android:id="@+id/iamgeid"iAsHTML5中文学习网 - HTML5先行者学习网
- android:orientation="vertical"iAsHTML5中文学习网 - HTML5先行者学习网
- android:layout_width="fill_parent"iAsHTML5中文学习网 - HTML5先行者学习网
- android:layout_height="fill_parent"iAsHTML5中文学习网 - HTML5先行者学习网
- >iAsHTML5中文学习网 - HTML5先行者学习网
- <Button android:id="@+id/buttonLeft"iAsHTML5中文学习网 - HTML5先行者学习网
- android:layout_width="fill_parent" android:layout_height="wrap_content"iAsHTML5中文学习网 - HTML5先行者学习网
- android:text="图片向左移动"iAsHTML5中文学习网 - HTML5先行者学习网
- />iAsHTML5中文学习网 - HTML5先行者学习网
- <Button android:id="@+id/buttonRight"iAsHTML5中文学习网 - HTML5先行者学习网
- android:layout_width="fill_parent" android:layout_height="wrap_content"iAsHTML5中文学习网 - HTML5先行者学习网
- android:text="图片向右移动"iAsHTML5中文学习网 - HTML5先行者学习网
- />iAsHTML5中文学习网 - HTML5先行者学习网
- <Button android:id="@+id/buttonRotationLeft"iAsHTML5中文学习网 - HTML5先行者学习网
- android:layout_width="fill_parent" android:layout_height="wrap_content"iAsHTML5中文学习网 - HTML5先行者学习网
- android:text="图片左旋转"iAsHTML5中文学习网 - HTML5先行者学习网
- />iAsHTML5中文学习网 - HTML5先行者学习网
- <Button android:id="@+id/buttonRotationRight"iAsHTML5中文学习网 - HTML5先行者学习网
- android:layout_width="fill_parent" android:layout_height="wrap_content"iAsHTML5中文学习网 - HTML5先行者学习网
- android:text="图片右旋转"iAsHTML5中文学习网 - HTML5先行者学习网
- />iAsHTML5中文学习网 - HTML5先行者学习网
- <Button android:id="@+id/buttonNarrow"iAsHTML5中文学习网 - HTML5先行者学习网
- android:layout_width="fill_parent" android:layout_height="wrap_content"iAsHTML5中文学习网 - HTML5先行者学习网
- android:text="图片缩小"iAsHTML5中文学习网 - HTML5先行者学习网
- />iAsHTML5中文学习网 - HTML5先行者学习网
- <Button android:id="@+id/buttonEnlarge"iAsHTML5中文学习网 - HTML5先行者学习网
- android:layout_width="fill_parent" android:layout_height="wrap_content"iAsHTML5中文学习网 - HTML5先行者学习网
- android:text="图片放大"iAsHTML5中文学习网 - HTML5先行者学习网
- />iAsHTML5中文学习网 - HTML5先行者学习网
- </LinearLayout>
复制代码
4.播放frame动画iAsHTML5中文学习网 - HTML5先行者学习网
iAsHTML5中文学习网 - HTML5先行者学习网
iAsHTML5中文学习网 - HTML5先行者学习网
做游戏的话播放动画可就是必不可少的元素 帧动画帧动画 顾名思义是一帧一帧的播放 。 实际在开发中为了节省内存美术会把人物的图片切成一小块一小块然后由程序根据编辑器生成的点把图片在拼接起来这样就可以做到用更少的图片去实现更多的动画效果因为不太方便介绍图片编辑器 这个demo我只给大家简单的介绍一下播放动画的原理 后期我会深入讲解。iAsHTML5中文学习网 - HTML5先行者学习网
如图所示这个小人一直在行走 实际上是4张图片在来回切换 每张图片延迟500毫秒 后播下一张 以此类推。iAsHTML5中文学习网 - HTML5先行者学习网
iAsHTML5中文学习网 - HTML5先行者学习网
iAsHTML5中文学习网 - HTML5先行者学习网
- package cn.m15.xys;iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- import android.app.Activity;iAsHTML5中文学习网 - HTML5先行者学习网
- import android.content.Context;iAsHTML5中文学习网 - HTML5先行者学习网
- import android.graphics.Bitmap;iAsHTML5中文学习网 - HTML5先行者学习网
- import android.graphics.BitmapFactory;iAsHTML5中文学习网 - HTML5先行者学习网
- import android.graphics.Canvas;iAsHTML5中文学习网 - HTML5先行者学习网
- import android.graphics.Color;iAsHTML5中文学习网 - HTML5先行者学习网
- import android.graphics.Paint;iAsHTML5中文学习网 - HTML5先行者学习网
- import android.os.Bundle;iAsHTML5中文学习网 - HTML5先行者学习网
- import android.view.View;iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- public class FramAnimation extends Activity {iAsHTML5中文学习网 - HTML5先行者学习网
- public final static int ANIM_COUNT = 4;iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- @OverrideiAsHTML5中文学习网 - HTML5先行者学习网
- protected void onCreate(Bundle savedInstanceState) {iAsHTML5中文学习网 - HTML5先行者学习网
- setContentView(new FramView(this));iAsHTML5中文学习网 - HTML5先行者学习网
- super.onCreate(savedInstanceState);iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- }iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- class FramView extends View {iAsHTML5中文学习网 - HTML5先行者学习网
- Bitmap[] bitmap = new Bitmap[ANIM_COUNT];iAsHTML5中文学习网 - HTML5先行者学习网
- Bitmap display = null;iAsHTML5中文学习网 - HTML5先行者学习网
- Paint paint = null;iAsHTML5中文学习网 - HTML5先行者学习网
- long startTime = 0;iAsHTML5中文学习网 - HTML5先行者学习网
- int playID = 0;iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- public FramView(Context context) {iAsHTML5中文学习网 - HTML5先行者学习网
- super(context);iAsHTML5中文学习网 - HTML5先行者学习网
- for (int i = 0; i < ANIM_COUNT; i++) {iAsHTML5中文学习网 - HTML5先行者学习网
- bitmap[i] = BitmapFactory.decodeResource(this.getResources(),iAsHTML5中文学习网 - HTML5先行者学习网
- R.drawable.hero_a + i);iAsHTML5中文学习网 - HTML5先行者学习网
- }iAsHTML5中文学习网 - HTML5先行者学习网
- display = bitmap[0];iAsHTML5中文学习网 - HTML5先行者学习网
- paint = new Paint();iAsHTML5中文学习网 - HTML5先行者学习网
- startTime = System.currentTimeMillis();iAsHTML5中文学习网 - HTML5先行者学习网
- }iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- @OverrideiAsHTML5中文学习网 - HTML5先行者学习网
- protected void onDraw(Canvas canvas) {iAsHTML5中文学习网 - HTML5先行者学习网
- super.onDraw(canvas);iAsHTML5中文学习网 - HTML5先行者学习网
- paint.setColor(Color.WHITE);iAsHTML5中文学习网 - HTML5先行者学习网
- canvas.drawText("播放动画中...", 100, 30, paint);iAsHTML5中文学习网 - HTML5先行者学习网
- long nowTime = System.currentTimeMillis();iAsHTML5中文学习网 - HTML5先行者学习网
- if (nowTime - startTime >= 500) {iAsHTML5中文学习网 - HTML5先行者学习网
- startTime=nowTime;iAsHTML5中文学习网 - HTML5先行者学习网
- playID++;iAsHTML5中文学习网 - HTML5先行者学习网
- if (playID >= ANIM_COUNT) {iAsHTML5中文学习网 - HTML5先行者学习网
- playID = 0;iAsHTML5中文学习网 - HTML5先行者学习网
- }iAsHTML5中文学习网 - HTML5先行者学习网
- canvas.drawBitmap(bitmap[playID], 100, 100, paint);iAsHTML5中文学习网 - HTML5先行者学习网
- }iAsHTML5中文学习网 - HTML5先行者学习网
- invalidate();iAsHTML5中文学习网 - HTML5先行者学习网
- }iAsHTML5中文学习网 - HTML5先行者学习网
- }iAsHTML5中文学习网 - HTML5先行者学习网
- iAsHTML5中文学习网 - HTML5先行者学习网
- }