私は垂直に反転して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
はまったく反転していません。
誰もが理由を知っていますか?
この回答 を確認してください。 xmlパラメーターを使用して非常に簡単にフリップを実行できます
_Android:scaleY="-1"
_
これはプレビューでは機能せず、アプリを実行するときのみ機能することに注意してください。
Android Studio 2以降、これはプレビューでも機能します。
または、コードのImageView
でsetScaleY(-1f)
を呼び出すことができます。
私は使った
<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°回転しますが、画像によってはフリップのように見える場合があります。
お役に立てれば :)
これは、flipImageVerticallyメソッドに渡すBitmapが逆で、常に同じビットマップを渡す場合に発生する可能性があります。詳細を投稿すると、XML、コードの絞り込みに役立ちます。
新しいライブラリ FlipView を開発したことを通知するために、この特定のアニメーション(フリップ)を含めて拡張します。つまり、Gmailの画像反転など、あらゆる種類のビューやレイアウトを、あらゆる種類のアニメーションや希望の形状と交換できる、完全にカスタマイズ可能なライブラリを意味します。
あなたの特定のケースのために、私がライブラリで提供した例には垂直フリップもあります。
ご覧ください。
リソースからドロアブルを取得する
_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()
を設定します