Cómo rotar la imagen en imageview en el botón haga clic en cada vez?
Esto es código de Java. Estoy consiguiendo la imagen de la galería de la imagen. Tengo un botón y un ImageView. Está girando solamente una vez. Cuando hago de nuevo clic el botón no está girando la imagen.
public class EditActivity extends ActionBarActivity { private Button rotate; private ImageView imageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_edit); rotate=(Button)findViewById(R.id.btn_rotate1); imageView = (ImageView) findViewById(R.id.selectedImage); String path = getIntent().getExtras().getString("path"); final Bitmap bitmap = BitmapFactory.decodeFile(path); imageView.setScaleType(ImageView.ScaleType.FIT_XY); imageView.setImageBitmap(Bitmap.createScaledBitmap(bitmap, 510, 500, false)); rotate.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { imageView.setRotation(90); } }); }
- ¿Cómo se estableceLayoutParams () para un ImageView?
- Cambiar imagen de ImageView por programación Android
- Ampliación de ImageView TOP_CROP
- Cómo configurar BackgroundColor en ImageView en Android?
- Androide: estira la imagen en la vista de la imagen para que se ajuste a la pantalla
- Cómo cambiar dinámicamente la altura de ImageView
- El video no se detiene en el fragmento ViewPager
- Escala de imagen para rellenar el ancho de ImageView y mantener la relación de aspecto
- Escala de ImageView al ancho del dispositivo
- Cómo agregar una sombra y un borde en circular imageView android?
- Android - Dos imágenes vistas lado a lado
- Cambiar el tamaño de ImageView para ajustarse a la relación de aspecto
- ¿Por qué el ImageView no está en pantalla completa?
Cambie su método onClick()
a
@Override public void onClick(View v) { imageView.setRotation(imageView.getRotation() + 90); }
Observe, lo que dicen los docs
Establece los grados en los que se gira la vista alrededor del punto de pivote. Los valores crecientes dan como resultado una rotación en sentido horario.
Me gustaría actualizar mi respuesta para mostrar cómo usar RotateAnimation
para lograr el mismo efecto en caso de que también esté orientado a dispositivos Android con Gingerbread (v10) o inferior.
private int mCurrRotation = 0; // takes the place of getRotation()
Introduzca un campo de instancia para rastrear los grados de rotación como se indica arriba y úselo como:
mCurrRotation %= 360; float fromRotation = mCurrRotation; float toRotation = mCurrRotation += 90; final RotateAnimation rotateAnim = new RotateAnimation( fromRotation, toRotation, imageview.getWidth()/2, imageView.getHeight()/2); rotateAnim.setDuration(1000); // Use 0 ms to rotate instantly rotateAnim.setFillAfter(true); // Must be true or the animation will reset imageView.startAnimation(rotateAnim);
Por lo general uno puede configurar tales animaciones de vista a través de XML también. Pero, puesto que usted tiene que especificar valores de grado absoluto allí, las rotaciones sucesivas se repetirán en lugar de basarse en la anterior para completar un círculo completo. Por lo tanto, elegí mostrar cómo hacerlo en código anterior.
- Error de nombre de archivo no válido en eclipse para las imágenes
- Ancho del elemento RecyclerView layout_width = "match_parent" no coincide con el padre