android 扫描光标实现,Android SurfaceView实现跟随手指移动的光标

public class DragSurfaceView extends SurfaceView implementsSurfaceHolder.Callback,Runnable{private int screenW; //屏幕宽度

private int screenH; //屏幕高度

private float cx = 100; //默认X坐标

private float cy = 100; //默认Y坐标

privateBitmap mBitmap;private SurfaceHolder mSurfaceHolder = null;private Thread thread = null;publicDragSurfaceView(Context context,@Nullable AttributeSet attrs) {super(context,attrs);

mSurfaceHolder=getHolder();

mSurfaceHolder.addCallback(this);

mBitmap=getBitmapResources(context,R.drawable.x1);

thread=new Thread(this);

}public static Bitmap getBitmapResources(Context context,intresId){returnBitmapFactory.decodeResource(context.getResources(),resId);

}protected voidmyDraw() {//获取canvas实例

Canvas canvas =mSurfaceHolder.lockCanvas();//将屏幕设置为白色

canvas.drawColor(Color.WHITE);//绘制图片和位置

canvas.drawBitmap(mBitmap,cx,cy,null);//将画好的画布提交

mSurfaceHolder.unlockCanvasAndPost(canvas);

}

@Overridepublic voidrun() {while(true){try{

myDraw();

Thread.sleep(100);

}catch(InterruptedException e){

e.printStackTrace();

}

}

}

@SuppressLint("ClickableViewAccessibility")

@Overridepublic booleanonTouchEvent(MotionEvent event) {switch(event.getAction()) {caseMotionEvent.ACTION_DOWN://按下

cx = (int) event.getX();

cy= (int) event.getY();break;caseMotionEvent.ACTION_MOVE://移动

cx = (int) event.getX();

cy= (int) event.getY();break;caseMotionEvent.ACTION_UP://抬起

cx = (int) event.getX();

cy= (int) event.getY();break;

}return true;

}//surface创建的时候调用

@Overridepublic voidsurfaceCreated(SurfaceHolder surfaceHolder) {//获取屏幕高度

screenW =getWidth();

screenH=getHeight();

thread.start();

}//surface被改变的时候调用

@Overridepublic void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, inti2) {

}//surface销毁的时候调用

@Overridepublic voidsurfaceDestroyed(SurfaceHolder surfaceHolder) {

doRecycledIfNot(mBitmap);

}//回收一个未被回收的Bitmap

public static voiddoRecycledIfNot(Bitmap bitmap) {if (!bitmap.isRecycled()) {

bitmap.recycle();

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值