如何在android中双向旋转图像

时间:2011-09-14 15:10:48

标签: android imageview rotation

嗨我需要在我的应用程序中旋转ImageView

我正在使用以下代码

public android.view.View.OnTouchListener onTableTouched = new android.view.View.OnTouchListener(){
public boolean onTouch(View v, MotionEvent evt) {

WrapMotionEvent event = WrapMotionEvent.wrap(evt);

ImageView view = (ImageView) v;
// Dump touch event to log
dumpEvent(event);
//
switch (event.getAction() & MotionEvent.ACTION_MASK) {

case MotionEvent.ACTION_DOWN:
break;

case MotionEvent.ACTION_POINTER_DOWN:
mode = NONE;      
break;

case MotionEvent.ACTION_UP:
break;

case MotionEvent.ACTION_MOVE:
if(mode == NONE){
updateRotation();
}
break;
}
return true;
}
};


private void updateRotation()
{

 matrix.postRotate(10);

 Bitmap redrawnBitmap = Bitmap.createBitmap(itembmp, 0, 0,itembmp.getWidth(), itembmp.getHeight(), matrix, true);
 itembmp=redrawnBitmap;
 image.setImageBitmap(itembmp);
}

但是通过使用它,我只能在时钟方向旋转图像。

但我需要在两个方向上旋转图像。

如何做到这一点。

3 个答案:

答案 0 :(得分:0)

我会创建两个函数,一个名为updateRotationClockwise,一个名为updateRotationCounterClockWise。

顺时针方向,它应该保持:

 matrix.postRotate(10);

在逆时针方向,它应该说:

matrix.postRotate(350);

答案 1 :(得分:0)

我正在开发这个逻辑。 1.角度差异。人们还需要检查其他边界条件以获得更高的准确性。 2.而不是处理触摸动作。我在构建ScaleGestureDetector类中用于获取信息。 在onScaleBegin中假设我使用OnScaleGestureListener中的setter(在触摸时调用)获取事件。 之前的getY = /的getX; 在ScaleEnd上 后的getY = /的getX;

因此差异是tan-1(之前)-tan-1(之后) if + tive逆时针顺时针方向。 我添加条件并不是那么准确,但可以试试这个。

答案 2 :(得分:0)

来自ClockView类的

您可以找到位图图像的旋转方法

genericpath.exists() function