Android Flip 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
не переворачивается вообще.
Кто-нибудь знает, почему?
Ответы
Ответ 1
Отметьте этот ответ. Вы можете легко выполнить флип, используя параметр xml
android:scaleY="-1"
Обратите внимание, что это не работает в предварительном просмотре, только при запуске приложения.
Начиная с Android Studio 2, это также работает в превью.
В качестве альтернативы вы можете вызвать setScaleY(-1f)
в своем ImageView
в коде.
Ответ 2
я использовал
<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 °, что может выглядеть как переворот, в зависимости от вашего изображения.
Надеюсь это поможет :)
Ответ 3
Это может произойти, если битмап, который вы передаете методу flipImageVertically, является обратным, и вы всегда передаете одно и то же растровое изображение каждый раз.
Проводка более подробной информации может помочь сузить, xml и код.
Ответ 4
Просто чтобы сообщить, что я разработал новую библиотеку FlipView, которая включает и расширяет эту конкретную анимацию (flip). Я имею в виду полностью настраиваемую библиотеку, в которой вы сможете менять любые виды и макеты с любой анимацией и фигурами, которые вы хотите, включая отображение изображений Gmail.
В вашем конкретном случае пример, предоставленный библиотекой, также имеет вертикальный флип.
Пожалуйста, смотрите.
Ответ 5
получить выделение из ресурсов
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()