圓內可移動圖像
回答
平移的ImageView遵循的準則可以這樣做:
- 採取相對佈局
- 在此佈局中添加ImageView。
- 現在在其中添加圓形圖像。
例如:
<RelativeLayout>
<ImageView /> // image which have to apply movement.
<ImaeView /> // circle shape
</RelativeLayout>
然後應用以下代碼來使用的ImageView的移動。
實現活動與OnTouchListener,然後
img.setonTouchListener(this);
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
view= (ImageView) v;
// make the image scalable as a matrix
view.setScaleType(ImageView.ScaleType.MATRIX);
float scale;
// Handle touch events here...
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN: //first finger down only
savedMatrix.set(matrix);
start.set(event.getX(), event.getY());
Log.d(TAG, "mode=DRAG");
mode = DRAG;
break;
case MotionEvent.ACTION_UP: //first finger lifted
case MotionEvent.ACTION_POINTER_UP: //second finger lifted
mode = NONE;
Log.d(TAG, "mode=NONE");
break;
case MotionEvent.ACTION_POINTER_DOWN: //second finger down
oldDist = spacing(event); // calculates the distance between two points where user touched.
Log.d(TAG, "oldDist=" + oldDist);
// minimal distance between both the fingers
if (oldDist > 5f) {
savedMatrix.set(matrix);
midPoint(mid, event); // sets the mid-point of the straight line between two points where user touched.
mode = ZOOM;
Log.d(TAG, "mode=ZOOM");
}
break;
case MotionEvent.ACTION_MOVE:
if (mode == DRAG)
{ //movement of first finger
matrix.set(savedMatrix);
if (view.getLeft() >= -392)
{
matrix.postTranslate(event.getX() - start.x, event.getY() - start.y);
}
}
else if (mode == ZOOM) { //pinch zooming
float newDist = spacing(event);
Log.d(TAG, "newDist=" + newDist);
if (newDist > 5f) {
matrix.set(savedMatrix);
scale = newDist/oldDist; //thinking I need to play around with this value to limit it**
matrix.postScale(scale, scale, mid.x, mid.y);
}
}
break;
}
// Perform the transformation
view.setImageMatrix(matrix);
return true; // indicate event was handled
}
private float spacing(MotionEvent event) {
float x = event.getX(0) - event.getX(1);
float y = event.getY(0) - event.getY(1);
return FloatMath.sqrt(x * x + y * y);
}
private void midPoint(PointF point, MotionEvent event) {
float x = event.getX(0) + event.getX(1);
float y = event.getY(0) + event.getY(1);
point.set(x/2, y/2);
}
希望這會幫助你,它很容易的任務。
感謝balvinder!這是我需要的。 – 2014-09-20 08:06:43
不客氣..享受!!!!! – 2014-09-20 09:25:31
但是如果我們當時使用唯一的環形圖像imageview的角落,它是在圓形的imageview後面,它也顯示在圓外,那麼我們必須做什麼? – 2016-12-03 09:00:17
- 1. 拖動在圓形內移動圖像(圓形移動)
- 2. 以圓形方向移動圖像
- 3. 在圖像元素內移動圖像
- 4. Cocos2d圓內點的移動
- 5. 移動圖像幀內ios
- 6. 在div內移動圖像?
- 7. div內的圓形圖像
- 8. 圓圈內的SVG圖像
- 9. winform移動圖片箱內的圖像
- 10. MWPhotoBrowser - 在視圖內移動的圖像
- 11. 做就像一個圓的圖像移動與定時器
- 12. 沿着圓形路徑移動圖像視圖
- 13. D3圓環圖中不可見完全當在移動視圖
- 14. 在圓形邊界內移動UIButton?
- 15. 在同一圖像內移動作物
- 16. 在div內移動的圖像
- 17. 移動div內的光標圖像
- 18. 使用OpenCV移動圖像內容
- 19. 在邊界內傾斜移動圖像
- 20. 如何在畫布內移動圖像
- 21. 使圖像在div內隨機移動
- 22. javascript在div內移動圖像
- 23. 如何在圓角矩形內或圓形內繪製圖像?
- 24. 按住圖像即可移動
- 25. 不顯示可移動類型圖像
- 26. SliderIOS - 自定義可移動圖像
- 27. 在圓形路徑上移動畫布圖像
- 28. 如何使用jquery在圓形路徑中移動圖像?
- 29. 如何在android中沿着圓圈移動圖像?
- 30. 動畫圖像,但圖像不移動
給我建議比放棄投票兄弟。我會糾正我的錯誤 – 2014-09-20 03:45:48