Android Flip ImageView verticalmente
(5)
Comprueba esta respuesta . Puedes realizar flip fácilmente usando un parámetro xml
android:scaleY="-1"
Tenga en cuenta que esto no funciona en la vista previa, solo cuando ejecuta la aplicación.
Desde Android Studio 2, esto también funciona en la vista previa.
Alternativamente, puede llamar a setScaleY(-1f)
en su código de ImageView
.
Estoy tratando de voltear e ImageView
verticalmente pero simplemente no funciona.
Java:
public static void flipImageVertically(final Bitmap bmp, final ImageView imageView) {
final Matrix matrix = new Matrix();
matrix.preScale(1.0f, -1.0f);
imageView.setImageBitmap(Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), matrix, true));
}
XML:
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1">
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@color/red" />
</LinearLayout>
El ImageView
no está volteando en absoluto.
Alguien sabe por qué?
Esto podría suceder si el Bitmap que está pasando al método flipImageVertically es al revés y siempre está pasando el mismo bitmap cada vez. Publicar más detalles podría ayudar a reducir, xml y código.
Solo para notificar que he desarrollado una nueva biblioteca FlipView que incluye y amplía esta animación específica (voltear). Me refiero a una biblioteca completamente personalizable donde podrás intercambiar cualquier tipo de vistas y diseños con cualquier tipo de animación y formas que desees, incluido el cambio de imagen de Gmail.
Para su caso específico, el ejemplo que proporcioné con la biblioteca también tiene una tapa vertical.
Por favor échale un vistazo.
solía
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="YOUR_DRAWABLE_HERE"
android:rotation="180"/> // USE THIS TO FLIP IMAGE
Espero que esto ayude :)
obtener lo dibujable de los recursos
Bitmap icon = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.index);
y entonces
public static Bitmap flip(Bitmap src, Direction type) {
Matrix matrix = new Matrix();
if(type == Direction.VERTICAL) {
matrix.preScale(1.0f, -1.0f);
}
else if(type == Direction.HORIZONTAL) {
matrix.preScale(-1.0f, 1.0f);
} else {
return src;
}
return Bitmap.createBitmap(src, 0, 0, src.getWidth(), src.getHeight(), matrix, true);
}
Establecer ImageView.setImageBitmap()