捏缩放以获得自定义视图

sar*_*nan 44 android android-layout

我创建了自定义视图,我想为自定义视图应用缩放缩放.怎么做?

小智 81

Android开发者博客上的这篇文章很好地介绍了这个主题(向下滚动到GestureDetectors部分):

理解多点触控

如果您只想实现双指缩放,那么您只需要几行代码:

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

本文的其余部分涉及处理其他手势,而不是使用它们的实现,您可以使用GestureDetector,就像在上面的代码中使用ScaleGestureDetector一样.

  • 我完成了这个但是如何拖动或滚动缩放视图 (5认同)

小智 8

把你的观点放在里面ZoomView.

自定义视图在这里https://github.com/Polidea/android-zoom-view它很容易,免费,很有趣!

  • 还有哪些文件? (4认同)
  • 该GitHub存储库不再维护。 (2认同)