Android 如何用两个手指滚动位图?
谁能告诉我如何用两个手指滚动位图,因为在我的应用程序中,我用一个手指画画。因为我想画一幅完整的图像(它可能比屏幕大),所以用两个手指滚动会很方便?Android 如何用两个手指滚动位图?,android,bitmap,Android,Bitmap,谁能告诉我如何用两个手指滚动位图,因为在我的应用程序中,我用一个手指画画。因为我想画一幅完整的图像(它可能比屏幕大),所以用两个手指滚动会很方便?私有类Img扩展视图{ private class Img extends View { private Bitmap bmp; private Rect imgRect, scrollRect; private float prevX, prevY; private int newX, newY; publi
私有类Img扩展视图{
private class Img extends View {
private Bitmap bmp;
private Rect imgRect, scrollRect;
private float prevX, prevY;
private int newX, newY;
public Img(Context context) {
super(context);
bmp = BitmapFactory.decodeResource(getResources(),
R.drawable.screen);
imgRect = new Rect(0, 0, width, height);
scrollRect = new Rect(0, 0, width, height);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE: {
int numPointers = event.getPointerCount();
if (numPointers > 1) {
float currX = event.getRawX();
float deltaX = -(currX - prevX);
newX += deltaX;
float currY = event.getRawY();
float deltaY = -(currY - prevY);
newY += deltaY;
if (newX < 0)
newX = 0;
if (newY < 0)
newY = 0;
if (newX > bmp.getWidth() - width)
newX = bmp.getWidth() - width;
if (newY > bmp.getHeight() - height)
newY = bmp.getHeight() - height;
scrollRect.set(newX, newY, newX + width, newY + height);
invalidate();
prevX = currX;
prevY = currY;
}
break;
}
case MotionEvent.ACTION_DOWN: {
prevX = event.getRawX();
prevY = event.getRawY();
break;
}
}
return true;
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawBitmap(bmp, scrollRect, imgRect, new Paint());
}
}
私有位图bmp;
private Rect imgRect、scrollRect;
私人浮动prevX,prevY;
私有int newX,newY;
公共Img(上下文){
超级(上下文);
bmp=BitmapFactory.decodeResource(getResources(),
R.可拉拔式屏幕);
imgRect=新矩形(0,0,宽度,高度);
scrollRect=新矩形(0,0,宽度,高度);
}
@凌驾
公共布尔onTouchEvent(运动事件){
开关(event.getAction()){
case MotionEvent.ACTION\u移动:{
int numPointers=event.getPointerCount();
如果(numPointers>1){
float currX=event.getRawX();
浮动deltaX=-(currX-prevX);
newX+=deltaX;
float currY=event.getRawY();
浮动三角洲=-(咖喱-上一个);
newY+=三角洲;
if(newX<0)
newX=0;
if(newY<0)
newY=0;
如果(newX>bmp.getWidth()-width)
newX=bmp.getWidth()-width;
如果(newY>bmp.getHeight()-height)
newY=bmp.getHeight()-高度;
scrollRect.set(newX,newY,newX+宽度,newY+高度);
使无效();
prevX=currX;
prevY=咖喱;
}
打破
}
case MotionEvent.ACTION\u DOWN:{
prevX=event.getRawX();
prevY=event.getRawY();
打破
}
}
返回true;
}
@凌驾
受保护的void onDraw(画布){
drawBitmap(bmp、scrollRect、imgRect、new Paint());
}
}
在这里,Img类用一个大位图表示视图,该位图显示其当前可见的矩形int numPointers=event.getPointerCount();
如果(numPointers>1){
-这里是触摸屏幕的手指数。因此,如果大于1,大图像将滚动,否则,您可以实现绘制逻辑。据我所知,emulator不支持多点触摸。