歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android 開發知識 圖片跟隨觸摸位置移動

Android 開發知識 圖片跟隨觸摸位置移動

日期:2017/3/1 10:32:17   编辑:Linux編程

很簡單,顯示的圖片跟隨觸摸位置的變化而變化,詳見代碼.

[java]
  1. package cn.talentsoft.surfaceview;
  2. import java.io.InputStream;
  3. import Android.content.Context;
  4. import android.content.res.Resources;
  5. import android.graphics.Bitmap;
  6. import android.graphics.Canvas;
  7. import android.graphics.Color;
  8. import android.graphics.drawable.BitmapDrawable;
  9. import android.view.MotionEvent;
  10. import android.view.SurfaceHolder;
  11. import android.view.SurfaceView;
  12. /**
  13. * 演示SurfaceView類的使用,圖片跟隨觸摸位置進行移動
  14. */
  15. public class MySurfaceView extends SurfaceView{
  16. // 控制surface的接口,提供了控制surface的大小、格式、像素
  17. private SurfaceHolder surfaceHolder;
  18. // 定義畫布引用
  19. private Canvas canvas;
  20. // x y 代表用戶觸摸屏幕的坐標
  21. private float x=0,y=0;
  22. private Bitmap bmp;
  23. public MySurfaceView(Context context) {
  24. super(context);
  25. // 獲取SurfaceHolder接口
  26. surfaceHolder = this.getHolder();
  27. // 設置屏幕保持開啟狀態
  28. this.setKeepScreenOn(true);
  29. // 獲取資源文件的引用res
  30. Resources res=getResources();
  31. // 獲取baby位圖資源文件的輸入流
  32. InputStream is=res.openRawResource(R.drawable.boy2012);
  33. // 創建可繪制的位圖對象
  34. BitmapDrawable bmpDraw=new BitmapDrawable(is);
  35. // 通過可繪制位圖對象得到位圖引用
  36. bmp=bmpDraw.getBitmap();
  37. }
  38. /**
  39. * 畫布上繪制boy2012圖片
  40. */
  41. private void draw() {
  42. try {
  43. // 鎖定Canvas畫布
  44. canvas = surfaceHolder.lockCanvas();
  45. // 設置canvas畫布背景為黑色
  46. canvas.drawColor(Color.BLACK);
  47. // 在畫布上繪制boy2012位圖
  48. canvas.drawBitmap(bmp, x-bmp.getWidth()/2, y-bmp.getHeight()/2, null);
  49. } catch (Exception ex) {
  50. } finally {
  51. if (canvas != null)
  52. // 解鎖畫布,並顯示繪制圖片
  53. surfaceHolder.unlockCanvasAndPost(canvas);
  54. }
  55. }
  56. /**
  57. * 用戶觸摸屏幕事件 -- 響應方法
  58. */
  59. public boolean onTouchEvent(MotionEvent event){
  60. x = event.getX();
  61. y = event.getY();
  62. draw();
  63. return true;
  64. }
  65. }
Copyright © Linux教程網 All Rights Reserved