web-dev-qa-db-ja.com

Android ImageViewを上下に反転

私は垂直に反転してImageViewしようとしていますが、うまくいきません。

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>

ImageViewはまったく反転していません。

誰もが理由を知っていますか?

24
Subby

この回答 を確認してください。 xmlパラメーターを使用して非常に簡単にフリップを実行できます

_Android:scaleY="-1"
_

これはプレビューでは機能せず、アプリを実行するときのみ機能することに注意してください。
Android Studio 2以降、これはプレビューでも機能します。

または、コードのImageViewsetScaleY(-1f)を呼び出すことができます。

81
Lamorak

私は使った

<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

これにより、画像によって180°回転しますが、画像によってはフリップのように見える場合があります。

お役に立てれば :)

2

これは、flipImageVerticallyメソッドに渡すBitmapが逆で、常に同じビットマップを渡す場合に発生する可能性があります。詳細を投稿すると、XML、コードの絞り込みに役立ちます。

1
Catalina

新しいライブラリ FlipView を開発したことを通知するために、この特定のアニメーション(フリップ)を含めて拡張します。つまり、Gmailの画像反転など、あらゆる種類のビューやレイアウトを、あらゆる種類のアニメーションや希望の形状と交換できる、完全にカスタマイズ可能なライブラリを意味します。

あなたの特定のケースのために、私がライブラリで提供した例には垂直フリップもあります。

ご覧ください。

1
Davideas

リソースからドロアブルを取得する

_Bitmap icon = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.index);
_

その後

_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);
}
_

ImageView.setImageBitmap()を設定します

0
Xar E Ahmer