【发布时间】:2011-03-07 06:43:20
【问题描述】:
我已经创建了我的自定义视图,我想为我的自定义视图应用捏缩放。该怎么做?
【问题讨论】:
我已经创建了我的自定义视图,我想为我的自定义视图应用捏缩放。该怎么做?
【问题讨论】:
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;
}
}
本文的其余部分涉及处理其他手势,但不使用它们的实现,您可以使用GestureDetector,就像上面代码中使用的 ScaleGestureDetector 一样。
【讨论】:
将您的视图放入ZoomView。
自定义视图可在此处https://github.com/Polidea/android-zoom-view 获得,简单、免费且非常有趣!
【讨论】:
此库允许您对自定义视图应用缩放和平移。它满足了我的需求:
【讨论】:
【讨论】: