この画像で透明なPNGのいずれかを回転しようとしています。数字の部分は私が回転させたいものです。私はこれを行うことができるけど、それは私が本当のコンビネーションロックのような数字を回転させたいAndroid、タッチで画像を回転するのを助ける
http://i48.tinypic.com/25exzle.png
を達成しようとしているものではありません。ユーザーは指を触って円で動かします。私は、タッチ/ムーブイベントでは精度の低い画像の回転を見ており、十分ではありませんでした。
これは、現在、私のコード
public boolean onTouch(View v, MotionEvent event) {
double r=Math.atan2(event.getX()-lockNumbers.getWidth(), lockNumbers.getHeight()-event.getY());
int rotation=(int)Math.toDegrees(r);
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_MOVE:
x=event.getX();
y=event.getY();
updateRotation(rotation);
break;
case MotionEvent.ACTION_UP:
break;
}//switch
return true;
}//onTouch
private void updateRotation(double rot){
float newRot=new Float(rot);
Bitmap bitmap=BitmapFactory.decodeResource(getResources(),R.drawable.numbers);
Matrix matrix=new Matrix();
matrix.postRotate(newRot,bitmap.getWidth(),bitmap.getHeight());
if(y>250){
Bitmap reDrawnBitmap=Bitmap.createBitmap(bitmap,0,0,bitmap.getWidth(),bitmap.getHeight(),matrix,true);
lockNumbers.setImageBitmap(reDrawnBitmap);
}
else{
Bitmap reDrawnBitmap=Bitmap.createBitmap(bitmap,0,0,bitmap.getWidth(),bitmap.getHeight(),matrix,true);
lockNumbers.setImageBitmap(reDrawnBitmap);
}
}
それはまた、あなたがあるため、マトリックスパラメータのそれに触れて、ビットマップのサイズを変更しています。これは望ましい効果ではありません。
ユーザーはかなり自分の指で輪になって行くために必要とされます。
どのように回転がACTION_UPイベントで実行されたかを検出できますか? – IronBlossom