我的佈局包含按鈕,文字瀏覽等。是否可以在我的佈局中實現縮放縮放?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