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