缩放 activity
Zooming an activity
所以我花了几个小时在网上搜索帮助,但所有论坛和文档都没有向我正确解释我应该采取的最佳方式。
目前我有一个 activity 和 XML 相对布局(背景设置为地图图片),我想实现多手势缩放功能。经过大量阅读,我似乎应该使用必须在视图内实现的 ScrollGestureDetector。
我想做到这样,用户可以在屏幕上的任何地方使用 2 指针手势,它会放大。问题是我不知道如何实现这个,也找不到资源来显示我如何对 activity.
执行此操作
有什么方法可以为我的 RelativeLayout 实现 ScrollGestureDetector 吗?我是否应该创建一个覆盖整个屏幕并呈现图片的自定义视图,以便我可以在 class 定义中实现 ScrollGestureDetector?我该怎么办?
如果图像在 ImageView
范围内,使用双指缩放缩放图像效果最佳。 ImageView
可以任意缩放图像,而背景图像仅根据视图边界进行缩放。
您只需在 activity 上调用 setContentView()
并使用包含 ImageView
.
的布局
要在您的代码中使用 ScaleGestureDetector,您必须执行以下操作
在您的视图中声明一个 ScaleGestureDetector。
private ScaleGestureDetector mScaleGestureDetector;
使用缩放事件侦听器初始化它,最好在 onCreate()
:
mScaleGestureDetector = new ScaleGestureDetector(this, new ScaleGestureDetector.OnScaleGestureListener() {
@Override
public boolean onScale(ScaleGestureDetector detector) {
// your impl here
return false;
}
@Override
public boolean onScaleBegin(ScaleGestureDetector detector) {
// your impl here
return false;
}
@Override
public void onScaleEnd(ScaleGestureDetector detector) {
// your impl here
}
})
将 ScaleGestureDetector 添加到您的 onTouchEvent()
方法中:
@Override
public boolean onTouchEvent(MotionEvent event) {
mScaleGestureDetector.onTouchEvent(event);
// do other stuff
return super.onTouchEvent(event);
}
奇怪的是,ScaleGestureDetector.onTouchEvent()
总是 returns true,但是您可以使用 isInProgress()
来判断缩放操作是否已经开始。
所以我花了几个小时在网上搜索帮助,但所有论坛和文档都没有向我正确解释我应该采取的最佳方式。
目前我有一个 activity 和 XML 相对布局(背景设置为地图图片),我想实现多手势缩放功能。经过大量阅读,我似乎应该使用必须在视图内实现的 ScrollGestureDetector。
我想做到这样,用户可以在屏幕上的任何地方使用 2 指针手势,它会放大。问题是我不知道如何实现这个,也找不到资源来显示我如何对 activity.
执行此操作有什么方法可以为我的 RelativeLayout 实现 ScrollGestureDetector 吗?我是否应该创建一个覆盖整个屏幕并呈现图片的自定义视图,以便我可以在 class 定义中实现 ScrollGestureDetector?我该怎么办?
如果图像在 ImageView
范围内,使用双指缩放缩放图像效果最佳。 ImageView
可以任意缩放图像,而背景图像仅根据视图边界进行缩放。
您只需在 activity 上调用 setContentView()
并使用包含 ImageView
.
要在您的代码中使用 ScaleGestureDetector,您必须执行以下操作
在您的视图中声明一个 ScaleGestureDetector。
private ScaleGestureDetector mScaleGestureDetector;
使用缩放事件侦听器初始化它,最好在
onCreate()
:mScaleGestureDetector = new ScaleGestureDetector(this, new ScaleGestureDetector.OnScaleGestureListener() { @Override public boolean onScale(ScaleGestureDetector detector) { // your impl here return false; } @Override public boolean onScaleBegin(ScaleGestureDetector detector) { // your impl here return false; } @Override public void onScaleEnd(ScaleGestureDetector detector) { // your impl here } })
将 ScaleGestureDetector 添加到您的
onTouchEvent()
方法中:@Override public boolean onTouchEvent(MotionEvent event) { mScaleGestureDetector.onTouchEvent(event); // do other stuff return super.onTouchEvent(event); }
奇怪的是,ScaleGestureDetector.onTouchEvent()
总是 returns true,但是您可以使用 isInProgress()
来判断缩放操作是否已经开始。