Android 自定义视图的收缩缩放

Android 自定义视图的收缩缩放,android,android-layout,Android,Android Layout,我已经创建了自定义视图,我想对自定义视图应用收缩缩放。如何做到这一点?Android开发者博客上的这篇文章很好地介绍了这一主题(向下滚动到手势检测器部分): 如果您只想实现从收缩到缩放,只需要几行代码: private ScaleGestureDetector mScaleDetector; private float mScaleFactor = 1.f; public MyCustomView(Context mContext){ //... //Your view co

我已经创建了自定义视图,我想对自定义视图应用收缩缩放。如何做到这一点?

Android开发者博客上的这篇文章很好地介绍了这一主题(向下滚动到手势检测器部分):

如果您只想实现从收缩到缩放,只需要几行代码:

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

public MyCustomView(Context mContext){
    //...
    //Your view code
    //...
    mScaleDetector = new ScaleGestureDetector(context, new ScaleListener());
}

@Override
public boolean onTouchEvent(MotionEvent ev) {
    // Let the ScaleGestureDetector inspect all events.
    mScaleDetector.onTouchEvent(ev);
    return true;
}

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

    canvas.save();
    canvas.scale(mScaleFactor, mScaleFactor);
    //...
    //Your onDraw() code
    //...
    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;
    }
}

本文的其余部分将讨论如何处理其他手势,但您可以像上面代码中使用的ScaleGestureDetector一样使用它们,而不是使用它们的实现。

将视图放在
ZoomView

这里提供的自定义视图非常简单、免费而且非常有趣

使用以下命令:

通过各种触摸手势实现支持缩放的Android ImageView


此库允许您对自定义视图应用缩放和平移。它满足了我的需要:


是否有相关文档?很好的例子,但它会导致许多无效调用。不幸的是,该项目在过去6个月内似乎没有处于活动状态。15天前,我提交了一个pull请求来修复一个明显的bug,但没有收到任何响应。您收到了吗?如何使用它?此GitHub存储库不再维护。我已经完成了此操作,但如何拖动或滚动缩放的文件view@sillyMistaker关于pan,在帖子的链接中有很好的解释。评论内容太多了,但仍然遵循相当简单的逻辑。如何在listview上实现这一点?从来没有想到它会这么容易实现。非常感谢。Photoview仅在ImageView上运行良好,但未获得视图,该视图由另一个类扩展。如何使用CustomView?太棒了,它帮了我很多;我正在努力缩放画布上有图形的自定义imageView。这个图书馆真的为我解决了这个问题。谢谢你提到它!