Android 开发知识 图片跟随触摸位置移动
Android 开发知识 图片跟随触摸位置移动
很简单,显示的图片跟随触摸位置的变化而变化,详见代码.
[java]
- package cn.talentsoft.surfaceview;
- import java.io.InputStream;
- import Android.content.Context;
- import android.content.res.Resources;
- import android.graphics.Bitmap;
- import android.graphics.Canvas;
- import android.graphics.Color;
- import android.graphics.drawable.BitmapDrawable;
- import android.view.MotionEvent;
- import android.view.SurfaceHolder;
- import android.view.SurfaceView;
- /**
- * 演示SurfaceView类的使用,图片跟随触摸位置进行移动
- */
- public class MySurfaceView extends SurfaceView{
- // 控制surface的接口,提供了控制surface的大小、格式、像素
- private SurfaceHolder surfaceHolder;
- // 定义画布引用
- private Canvas canvas;
- // x y 代表用户触摸屏幕的坐标
- private float x=0,y=0;
- private Bitmap bmp;
- public MySurfaceView(Context context) {
- super(context);
- // 获取SurfaceHolder接口
- surfaceHolder = this.getHolder();
- // 设置屏幕保持开启状态
- this.setKeepScreenOn(true);
- // 获取资源文件的引用res
- Resources res=getResources();
- // 获取baby位图资源文件的输入流
- InputStream is=res.openRawResource(R.drawable.boy2012);
- // 创建可绘制的位图对象
- BitmapDrawable bmpDraw=new BitmapDrawable(is);
- // 通过可绘制位图对象得到位图引用
- bmp=bmpDraw.getBitmap();
- }
- /**
- * 画布上绘制boy2012图片
- */
- private void draw() {
- try {
- // 锁定Canvas画布
- canvas = surfaceHolder.lockCanvas();
- // 设置canvas画布背景为黑色
- canvas.drawColor(Color.BLACK);
- // 在画布上绘制boy2012位图
- canvas.drawBitmap(bmp, x-bmp.getWidth()/2, y-bmp.getHeight()/2, null);
- } catch (Exception ex) {
- } finally {
- if (canvas != null)
- // 解锁画布,并显示绘制图片
- surfaceHolder.unlockCanvasAndPost(canvas);
- }
- }
- /**
- * 用户触摸屏幕事件 -- 响应方法
- */
- public boolean onTouchEvent(MotionEvent event){
- x = event.getX();
- y = event.getY();
- draw();
- return true;
- }
- }
评论暂时关闭