2012-09-14 20 views
5

He personalizado imageview pero es el solo que giran a su mapa de bits no toda la vista. No quiero usar la animación porque estoy arrastrando la imagen también, así que mover los resultados de la imagen animada es raro, por lo que seguir con onDraw/draw, además de sorteo, no es nada especial.imageview girar alrededor de su centro sin cortar los bordes

 @Override 
     protected void onDraw(Canvas canvas) { 
     // TODO Auto-generated method stub 
     canvas.save(); 
     canvas.rotate(rotationAngle, rotationW, rotationH); 
     super.onDraw(canvas); 
     canvas.restore(); 
     }  

¿cómo puedo rotar toda la vista, no solo su mapa de bits?

Respuesta

1
  1. Se debe verificar el ancho y el alto de la vista de la imagen, si Altura> ancho, entonces, en el momento del ancho de rotación debe ser igual a la altura y lo mismo con la altura.

  2. anchura Marca y altura igual a fill_parent y luego de rotación/traslación/escala a través de la matriz.

0

Comenzando con API 11, se encuentra el siguiente método disponible para cada vista:

.setRotation(float angle); 

http://developer.android.com/reference/android/view/View.html#attr_android:rotation


Antes de API 11 Se podría añadir una rotación para el elemento principal de su vista :

@Override 
protected void onDraw(Canvas c) { 
    c.save(); 
    c.rotate(...); 
    super.onDraw(c); 
    c.restore(); 
} 
+0

Estoy trabajando con la API de 7, así que ¿hay alguna otra manera? – Khawar

+0

actualizado mi post anterior;) – Nippey

+0

No hay diferencia entre el código que ambos publicado, en realidad yo estoy haciendo lo mismo y su trabajo, pero su corte de sus bordes a menos que su en 0 '/ 180'/360' . – Khawar

3

no he tenido las respuestas proporcionadas intención aquí, pero utilizando

androide: clipChildren = "false"

para el padre ViewGroup y primordial draw en lugar de onDraw hicieron el trabajo para mí

para más información ver: Rotating imageview and its background without cropp

Cuestiones relacionadas