html5中文学习网

您的位置: 首页 > android » 正文

Android软件开发之盘点自定义View界面大合集(二)

[ ] 已经帮助:人解决问题

自定义View界面大合集iAsHTML5中文学习网 - HTML5先行者学习网
今天我用自己写的一个Demo 和大家详细介绍一个Android中自定义View中的使用与绘制技巧。iAsHTML5中文学习网 - HTML5先行者学习网
1.gifiAsHTML5中文学习网 - HTML5先行者学习网

iAsHTML5中文学习网 - HTML5先行者学习网
1.自定义view绘制字符串iAsHTML5中文学习网 - HTML5先行者学习网
       iAsHTML5中文学习网 - HTML5先行者学习网
       相信在实际开发过程中必然很多地方都须要用到系统字 为什么会用到系统字? 方便 省内存 我相信做过J2ME游戏开发的朋友应该深知内存有多么多么重要  而且使用它还可以带来一个更重要的好处就是很方便的可以实现多国语言的切换 笔者现在在正在做的一个产品就是可以多语言切换的软件  有英语 繁体中文 等等 设想如果使用图片字的话那每个语言都须要出一套图,我用一个例子简单介绍一下绘制字符串。iAsHTML5中文学习网 - HTML5先行者学习网
2.gifiAsHTML5中文学习网 - HTML5先行者学习网

 iAsHTML5中文学习网 - HTML5先行者学习网

  1. package cn.m15.xys;iAsHTML5中文学习网 - HTML5先行者学习网
     
  2. iAsHTML5中文学习网 - HTML5先行者学习网
     
  3. import android.app.Activity;iAsHTML5中文学习网 - HTML5先行者学习网
     
  4. import android.content.Context;iAsHTML5中文学习网 - HTML5先行者学习网
     
  5. import android.graphics.Canvas;iAsHTML5中文学习网 - HTML5先行者学习网
     
  6. import android.graphics.Color;iAsHTML5中文学习网 - HTML5先行者学习网
     
  7. import android.graphics.Paint;iAsHTML5中文学习网 - HTML5先行者学习网
     
  8. import android.graphics.Paint.FontMetrics;iAsHTML5中文学习网 - HTML5先行者学习网
     
  9. import android.os.Bundle;iAsHTML5中文学习网 - HTML5先行者学习网
     
  10. import android.view.Display;iAsHTML5中文学习网 - HTML5先行者学习网
     
  11. import android.view.View;iAsHTML5中文学习网 - HTML5先行者学习网
     
  12. iAsHTML5中文学习网 - HTML5先行者学习网
     
  13. public class Font extends Activity {iAsHTML5中文学习网 - HTML5先行者学习网
     
  14.     public int mScreenWidth = 0;iAsHTML5中文学习网 - HTML5先行者学习网
     
  15.     public int mScreenHeight = 0;iAsHTML5中文学习网 - HTML5先行者学习网
     
  16.     @OverrideiAsHTML5中文学习网 - HTML5先行者学习网
     
  17.     protected void onCreate(Bundle savedInstanceState) {iAsHTML5中文学习网 - HTML5先行者学习网
     
  18.         setContentView(new FontView(this));iAsHTML5中文学习网 - HTML5先行者学习网
     
  19.         // 获取屏幕宽高iAsHTML5中文学习网 - HTML5先行者学习网
     
  20.         Display display = getWindowManager().getDefaultDisplay();iAsHTML5中文学习网 - HTML5先行者学习网
     
  21.         mScreenWidth  = display.getWidth();iAsHTML5中文学习网 - HTML5先行者学习网
     
  22.         mScreenHeight = display.getHeight();iAsHTML5中文学习网 - HTML5先行者学习网
     
  23.         super.onCreate(savedInstanceState);iAsHTML5中文学习网 - HTML5先行者学习网
     
  24. iAsHTML5中文学习网 - HTML5先行者学习网
     
  25.     }iAsHTML5中文学习网 - HTML5先行者学习网
     
  26. iAsHTML5中文学习网 - HTML5先行者学习网
     
  27.     class FontView extends View {iAsHTML5中文学习网 - HTML5先行者学习网
     
  28.         public final static String STR_WIDTH = "获取字符串宽为:"; iAsHTML5中文学习网 - HTML5先行者学习网
     
  29.         public final static String STR_HEIGHT = "获取字体高度为:"; iAsHTML5中文学习网 - HTML5先行者学习网
     
  30.         Paint mPaint = null;iAsHTML5中文学习网 - HTML5先行者学习网
     
  31.         iAsHTML5中文学习网 - HTML5先行者学习网
     
  32.         public FontView(Context context) {iAsHTML5中文学习网 - HTML5先行者学习网
     
  33.             super(context);iAsHTML5中文学习网 - HTML5先行者学习网
     
  34.             mPaint = new Paint();iAsHTML5中文学习网 - HTML5先行者学习网
     
  35.         }iAsHTML5中文学习网 - HTML5先行者学习网
     
  36. iAsHTML5中文学习网 - HTML5先行者学习网
     
  37.         @OverrideiAsHTML5中文学习网 - HTML5先行者学习网
     
  38.         protected void onDraw(Canvas canvas) {iAsHTML5中文学习网 - HTML5先行者学习网
     
  39.             //设置字符串颜色iAsHTML5中文学习网 - HTML5先行者学习网
     
  40.             mPaint.setColor(Color.WHITE);iAsHTML5中文学习网 - HTML5先行者学习网
     
  41.             canvas.drawText("当前屏幕宽" + mScreenWidth, 0, 30, mPaint);iAsHTML5中文学习网 - HTML5先行者学习网
     
  42.             canvas.drawText("当前屏幕高"+ mScreenHeight, 0, 60, mPaint);iAsHTML5中文学习网 - HTML5先行者学习网
     
  43.             //设置字体大小iAsHTML5中文学习网 - HTML5先行者学习网
     
  44.             mPaint.setColor(Color.RED);iAsHTML5中文学习网 - HTML5先行者学习网
     
  45.             mPaint.setTextSize(18);iAsHTML5中文学习网 - HTML5先行者学习网
     
  46.             canvas.drawText("字体大小为18", 0, 90, mPaint);iAsHTML5中文学习网 - HTML5先行者学习网
     
  47.             //消除字体锯齿iAsHTML5中文学习网 - HTML5先行者学习网
     
  48.             mPaint.setFlags(Paint.ANTI_ALIAS_FLAG);iAsHTML5中文学习网 - HTML5先行者学习网
     
  49.             canvas.drawText("消除字体锯齿后", 0, 120, mPaint);iAsHTML5中文学习网 - HTML5先行者学习网
     
  50.             //获取字符串宽度iAsHTML5中文学习网 - HTML5先行者学习网
     
  51.             canvas.drawText(STR_WIDTH + getStringWidth(STR_WIDTH), 0, 150, mPaint);iAsHTML5中文学习网 - HTML5先行者学习网
     
  52.             //获取字体高度iAsHTML5中文学习网 - HTML5先行者学习网
     
  53.             canvas.drawText(STR_HEIGHT + getFontHeight(), 0, 180, mPaint);iAsHTML5中文学习网 - HTML5先行者学习网
     
  54.             //从string.xml读取字符串绘制iAsHTML5中文学习网 - HTML5先行者学习网
     
  55.             mPaint.setColor(Color.YELLOW);iAsHTML5中文学习网 - HTML5先行者学习网
     
  56.             canvas.drawText(getResources().getString(R.string.string_font), 0, 210, mPaint);iAsHTML5中文学习网 - HTML5先行者学习网
     
  57.             super.onDraw(canvas);iAsHTML5中文学习网 - HTML5先行者学习网
     
  58.         }iAsHTML5中文学习网 - HTML5先行者学习网
     
  59.         iAsHTML5中文学习网 - HTML5先行者学习网
     
  60.         /**iAsHTML5中文学习网 - HTML5先行者学习网
     
  61.          * 获取字符串宽iAsHTML5中文学习网 - HTML5先行者学习网
     
  62.          * @param striAsHTML5中文学习网 - HTML5先行者学习网
     
  63.          * @returniAsHTML5中文学习网 - HTML5先行者学习网
     
  64.          */iAsHTML5中文学习网 - HTML5先行者学习网
     
  65.         private int getStringWidth(String str) {iAsHTML5中文学习网 - HTML5先行者学习网
     
  66.             return (int) mPaint.measureText(STR_WIDTH); iAsHTML5中文学习网 - HTML5先行者学习网
     
  67.         }iAsHTML5中文学习网 - HTML5先行者学习网
     
  68.         /*iAsHTML5中文学习网 - HTML5先行者学习网
     
  69.          * 获取字体高度iAsHTML5中文学习网 - HTML5先行者学习网
     
  70.          */iAsHTML5中文学习网 - HTML5先行者学习网
     
  71.         private int getFontHeight() {iAsHTML5中文学习网 - HTML5先行者学习网
     
  72.             FontMetrics fm = mPaint.getFontMetrics();iAsHTML5中文学习网 - HTML5先行者学习网
     
  73.             return (int)Math.ceil(fm.descent - fm.top) + 2;iAsHTML5中文学习网 - HTML5先行者学习网
     
  74.         }iAsHTML5中文学习网 - HTML5先行者学习网
     
  75.     }iAsHTML5中文学习网 - HTML5先行者学习网
     
  76. }
复制代码

2.绘制无规则几何图形iAsHTML5中文学习网 - HTML5先行者学习网
iAsHTML5中文学习网 - HTML5先行者学习网
        绘制无规则几何图形似乎在实际工作中很少可以用到 原因是用程序去绘制图形即使在精准再好看也不会有美术出的图片好看 但是使用程序绘制图形作为学习来说却是基础中的基础,所以建议大家都看一看。iAsHTML5中文学习网 - HTML5先行者学习网
3.gifiAsHTML5中文学习网 - HTML5先行者学习网

 iAsHTML5中文学习网 - HTML5先行者学习网

  1. package cn.m15.xys;iAsHTML5中文学习网 - HTML5先行者学习网
     
  2. iAsHTML5中文学习网 - HTML5先行者学习网
     
  3. import android.app.Activity;iAsHTML5中文学习网 - HTML5先行者学习网
     
  4. import android.content.Context;iAsHTML5中文学习网 - HTML5先行者学习网
     
  5. import android.graphics.Canvas;iAsHTML5中文学习网 - HTML5先行者学习网
     
  6. import android.graphics.Color;iAsHTML5中文学习网 - HTML5先行者学习网
     
  7. import android.graphics.Paint;iAsHTML5中文学习网 - HTML5先行者学习网
     
  8. import android.graphics.Path;iAsHTML5中文学习网 - HTML5先行者学习网
     
  9. import android.graphics.RectF;iAsHTML5中文学习网 - HTML5先行者学习网
     
  10. import android.os.Bundle;iAsHTML5中文学习网 - HTML5先行者学习网
     
  11. import android.view.View;iAsHTML5中文学习网 - HTML5先行者学习网
     
  12. iAsHTML5中文学习网 - HTML5先行者学习网
     
  13. public class Geometry extends Activity {iAsHTML5中文学习网 - HTML5先行者学习网
     
  14.     public int mScreenWidth = 0;iAsHTML5中文学习网 - HTML5先行者学习网
     
  15.     public int mScreenHeight = 0;iAsHTML5中文学习网 - HTML5先行者学习网
     
  16. iAsHTML5中文学习网 - HTML5先行者学习网
     
  17.     @OverrideiAsHTML5中文学习网 - HTML5先行者学习网
     
  18.     protected void onCreate(Bundle savedInstanceState) {iAsHTML5中文学习网 - HTML5先行者学习网
     
  19.         setContentView(new GeometryView(this));iAsHTML5中文学习网 - HTML5先行者学习网
     
  20.         super.onCreate(savedInstanceState);iAsHTML5中文学习网 - HTML5先行者学习网
     
  21. iAsHTML5中文学习网 - HTML5先行者学习网
     
  22.     }iAsHTML5中文学习网 - HTML5先行者学习网
     
  23. iAsHTML5中文学习网 - HTML5先行者学习网
     
  24.     class GeometryView extends View {iAsHTML5中文学习网 - HTML5先行者学习网
     
  25.         Paint mPaint = null;iAsHTML5中文学习网 - HTML5先行者学习网
     
  26. iAsHTML5中文学习网 - HTML5先行者学习网
     
  27.         public GeometryView(Context context) {iAsHTML5中文学习网 - HTML5先行者学习网
     
  28.             super(context);iAsHTML5中文学习网 - HTML5先行者学习网
     
  29.             mPaint = new Paint();iAsHTML5中文学习网 - HTML5先行者学习网
     
  30.             mPaint.setFlags(Paint.ANTI_ALIAS_FLAG);iAsHTML5中文学习网 - HTML5先行者学习网
     
  31.         }iAsHTML5中文学习网 - HTML5先行者学习网
     
  32. iAsHTML5中文学习网 - HTML5先行者学习网
     
  33.         @OverrideiAsHTML5中文学习网 - HTML5先行者学习网
     
  34.         protected void onDraw(Canvas canvas) {iAsHTML5中文学习网 - HTML5先行者学习网
     
  35.             super.onDraw(canvas);iAsHTML5中文学习网 - HTML5先行者学习网
     
  36.         iAsHTML5中文学习网 - HTML5先行者学习网
     
  37.             //设置画布颜色 也就是背景颜色iAsHTML5中文学习网 - HTML5先行者学习网
     
  38.             canvas.drawColor(Color.WHITE);iAsHTML5中文学习网 - HTML5先行者学习网
     
  39.            iAsHTML5中文学习网 - HTML5先行者学习网
     
  40.             mPaint.setColor(Color.BLACK);iAsHTML5中文学习网 - HTML5先行者学习网
     
  41.             canvas.drawText("绘制无规则几何图形喔!!!", 150, 30, mPaint);iAsHTML5中文学习网 - HTML5先行者学习网
     
  42.             iAsHTML5中文学习网 - HTML5先行者学习网
     
  43.             //绘制一条线iAsHTML5中文学习网 - HTML5先行者学习网
     
  44.             mPaint.setColor(Color.BLACK);iAsHTML5中文学习网 - HTML5先行者学习网
     
  45.             mPaint.setStrokeWidth(4);iAsHTML5中文学习网 - HTML5先行者学习网
     
  46.             canvas.drawLine(0, 0, 100, 100, mPaint);iAsHTML5中文学习网 - HTML5先行者学习网
     
  47.             iAsHTML5中文学习网 - HTML5先行者学习网
     
  48.             //绘制一个矩形iAsHTML5中文学习网 - HTML5先行者学习网
     
  49.             mPaint.setColor(Color.YELLOW);iAsHTML5中文学习网 - HTML5先行者学习网
     
  50.             canvas.drawRect(0, 120, 100, 200, mPaint);iAsHTML5中文学习网 - HTML5先行者学习网
     
  51.             iAsHTML5中文学习网 - HTML5先行者学习网
     
  52.             //绘制一个圆形iAsHTML5中文学习网 - HTML5先行者学习网
     
  53.             mPaint.setColor(Color.BLUE);iAsHTML5中文学习网 - HTML5先行者学习网
     
  54.             canvas.drawCircle(80, 300, 50, mPaint);iAsHTML5中文学习网 - HTML5先行者学习网
     
  55.             iAsHTML5中文学习网 - HTML5先行者学习网
     
  56.             //绘制一个椭圆iAsHTML5中文学习网 - HTML5先行者学习网
     
  57.             mPaint.setColor(Color.CYAN);iAsHTML5中文学习网 - HTML5先行者学习网
     
  58.             canvas.drawOval(new RectF(300,370,120,100), mPaint);iAsHTML5中文学习网 - HTML5先行者学习网
     
  59.             iAsHTML5中文学习网 - HTML5先行者学习网
     
  60.             //绘制多边形iAsHTML5中文学习网 - HTML5先行者学习网
     
  61.             mPaint.setColor(Color.BLACK);iAsHTML5中文学习网 - HTML5先行者学习网
     
  62.             Path path = new Path();iAsHTML5中文学习网 - HTML5先行者学习网
     
  63.             path.moveTo(150+5 , 400 -50);iAsHTML5中文学习网 - HTML5先行者学习网
     
  64.             path.lineTo(150+45, 400 - 50);iAsHTML5中文学习网 - HTML5先行者学习网
     
  65.             path.lineTo(150+30, 460 - 50);iAsHTML5中文学习网 - HTML5先行者学习网
     
  66.             path.lineTo(150+20, 460 - 50);iAsHTML5中文学习网 - HTML5先行者学习网
     
  67.             path.close();iAsHTML5中文学习网 - HTML5先行者学习网
     
  68.             canvas.drawPath(path, mPaint);iAsHTML5中文学习网 - HTML5先行者学习网
     
  69.             iAsHTML5中文学习网 - HTML5先行者学习网
     
  70.         }iAsHTML5中文学习网 - HTML5先行者学习网
     
  71.     }iAsHTML5中文学习网 - HTML5先行者学习网
     
  72. }
复制代码

3.图片的绘制以及旋转缩放的实现iAsHTML5中文学习网 - HTML5先行者学习网
iAsHTML5中文学习网 - HTML5先行者学习网
iAsHTML5中文学习网 - HTML5先行者学习网
        在这点上Android 确实比J2ME 强大很多  手机游戏开发最痛苦的是什么?? 是游戏引擎的开发,但是工程师会把大部分时间浪费在对坐标上,如果写引擎的时候没有把自适应考虑周全后期会非常痛苦,现在手机屏幕分辨率是各式各样 内存大小也是各式各样 所以可见自适应屏幕算法有多么的重要。iAsHTML5中文学习网 - HTML5先行者学习网
iAsHTML5中文学习网 - HTML5先行者学习网
4.gifiAsHTML5中文学习网 - HTML5先行者学习网

 iAsHTML5中文学习网 - HTML5先行者学习网

  1. package cn.m15.xys;iAsHTML5中文学习网 - HTML5先行者学习网
     
  2. iAsHTML5中文学习网 - HTML5先行者学习网
     
  3. import android.app.Activity;iAsHTML5中文学习网 - HTML5先行者学习网
     
  4. import android.content.Context;iAsHTML5中文学习网 - HTML5先行者学习网
     
  5. import android.graphics.Bitmap;iAsHTML5中文学习网 - HTML5先行者学习网
     
  6. import android.graphics.BitmapFactory;iAsHTML5中文学习网 - HTML5先行者学习网
     
  7. import android.graphics.Canvas;iAsHTML5中文学习网 - HTML5先行者学习网
     
  8. import android.graphics.Matrix;iAsHTML5中文学习网 - HTML5先行者学习网
     
  9. import android.graphics.Paint;iAsHTML5中文学习网 - HTML5先行者学习网
     
  10. import android.os.Bundle;iAsHTML5中文学习网 - HTML5先行者学习网
     
  11. import android.view.View;iAsHTML5中文学习网 - HTML5先行者学习网
     
  12. import android.view.View.OnClickListener;iAsHTML5中文学习网 - HTML5先行者学习网
     
  13. import android.widget.Button;iAsHTML5中文学习网 - HTML5先行者学习网
     
  14. import android.widget.LinearLayout;iAsHTML5中文学习网 - HTML5先行者学习网
     
  15. iAsHTML5中文学习网 - HTML5先行者学习网
     
  16. public class Image extends Activity {iAsHTML5中文学习网 - HTML5先行者学习网
     
  17.     ImageView imageView = null;iAsHTML5中文学习网 - HTML5先行者学习网
     
  18. iAsHTML5中文学习网 - HTML5先行者学习网
     
  19.     @OverrideiAsHTML5中文学习网 - HTML5先行者学习网
     
  20.     protected void onCreate(Bundle savedInstanceState) {iAsHTML5中文学习网 - HTML5先行者学习网
     
  21.         imageView = new ImageView(this);iAsHTML5中文学习网 - HTML5先行者学习网
     
  22.         setContentView(R.layout.image);iAsHTML5中文学习网 - HTML5先行者学习网
     
  23.         LinearLayout ll = (LinearLayout) findViewById(R.id.iamgeid);iAsHTML5中文学习网 - HTML5先行者学习网
     
  24.         ll.addView(imageView);iAsHTML5中文学习网 - HTML5先行者学习网
     
  25.         // 向左移动iAsHTML5中文学习网 - HTML5先行者学习网
     
  26.         Button botton0 = (Button) findViewById(R.id.buttonLeft);iAsHTML5中文学习网 - HTML5先行者学习网
     
  27.         botton0.setOnClickListener(new OnClickListener() {iAsHTML5中文学习网 - HTML5先行者学习网
     
  28.             @OverrideiAsHTML5中文学习网 - HTML5先行者学习网
     
  29.             public void onClick(View arg0) {iAsHTML5中文学习网 - HTML5先行者学习网
     
  30.                 imageView.setPosLeft();iAsHTML5中文学习网 - HTML5先行者学习网
     
  31.             }iAsHTML5中文学习网 - HTML5先行者学习网
     
  32.         });iAsHTML5中文学习网 - HTML5先行者学习网
     
  33. iAsHTML5中文学习网 - HTML5先行者学习网
     
  34.         // 向右移动iAsHTML5中文学习网 - HTML5先行者学习网
     
  35.         Button botton1 = (Button) findViewById(R.id.buttonRight);iAsHTML5中文学习网 - HTML5先行者学习网
     
  36.         botton1.setOnClickListener(new OnClickListener() {iAsHTML5中文学习网 - HTML5先行者学习网
     
  37.             @OverrideiAsHTML5中文学习网 - HTML5先行者学习网
     
  38.             public void onClick(View arg0) {iAsHTML5中文学习网 - HTML5先行者学习网
     
  39.                 imageView.setPosRight();iAsHTML5中文学习网 - HTML5先行者学习网
     
  40.             }iAsHTML5中文学习网 - HTML5先行者学习网
     
  41.         });iAsHTML5中文学习网 - HTML5先行者学习网
     
  42.         // 左旋转iAsHTML5中文学习网 - HTML5先行者学习网
     
  43.         Button botton2 = (Button) findViewById(R.id.buttonRotationLeft);iAsHTML5中文学习网 - HTML5先行者学习网
     
  44.         botton2.setOnClickListener(new OnClickListener() {iAsHTML5中文学习网 - HTML5先行者学习网
     
  45.             @OverrideiAsHTML5中文学习网 - HTML5先行者学习网
     
  46.             public void onClick(View arg0) {iAsHTML5中文学习网 - HTML5先行者学习网
     
  47.                 imageView.setRotationLeft();iAsHTML5中文学习网 - HTML5先行者学习网
     
  48.             }iAsHTML5中文学习网 - HTML5先行者学习网
     
  49.         });iAsHTML5中文学习网 - HTML5先行者学习网
     
  50. iAsHTML5中文学习网 - HTML5先行者学习网
     
  51.         // 右旋转iAsHTML5中文学习网 - HTML5先行者学习网
     
  52.         Button botton3 = (Button) findViewById(R.id.buttonRotationRight);iAsHTML5中文学习网 - HTML5先行者学习网
     
  53.         botton3.setOnClickListener(new OnClickListener() {iAsHTML5中文学习网 - HTML5先行者学习网
     
  54.             @OverrideiAsHTML5中文学习网 - HTML5先行者学习网
     
  55.             public void onClick(View arg0) {iAsHTML5中文学习网 - HTML5先行者学习网
     
  56.                 imageView.setRotationRight();iAsHTML5中文学习网 - HTML5先行者学习网
     
  57.             }iAsHTML5中文学习网 - HTML5先行者学习网
     
  58.         });iAsHTML5中文学习网 - HTML5先行者学习网
     
  59. iAsHTML5中文学习网 - HTML5先行者学习网
     
  60.         // 缩小iAsHTML5中文学习网 - HTML5先行者学习网
     
  61.         Button botton4 = (Button) findViewById(R.id.buttonNarrow);iAsHTML5中文学习网 - HTML5先行者学习网
     
  62.         botton4.setOnClickListener(new OnClickListener() {iAsHTML5中文学习网 - HTML5先行者学习网
     
  63. iAsHTML5中文学习网 - HTML5先行者学习网
     
  64.             @OverrideiAsHTML5中文学习网 - HTML5先行者学习网
     
  65.             public void onClick(View arg0) {iAsHTML5中文学习网 - HTML5先行者学习网
     
  66.                 imageView.setNarrow();iAsHTML5中文学习网 - HTML5先行者学习网
     
  67.             }iAsHTML5中文学习网 - HTML5先行者学习网
     
  68.         });iAsHTML5中文学习网 - HTML5先行者学习网
     
  69. iAsHTML5中文学习网 - HTML5先行者学习网
     
  70.         // 放大iAsHTML5中文学习网 - HTML5先行者学习网
     
  71.         Button botton5 = (Button) findViewById(R.id.buttonEnlarge);iAsHTML5中文学习网 - HTML5先行者学习网
     
  72.         botton5.setOnClickListener(new OnClickListener() {iAsHTML5中文学习网 - HTML5先行者学习网
     
  73. iAsHTML5中文学习网 - HTML5先行者学习网
     
  74.             @OverrideiAsHTML5中文学习网 - HTML5先行者学习网
     
  75.             public void onClick(View arg0) {iAsHTML5中文学习网 - HTML5先行者学习网
     
  76.                 imageView.setEnlarge();iAsHTML5中文学习网 - HTML5先行者学习网
     
  77.             }iAsHTML5中文学习网 - HTML5先行者学习网
     
  78.         });iAsHTML5中文学习网 - HTML5先行者学习网
     
  79. iAsHTML5中文学习网 - HTML5先行者学习网
     
  80.         super.onCreate(savedInstanceState);iAsHTML5中文学习网 - HTML5先行者学习网
     
  81. iAsHTML5中文学习网 - HTML5先行者学习网
     
  82.     }iAsHTML5中文学习网 - HTML5先行者学习网
     
  83. iAsHTML5中文学习网 - HTML5先行者学习网
     
  84.     class ImageView extends View {iAsHTML5中文学习网 - HTML5先行者学习网
     
  85.         Paint mPaint = null;iAsHTML5中文学习网 - HTML5先行者学习网
     
  86.         Bitmap bitMap = null;iAsHTML5中文学习网 - HTML5先行者学习网
     
  87.         Bitmap bitMapDisplay = null;iAsHTML5中文学习网 - HTML5先行者学习网
     
  88.         int m_posX = 120;iAsHTML5中文学习网 - HTML5先行者学习网
     
  89.         int m_posY = 50;iAsHTML5中文学习网 - HTML5先行者学习网
     
  90.         int m_bitMapWidth = 0;iAsHTML5中文学习网 - HTML5先行者学习网
     
  91.         int m_bitMapHeight = 0;iAsHTML5中文学习网 - HTML5先行者学习网
     
  92.         Matrix mMatrix = null;iAsHTML5中文学习网 - HTML5先行者学习网
     
  93.         float mAngle = 0.0f;iAsHTML5中文学习网 - HTML5先行者学习网
     
  94.         float mScale = 1f;//1为原图的大小iAsHTML5中文学习网 - HTML5先行者学习网
     
  95. iAsHTML5中文学习网 - HTML5先行者学习网
     
  96.         public ImageView(Context context) {iAsHTML5中文学习网 - HTML5先行者学习网
     
  97.             super(context);iAsHTML5中文学习网 - HTML5先行者学习网
     
  98.             mPaint = new Paint();iAsHTML5中文学习网 - HTML5先行者学习网
     
  99.             mPaint.setFlags(Paint.ANTI_ALIAS_FLAG);iAsHTML5中文学习网 - HTML5先行者学习网
     
  100.             bitMap = BitmapFactory.decodeResource(this.getResources(),iAsHTML5中文学习网 - HTML5先行者学习网
     
  101.                     R.drawable.image);iAsHTML5中文学习网 - HTML5先行者学习网
     
  102.             bitMapDisplay = bitMap;iAsHTML5中文学习网 - HTML5先行者学习网
     
  103.             mMatrix = new Matrix();iAsHTML5中文学习网 - HTML5先行者学习网
     
  104.             // 获取图片宽高iAsHTML5中文学习网 - HTML5先行者学习网
     
  105.             m_bitMapWidth = bitMap.getWidth();iAsHTML5中文学习网 - HTML5先行者学习网
     
  106.             m_bitMapHeight = bitMap.getHeight();iAsHTML5中文学习网 - HTML5先行者学习网
     
  107.         }iAsHTML5中文学习网 - HTML5先行者学习网
     
  108. iAsHTML5中文学习网 - HTML5先行者学习网
     
  109.         // 向左移动iAsHTML5中文学习网 - HTML5先行者学习网
     
  110.         public void setPosLeft() {iAsHTML5中文学习网 - HTML5先行者学习网
     
  111.             m_posX -= 10;iAsHTML5中文学习网 - HTML5先行者学习网
     
  112.         }iAsHTML5中文学习网 - HTML5先行者学习网
     
  113. iAsHTML5中文学习网 - HTML5先行者学习网
     
  114.         // 向右移动iAsHTML5中文学习网 - HTML5先行者学习网
     
  115.         public void setPosRight() {iAsHTML5中文学习网 - HTML5先行者学习网
     
  116.             m_posX += 10;iAsHTML5中文学习网 - HTML5先行者学习网
     
  117.         }iAsHTML5中文学习网 - HTML5先行者学习网
     
  118. iAsHTML5中文学习网 - HTML5先行者学习网
     
  119.         // 向左旋转iAsHTML5中文学习网 - HTML5先行者学习网
     
  120.         public void setRotationLeft() {iAsHTML5中文学习网 - HTML5先行者学习网
     
  121.             mAngle--;iAsHTML5中文学习网 - HTML5先行者学习网
     
  122.             setAngle();iAsHTML5中文学习网 - HTML5先行者学习网
     
  123.         }iAsHTML5中文学习网 - HTML5先行者学习网
     
  124. iAsHTML5中文学习网 - HTML5先行者学习网
     
  125.         // 向右旋转iAsHTML5中文学习网 - HTML5先行者学习网
     
  126.         public void setRotationRight() {iAsHTML5中文学习网 - HTML5先行者学习网
     
  127.             mAngle++;iAsHTML5中文学习网 - HTML5先行者学习网
     
  128.             setAngle();iAsHTML5中文学习网 - HTML5先行者学习网
     
  129.         }iAsHTML5中文学习网 - HTML5先行者学习网
     
  130. iAsHTML5中文学习网 - HTML5先行者学习网
     
  131.         // 缩小图片iAsHTML5中文学习网 - HTML5先行者学习网
     
  132.         public void setNarrow() {iAsHTML5中文学习网 - HTML5先行者学习网
     
  133.             if (mScale > 0.5) {iAsHTML5中文学习网 - HTML5先行者学习网
     
  134.                 mScale -= 0.1;iAsHTML5中文学习网 - HTML5先行者学习网
     
  135.                 setScale();iAsHTML5中文学习网 - HTML5先行者学习网
     
  136.             }iAsHTML5中文学习网 - HTML5先行者学习网
     
  137.         }iAsHTML5中文学习网 - HTML5先行者学习网
     
  138. iAsHTML5中文学习网 - HTML5先行者学习网
     
  139.         // 放大图片iAsHTML5中文学习网 - HTML5先行者学习网
     
  140.         public void setEnlarge() {iAsHTML5中文学习网 - HTML5先行者学习网
     
  141.             if (mScale < 2) {iAsHTML5中文学习网 - HTML5先行者学习网
     
  142.                 mScale += 0.1;iAsHTML5中文学习网 - HTML5先行者学习网
     
  143.                 setScale();iAsHTML5中文学习网 - HTML5先行者学习网
     
  144.             }iAsHTML5中文学习网 - HTML5先行者学习网
     
  145.         }iAsHTML5中文学习网 - HTML5先行者学习网
     
  146. iAsHTML5中文学习网 - HTML5先行者学习网
     
  147.         // 设置缩放比例iAsHTML5中文学习网 - HTML5先行者学习网
     
  148.         public void setAngle() {iAsHTML5中文学习网 - HTML5先行者学习网
     
  149.             mMatrix.reset();iAsHTML5中文学习网 - HTML5先行者学习网
     
  150.             mMatrix.setRotate(mAngle);iAsHTML5中文学习网 - HTML5先行者学习网
     
  151.             bitMapDisplay = Bitmap.createBitmap(bitMap, 0, 0, m_bitMapWidth,iAsHTML5中文学习网 - HTML5先行者学习网
     
  152.                     m_bitMapHeight, mMatrix, true);iAsHTML5中文学习网 - HTML5先行者学习网
     
  153.         }iAsHTML5中文学习网 - HTML5先行者学习网
     
  154. iAsHTML5中文学习网 - HTML5先行者学习网
     
  155.         // 设置旋转比例iAsHTML5中文学习网 - HTML5先行者学习网
     
  156.         public void setScale() {iAsHTML5中文学习网 - HTML5先行者学习网
     
  157.             mMatrix.reset();iAsHTML5中文学习网 - HTML5先行者学习网
     
  158.             //float sx X轴缩放 iAsHTML5中文学习网 - HTML5先行者学习网
     
  159.             //float sy Y轴缩放iAsHTML5中文学习网 - HTML5先行者学习网
     
  160.             mMatrix.postScale(mScale, mScale);iAsHTML5中文学习网 - HTML5先行者学习网
     
  161.             bitMapDisplay = Bitmap.createBitmap(bitMap, 0, 0, m_bitMapWidth,iAsHTML5中文学习网 - HTML5先行者学习网
     
  162.                     m_bitMapHeight, mMatrix, true);iAsHTML5中文学习网 - HTML5先行者学习网
     
  163.         }iAsHTML5中文学习网 - HTML5先行者学习网
     
  164. iAsHTML5中文学习网 - HTML5先行者学习网
     
  165.         @OverrideiAsHTML5中文学习网 - HTML5先行者学习网
     
  166.         protected void onDraw(Canvas canvas) {iAsHTML5中文学习网 - HTML5先行者学习网
     
  167.             super.onDraw(canvas);iAsHTML5中文学习网 - HTML5先行者学习网
     
  168.             canvas.drawBitmap(bitMapDisplay, m_posX, m_posY, mPaint);iAsHTML5中文学习网 - HTML5先行者学习网
     
  169.             invalidate();iAsHTML5中文学习网 - HTML5先行者学习网
     
  170.         }iAsHTML5中文学习网 - HTML5先行者学习网
     
  171.     }iAsHTML5中文学习网 - HTML5先行者学习网
     
  172. }
复制代码
  1. <?xml version="1.0" encoding="utf-8"?>iAsHTML5中文学习网 - HTML5先行者学习网
     
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"iAsHTML5中文学习网 - HTML5先行者学习网
     
  3.         android:id="@+id/iamgeid"iAsHTML5中文学习网 - HTML5先行者学习网
     
  4.     android:orientation="vertical"iAsHTML5中文学习网 - HTML5先行者学习网
     
  5.     android:layout_width="fill_parent"iAsHTML5中文学习网 - HTML5先行者学习网
     
  6.     android:layout_height="fill_parent"iAsHTML5中文学习网 - HTML5先行者学习网
     
  7.     >iAsHTML5中文学习网 - HTML5先行者学习网
     
  8.         <Button android:id="@+id/buttonLeft"iAsHTML5中文学习网 - HTML5先行者学习网
     
  9.             android:layout_width="fill_parent" android:layout_height="wrap_content"iAsHTML5中文学习网 - HTML5先行者学习网
     
  10.             android:text="图片向左移动"iAsHTML5中文学习网 - HTML5先行者学习网
     
  11.             />iAsHTML5中文学习网 - HTML5先行者学习网
     
  12.         <Button android:id="@+id/buttonRight"iAsHTML5中文学习网 - HTML5先行者学习网
     
  13.             android:layout_width="fill_parent" android:layout_height="wrap_content"iAsHTML5中文学习网 - HTML5先行者学习网
     
  14.             android:text="图片向右移动"iAsHTML5中文学习网 - HTML5先行者学习网
     
  15.             />iAsHTML5中文学习网 - HTML5先行者学习网
     
  16.         <Button android:id="@+id/buttonRotationLeft"iAsHTML5中文学习网 - HTML5先行者学习网
     
  17.             android:layout_width="fill_parent" android:layout_height="wrap_content"iAsHTML5中文学习网 - HTML5先行者学习网
     
  18.             android:text="图片左旋转"iAsHTML5中文学习网 - HTML5先行者学习网
     
  19.             />iAsHTML5中文学习网 - HTML5先行者学习网
     
  20.         <Button android:id="@+id/buttonRotationRight"iAsHTML5中文学习网 - HTML5先行者学习网
     
  21.             android:layout_width="fill_parent" android:layout_height="wrap_content"iAsHTML5中文学习网 - HTML5先行者学习网
     
  22.             android:text="图片右旋转"iAsHTML5中文学习网 - HTML5先行者学习网
     
  23.             />iAsHTML5中文学习网 - HTML5先行者学习网
     
  24.         <Button android:id="@+id/buttonNarrow"iAsHTML5中文学习网 - HTML5先行者学习网
     
  25.             android:layout_width="fill_parent" android:layout_height="wrap_content"iAsHTML5中文学习网 - HTML5先行者学习网
     
  26.             android:text="图片缩小"iAsHTML5中文学习网 - HTML5先行者学习网
     
  27.             />iAsHTML5中文学习网 - HTML5先行者学习网
     
  28.         <Button android:id="@+id/buttonEnlarge"iAsHTML5中文学习网 - HTML5先行者学习网
     
  29.             android:layout_width="fill_parent" android:layout_height="wrap_content"iAsHTML5中文学习网 - HTML5先行者学习网
     
  30.             android:text="图片放大"iAsHTML5中文学习网 - HTML5先行者学习网
     
  31.             />iAsHTML5中文学习网 - HTML5先行者学习网
     
  32. </LinearLayout>
复制代码

4.播放frame动画iAsHTML5中文学习网 - HTML5先行者学习网
iAsHTML5中文学习网 - HTML5先行者学习网
iAsHTML5中文学习网 - HTML5先行者学习网
        做游戏的话播放动画可就是必不可少的元素 帧动画帧动画 顾名思义是一帧一帧的播放 。 实际在开发中为了节省内存美术会把人物的图片切成一小块一小块然后由程序根据编辑器生成的点把图片在拼接起来这样就可以做到用更少的图片去实现更多的动画效果因为不太方便介绍图片编辑器 这个demo我只给大家简单的介绍一下播放动画的原理 后期我会深入讲解。iAsHTML5中文学习网 - HTML5先行者学习网
              如图所示这个小人一直在行走 实际上是4张图片在来回切换 每张图片延迟500毫秒 后播下一张 以此类推。iAsHTML5中文学习网 - HTML5先行者学习网
5.gifiAsHTML5中文学习网 - HTML5先行者学习网

 iAsHTML5中文学习网 - HTML5先行者学习网

  1. package cn.m15.xys;iAsHTML5中文学习网 - HTML5先行者学习网
     
  2. iAsHTML5中文学习网 - HTML5先行者学习网
     
  3. import android.app.Activity;iAsHTML5中文学习网 - HTML5先行者学习网
     
  4. import android.content.Context;iAsHTML5中文学习网 - HTML5先行者学习网
     
  5. import android.graphics.Bitmap;iAsHTML5中文学习网 - HTML5先行者学习网
     
  6. import android.graphics.BitmapFactory;iAsHTML5中文学习网 - HTML5先行者学习网
     
  7. import android.graphics.Canvas;iAsHTML5中文学习网 - HTML5先行者学习网
     
  8. import android.graphics.Color;iAsHTML5中文学习网 - HTML5先行者学习网
     
  9. import android.graphics.Paint;iAsHTML5中文学习网 - HTML5先行者学习网
     
  10. import android.os.Bundle;iAsHTML5中文学习网 - HTML5先行者学习网
     
  11. import android.view.View;iAsHTML5中文学习网 - HTML5先行者学习网
     
  12. iAsHTML5中文学习网 - HTML5先行者学习网
     
  13. public class FramAnimation extends Activity {iAsHTML5中文学习网 - HTML5先行者学习网
     
  14.     public final static int ANIM_COUNT = 4;iAsHTML5中文学习网 - HTML5先行者学习网
     
  15. iAsHTML5中文学习网 - HTML5先行者学习网
     
  16.     @OverrideiAsHTML5中文学习网 - HTML5先行者学习网
     
  17.     protected void onCreate(Bundle savedInstanceState) {iAsHTML5中文学习网 - HTML5先行者学习网
     
  18.         setContentView(new FramView(this));iAsHTML5中文学习网 - HTML5先行者学习网
     
  19.         super.onCreate(savedInstanceState);iAsHTML5中文学习网 - HTML5先行者学习网
     
  20. iAsHTML5中文学习网 - HTML5先行者学习网
     
  21.     }iAsHTML5中文学习网 - HTML5先行者学习网
     
  22. iAsHTML5中文学习网 - HTML5先行者学习网
     
  23.     class FramView extends View {iAsHTML5中文学习网 - HTML5先行者学习网
     
  24.         Bitmap[] bitmap = new Bitmap[ANIM_COUNT];iAsHTML5中文学习网 - HTML5先行者学习网
     
  25.         Bitmap display = null;iAsHTML5中文学习网 - HTML5先行者学习网
     
  26.         Paint paint = null;iAsHTML5中文学习网 - HTML5先行者学习网
     
  27.         long startTime = 0;iAsHTML5中文学习网 - HTML5先行者学习网
     
  28.         int playID = 0;iAsHTML5中文学习网 - HTML5先行者学习网
     
  29. iAsHTML5中文学习网 - HTML5先行者学习网
     
  30.         public FramView(Context context) {iAsHTML5中文学习网 - HTML5先行者学习网
     
  31.             super(context);iAsHTML5中文学习网 - HTML5先行者学习网
     
  32.             for (int i = 0; i < ANIM_COUNT; i++) {iAsHTML5中文学习网 - HTML5先行者学习网
     
  33.                 bitmap[i] = BitmapFactory.decodeResource(this.getResources(),iAsHTML5中文学习网 - HTML5先行者学习网
     
  34.                         R.drawable.hero_a + i);iAsHTML5中文学习网 - HTML5先行者学习网
     
  35.             }iAsHTML5中文学习网 - HTML5先行者学习网
     
  36.             display = bitmap[0];iAsHTML5中文学习网 - HTML5先行者学习网
     
  37.             paint = new Paint();iAsHTML5中文学习网 - HTML5先行者学习网
     
  38.             startTime = System.currentTimeMillis();iAsHTML5中文学习网 - HTML5先行者学习网
     
  39.         }iAsHTML5中文学习网 - HTML5先行者学习网
     
  40. iAsHTML5中文学习网 - HTML5先行者学习网
     
  41.         @OverrideiAsHTML5中文学习网 - HTML5先行者学习网
     
  42.         protected void onDraw(Canvas canvas) {iAsHTML5中文学习网 - HTML5先行者学习网
     
  43.             super.onDraw(canvas);iAsHTML5中文学习网 - HTML5先行者学习网
     
  44.             paint.setColor(Color.WHITE);iAsHTML5中文学习网 - HTML5先行者学习网
     
  45.             canvas.drawText("播放动画中...", 100, 30, paint);iAsHTML5中文学习网 - HTML5先行者学习网
     
  46.             long nowTime = System.currentTimeMillis();iAsHTML5中文学习网 - HTML5先行者学习网
     
  47.             if (nowTime - startTime >= 500) {iAsHTML5中文学习网 - HTML5先行者学习网
     
  48.                 startTime=nowTime;iAsHTML5中文学习网 - HTML5先行者学习网
     
  49.                 playID++;iAsHTML5中文学习网 - HTML5先行者学习网
     
  50.                 if (playID >= ANIM_COUNT) {iAsHTML5中文学习网 - HTML5先行者学习网
     
  51.                     playID = 0;iAsHTML5中文学习网 - HTML5先行者学习网
     
  52.                 }iAsHTML5中文学习网 - HTML5先行者学习网
     
  53.                 canvas.drawBitmap(bitmap[playID], 100, 100, paint);iAsHTML5中文学习网 - HTML5先行者学习网
     
  54.             }iAsHTML5中文学习网 - HTML5先行者学习网
     
  55.             invalidate();iAsHTML5中文学习网 - HTML5先行者学习网
     
  56.         }iAsHTML5中文学习网 - HTML5先行者学习网
     
  57.     }iAsHTML5中文学习网 - HTML5先行者学习网
     
  58. iAsHTML5中文学习网 - HTML5先行者学习网
     
  59. }
(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助