Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为android customview添加收缩/缩放手势_Android - Fatal编程技术网

为android customview添加收缩/缩放手势

为android customview添加收缩/缩放手势,android,Android,我将在画布上绘制许多矩形,以创建地图。我希望能够放大和缩小地图的不同部分。我看了其他的例子,没有一个被证明是成功的。有什么想法吗 public class Int_Map extends View { private ScaleGestureDetector mScaleDetector; private float mScaleFactor = 1.f; public Int_Map(Context context) { super(context); mScaleDete

我将在画布上绘制许多矩形,以创建地图。我希望能够放大和缩小地图的不同部分。我看了其他的例子,没有一个被证明是成功的。有什么想法吗

public class Int_Map extends View {

private ScaleGestureDetector mScaleDetector;
private float mScaleFactor = 1.f;

public Int_Map(Context context) {
    super(context);
    mScaleDetector = new ScaleGestureDetector(context, new ScaleListener());
}

public boolean onTouchEvent(MotionEvent event){
    mScaleDetector.onTouchEvent(event);

    Region region = new Region(0, 0, getWidth(), getHeight()/2);

    float x = event.getX();
    float y = event.getY();

    if(region.contains((int)x, (int)y))
    {
        Intent intent = new Intent(getContext(), Exhibit1.class);
        ((Activity)getContext()).startActivity(intent);
    }

    return true;

}


@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    canvas.save();
    canvas.scale(mScaleFactor, mScaleFactor);

    Rect rect = new Rect();
    rect.set(0,0, canvas.getWidth(), canvas.getHeight()/2);

    Drawable drawable = getResources().getDrawable(R.drawable.exhibit1);
    drawable.setBounds(rect);
    drawable.draw(canvas);

    canvas.restore();

}       

private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener {
    @Override
    public boolean onScale(ScaleGestureDetector detector) {
        mScaleFactor *= detector.getScaleFactor();

        // Don't let the object get too small or too large.
        mScaleFactor = Math.max(0.1f, Math.min(mScaleFactor, 5.0f));

        invalidate();
        return true;
    }
}

}

您的代码会发生什么变化?什么没有/没有按预期做?我的矩形在画布上按预期显示,但是我无法放大它们。是否调用了
onTouchEvent
回调?我删除并重新制作了我的类,现在缩放效果很好。简单的解决方案哈哈,谢谢你的反馈!