Android 开发知识 图片跟随触摸位置移动


很简单,显示的图片跟随触摸位置的变化而变化,详见代码.

 

[java]
  1. package cn.talentsoft.surfaceview;  
  2. import java.io.InputStream;  
  3.   
  4. import Android.content.Context;  
  5. import android.content.res.Resources;  
  6. import android.graphics.Bitmap;  
  7. import android.graphics.Canvas;  
  8. import android.graphics.Color;  
  9. import android.graphics.drawable.BitmapDrawable;  
  10. import android.view.MotionEvent;  
  11. import android.view.SurfaceHolder;  
  12. import android.view.SurfaceView;  
  13.   
  14. /**  
  15.  * 演示SurfaceView类的使用,图片跟随触摸位置进行移动 
  16.  */  
  17. public class MySurfaceView extends SurfaceView{  
  18.     // 控制surface的接口,提供了控制surface的大小、格式、像素   
  19.     private SurfaceHolder surfaceHolder;  
  20.     // 定义画布引用   
  21.     private Canvas canvas;  
  22.     // x y 代表用户触摸屏幕的坐标   
  23.     private float x=0,y=0;  
  24.       
  25.     private Bitmap bmp;  
  26.   
  27.     public MySurfaceView(Context context) {  
  28.         super(context);  
  29.         // 获取SurfaceHolder接口   
  30.         surfaceHolder = this.getHolder();  
  31.         // 设置屏幕保持开启状态   
  32.         this.setKeepScreenOn(true);  
  33.         // 获取资源文件的引用res   
  34.         Resources res=getResources();  
  35.         // 获取baby位图资源文件的输入流   
  36.         InputStream is=res.openRawResource(R.drawable.boy2012);  
  37.         // 创建可绘制的位图对象   
  38.         BitmapDrawable bmpDraw=new BitmapDrawable(is);  
  39.         // 通过可绘制位图对象得到位图引用   
  40.         bmp=bmpDraw.getBitmap();  
  41.     }  
  42.   
  43.     /** 
  44.      * 画布上绘制boy2012图片 
  45.      */  
  46.     private void draw() {  
  47.         try {  
  48.             // 锁定Canvas画布   
  49.             canvas = surfaceHolder.lockCanvas();  
  50.             // 设置canvas画布背景为黑色   
  51.             canvas.drawColor(Color.BLACK);  
  52.             // 在画布上绘制boy2012位图   
  53.             canvas.drawBitmap(bmp, x-bmp.getWidth()/2, y-bmp.getHeight()/2null);    
  54.         } catch (Exception ex) {  
  55.         } finally {   
  56.             if (canvas != null)  
  57.                 // 解锁画布,并显示绘制图片   
  58.                 surfaceHolder.unlockCanvasAndPost(canvas);   
  59.         }  
  60.     }  
  61.       
  62.      /** 
  63.       * 用户触摸屏幕事件 -- 响应方法 
  64.       */  
  65.      public boolean onTouchEvent(MotionEvent event){  
  66.          x = event.getX();  
  67.          y = event.getY();  
  68.          draw();  
  69.         return true;   
  70.      }  
  71.   
  72. }  

相关内容