Android 缩放活动
所以我花了几个小时在网上寻找帮助,但是所有的论坛和文档都没有正确地向我解释我应该怎么做 目前,我有一个具有XML相对布局的活动(背景设置为地图的图片),我想实现一个多手势缩放功能。经过大量阅读,我似乎应该使用ScrollGestureDetector,它必须在视图中实现 我想让它,以便用户可以使用一个2指针的手势在屏幕上的任何地方,它将放大。问题是我不知道如何实现这一点,也找不到资源来向我展示如何对活动执行这一点Android 缩放活动,android,android-activity,zooming,android-view,gestures,Android,Android Activity,Zooming,Android View,Gestures,所以我花了几个小时在网上寻找帮助,但是所有的论坛和文档都没有正确地向我解释我应该怎么做 目前,我有一个具有XML相对布局的活动(背景设置为地图的图片),我想实现一个多手势缩放功能。经过大量阅读,我似乎应该使用ScrollGestureDetector,它必须在视图中实现 我想让它,以便用户可以使用一个2指针的手势在屏幕上的任何地方,它将放大。问题是我不知道如何实现这一点,也找不到资源来向我展示如何对活动执行这一点 有什么方法可以为我的亲戚应用ScrollGestureDetector吗?我是否应
有什么方法可以为我的亲戚应用ScrollGestureDetector吗?我是否应该创建一个覆盖整个屏幕并显示图片的自定义视图,以便在类定义中实现ScrollGestureDetector?我应该怎么做呢?如果图像在
图像视图中,使用收缩缩放缩放图像效果最好。ImageView
可以任意缩放图像,而背景图像仅基于视图边界进行缩放
您只需对包含ImageView
的布局的活动调用setContentView()
要在代码中使用scalegestruedetector,必须执行以下操作
在视图中声明一个scalegestruedetector
private ScaleGestureDetector mScaleGestureDetector;
使用缩放事件侦听器初始化它,最好在onCreate()中进行初始化:
将ScaleGetureDetector添加到onTouchEvent()
方法:
@Override
public boolean onTouchEvent(MotionEvent event) {
mScaleGestureDetector.onTouchEvent(event);
// do other stuff
return super.onTouchEvent(event);
}
奇怪的是,scalegestruedetector.onTouchEvent()
总是返回true,但是您可以使用isInProgress()
来判断缩放操作是否已开始。您可以使用本教程来实现它:问题是我已经为许多不同的触摸位置设置了Activity.setOnTouchListener()。如何将这两种解决方案结合起来?或者,我必须通过ScrollGestureDetector处理所有触摸?我是否无法在现有的Activity.setOnTouchListener(新视图.OnTouchListener(){@Override public boolean onTouch(视图v,MotionEvent事件){//do something return true}中实现ScaleGetDetector;非常感谢。我不知道2号和3号是在视图内部实现的,还是在活动内部实现的,这取决于具体情况。在您的问题中,您提到创建自定义视图,这是一个不错的选择。如果它是一个没有任何触摸行为的视图,那么您可以设置一个OnTouchListener
,它将具有onTouchEvent
实现。换句话说,您的活动中有调用view.setOnTouchListener()
的代码。该活动还可以侦听触摸事件,这是您设置的。如果您要缩放整个屏幕,这也是一个有效的策略。
@Override
public boolean onTouchEvent(MotionEvent event) {
mScaleGestureDetector.onTouchEvent(event);
// do other stuff
return super.onTouchEvent(event);
}