我的布局包含按钮,文字浏览等。是否可以在我的布局中实现缩放缩放?android pinch zoom
回答
请查看以下链接可以帮助您
最好的例子是在下面的链接,你可以重构,以满足您的要求提供。
我实现了一个捏放大为我TextView
,使用this教程。将得到的代码是这样的:
private GestureDetector gestureDetector;
private View.OnTouchListener gestureListener;
和的onCreate():
// Zoom handlers
gestureDetector = new GestureDetector(new MyGestureDetector());
gestureListener = new View.OnTouchListener() {
// We can be in one of these 2 states
static final int NONE = 0;
static final int ZOOM = 1;
int mode = NONE;
static final int MIN_FONT_SIZE = 10;
static final int MAX_FONT_SIZE = 50;
float oldDist = 1f;
@Override
public boolean onTouch(View v, MotionEvent event) {
TextView textView = (TextView) findViewById(R.id.text);
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_POINTER_DOWN:
oldDist = spacing(event);
Log.d(TAG, "oldDist=" + oldDist);
if (oldDist > 10f) {
mode = ZOOM;
Log.d(TAG, "mode=ZOOM");
}
break;
case MotionEvent.ACTION_POINTER_UP:
mode = NONE;
break;
case MotionEvent.ACTION_MOVE:
if (mode == ZOOM) {
float newDist = spacing(event);
// If you want to tweak font scaling, this is the place to go.
if (newDist > 10f) {
float scale = newDist/oldDist;
if (scale > 1) {
scale = 1.1f;
} else if (scale < 1) {
scale = 0.95f;
}
float currentSize = textView.getTextSize() * scale;
if ((currentSize < MAX_FONT_SIZE && currentSize > MIN_FONT_SIZE)
||(currentSize >= MAX_FONT_SIZE && scale < 1)
|| (currentSize <= MIN_FONT_SIZE && scale > 1)) {
textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, currentSize);
}
}
}
break;
}
return false;
}
魔术常量1.1和0.95中凭经验选择(使用scale
变量为此目的而我TextView
的行为种怪异)。
我可以知道你的'MyGestureDetector()'类 – Praveenkumar 2012-01-28 11:12:27
MyGestureDetector()请! – renanlf 2012-08-28 13:04:54
@Renanlf这是一年多以前。对不起,我甚至不再为Android编码。我在任何地方也不会有这些资源。 – folone 2012-08-28 14:09:17
在蜂窝,API等级11,可能的话,我们可以用setScalaX和setScaleY与支点
我在这里解释它
Zooming a view completely
Pinch Zoom to view completely
我已经创建了一个基本的挤夹项目即支持Android 2.1+
可用here
为Android 2.2+(API level8)变焦,CA n使用ScaleGestureDetector。
你需要一个成员:
private ScaleGestureDetector mScaleDetector;
在构造函数(或的onCreate())添加:
mScaleDetector = new ScaleGestureDetector(context, new OnScaleGestureListener() {
@Override
public void onScaleEnd(ScaleGestureDetector detector) {
}
@Override
public boolean onScaleBegin(ScaleGestureDetector detector) {
return true;
}
@Override
public boolean onScale(ScaleGestureDetector detector) {
Log.d(LOG_KEY, "zoom ongoing, scale: " + detector.getScaleFactor());
return false;
}
});
您覆盖的onTouchEvent:
@Override
public boolean onTouchEvent(MotionEvent event) {
mScaleDetector.onTouchEvent(event);
return true;
}
如果您绘制在onScale()中手动查看,您可能将比例因子存储在成员中,然后调用invalidate()并使用比例在你的onDraw()中绘制时的因素。 否则,您可以直接修改onScale()中的字体大小或类似的东西。
[Android文档 - 拖动和缩放](https://developer.android)中的其他信息。 com/training/gestures/scale.html)特别注意示例代码,演示如何将平移(滚动)和缩放(缩放)结合起来。 – ToolmakerSteve 2016-10-20 17:12:55
也有这个项目,没有工作和完美的工作对我来说: https://github.com/chrisbanes/PhotoView
- 1. Android pinch-zoom into image
- 2. Pinch-zoom with Hammer.js
- 3. iPhone UIImageView pinch zoom
- 4. Pinch Zoom with gallery
- 5. cocso2d pinch-zoom like Fieldrunners
- 6. View Pager + ImageView + Pinch Zoom + Rotation
- 7. JQuery Mobile Pinch Zoom Image Only
- 8. 如何使用Android中的OnGestureListener检测pinch-zoom事件?
- 9. Android - Pinch-zoomable Android的框架布局
- 10. Android Zoom和Crop
- 11. android zoom控制
- 12. android zoom控制
- 13. GLSurfaceView缩放(PINCH缩放)
- 14. Java android ImageView with zoom
- 15. Add zoom to camera android
- 16. zoom UICollectionView
- 17. zoom zoom blurred
- 18. Android Mapview pinch视图不会调用OnZoomListener
- 19. Android Drag,Pinch Scale和旋转对象
- 20. Osmdroid和Pinch
- 21. Cytoscape cyPosition()vs zoom zoom
- 22. Android Tablet Zoom选项丢失
- 23. Android的特定imageview zoom
- 24. Wiki关于android-zoom-view.jar
- 25. highcharts tooltip not zoom after zoom
- 26. 在添加d3.behavior.zoom时,.on(“zoom”,zoom),zoom undefined
- 27. MandelbrotSet zoom
- 28. MKUserTrackingModeFollowWithHeading,zoom
- 29. JavaScript zoom
- 30. 在ScrollViewer中不使用ZoomFactor我可以只在UWP中只收到Pinch Zoom事件
这个答案将是毫无价值的,一旦链接下去。至少引用相关部分。 – 2015-12-10 08:29:37
仅供参考,此答案已过时。 [ScaleGestureDetector](https://developer.android.com/reference/android/view/ScaleGestureDetector.html)是API的缩放API的缩写。见[伊曼纽尔的回答](http://stackoverflow.com/a/11722858/199364)。 – ToolmakerSteve 2016-10-20 17:08:27