J'essaie de retourner et ImageView
verticalement mais cela ne fonctionnera pas.
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>
Le ImageView
ne retourne pas du tout.
Quelqu'un sait pourquoi?
Vérifiez cette réponse . Vous pouvez effectuer un retournement très facilement en utilisant un paramètre xml
Android:scaleY="-1"
Notez que cela ne fonctionne pas dans l'aperçu, uniquement lorsque vous exécutez l'application.
Depuis Android Studio 2, cela fonctionne également en préversion.
Vous pouvez également appeler setScaleY(-1f)
sur votre ImageView
en code.
J'ai utilisé
<ImageView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:src="YOUR_DRAWABLE_HERE"
Android:rotation="180"/> // USE THIS TO ROTATE THE IMAGE
Cela fait pivoter l'image de 180 °, ce qui peut ressembler à un retournement, selon votre image.
J'espère que cela t'aides :)
Cela peut se produire si le bitmap que vous passez à la méthode flipImageVertically est l'inverse et que vous passez toujours le même bitmap à chaque fois. La publication de plus de détails pourrait aider à affiner, xml et code.
Juste pour notifier que j'ai développé une nouvelle bibliothèque FlipView qui inclut et étend cette animation spécifique (flip). Je veux dire une bibliothèque entièrement personnalisable où vous pourrez échanger tout type de vues et de mises en page avec tout type d'animation et de formes que vous désirez, y compris le retournement d'image Gmail.
Pour votre cas spécifique, l'exemple que j'ai fourni avec la bibliothèque a également un retournement vertical.
Jetez un coup d'oeil s'il vous plait.
récupérez le tirage des ressources
Bitmap icon = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.index);
puis
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);
}
Définissez ImageView.setImageBitmap()