Android学习笔记之Bitmap位图虽触摸点移动

时间:2022-01-01 09:56:10

Android学习笔记之Bitmap位图虽触摸点移动                     

Android学习笔记之Bitmap位图虽触摸点移动

 

[java] view plain copy
  1. package xiaosi.bitmap;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5.   
  6. public class mianActivity extends Activity  
  7. {  
  8.   
  9.     private surfaceView bitmapView = null;  
  10.     @Override  
  11.     protected void onCreate(Bundle savedInstanceState)  
  12.     {  
  13.         super.onCreate(savedInstanceState);  
  14.         bitmapView = new surfaceView(this);  
  15.         setContentView(bitmapView);  
  16.     }  
  17. }  


surfaceView surfaceView .Java

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