web-dev-qa-db-fra.com

Android Retourner ImageView verticalement

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?

24
Subby

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.

81
Lamorak

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 :)

2
Ali Goher Shabir

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.

1
Catalina

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.

1
Davideas

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()

0
Xar E Ahmer