Estoy tratando de rotar uno de los PNG transparentes en esta imagen. La parte del número es lo que quiero rotar. Soy capaz de hacer esto, pero no es lo que estoy tratando de lograrAndroid, ayuda girando la imagen al tacto
http://i48.tinypic.com/25exzle.png
Quiero girar los números como en una verdadera cerradura de combinación. Entonces, el usuario tocará y moverá su dedo en un círculo. Miré una rotación de imagen menos precisa en los eventos de tocar/mover, y no fueron suficientes.
este momento es mi código
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);
}
}
también cambia el tamaño del mapa de bits cuando la toca porque el parámetro de matriz. Este no es el efecto deseado.
Se requiere que el usuario haga un círculo con el dedo.
¿cómo puedo detectar cuánta rotación se ha realizado en el evento ACTION_UP? – IronBlossom