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

  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

    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()/2, null);    
    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.   
原文地址:https://www.cnblogs.com/Free-Thinker/p/6722672.html