歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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. }  
Copyright © Linux教程網 All Rights Reserved