捏缩放自定义视图
我已经创build了我的自定义视图,我想对我的自定义视图应用缩放。 怎么做?
Android Developers Blog上的这篇文章非常好地介绍了这个主题(向下滚动到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; } }
本文的其余部分涉及处理其他手势,而不是使用它们的实现,您可以使用GestureDetector就像在上面的代码中使用ScaleGestureDetector一样。
将您的视图放在ZoomView
。
自定义视图可在这里https://github.com/Polidea/android-zoom-查看它很容易,自由,这么多的乐趣!;