2015-03-15 21 views
11

Sto provando a capovolgere e ImageView verticalmente ma semplicemente non funzionerà.Android Flip ImageView Verticalmente

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> 

Il ImageView non sta lanciando a tutti.

Qualcuno sa perché?

risposta

1

Questo potrebbe accadere se la Bitmap che si sta passando al metodo flipImageVertically è il contrario e si passa sempre la stessa bitmap ogni volta. Pubblicare più dettagli potrebbe aiutare a restringere, xml e codice.

+0

Ho aggiunto il codice XML. Sto solo passando nella Bitmap originale. Non lo sto affatto alterando in anticipo. – Subby

+0

La bitmap che si sta passando; proviene da una risorsa o? prova questo booleano statico privato capovolto; public static void flipImageVertically (Bitmap bmp, definitivo ImageView imageView) { final Matrix matrix = new Matrix(); if (capovolto) { matrix.preScale (1.0f, -1.0f); } altro { matrix.preScale (-1.0f, 1.0f); } capovolto =! Capovolto; imageView.setImageBitmap (Bitmap.createBitmap (bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), matrix, true)); } – Catalina

+0

In alternativa, capovolgerà l'immagine capovolta e capovolta in alternativa. – Catalina

51

Controllare this answer. È possibile eseguire medaglia molto facilmente utilizzando un parametro xml

android:scaleY="-1" 

Si noti che questa non funziona in anteprima, solo quando si esegue l'applicazione.
Da Android Studio 2, questo funziona anche in anteprima.

In alternativa è possibile chiamare setScaleY(-1f) sul proprio ImageView nel codice.

+0

Questo non funziona per me. L'ho provato e ancora non si capovolgerà. – Subby

+1

non funziona in anteprima hai provato ad eseguirlo? – Lamorak

0

ottenere drawable dalle risorse

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

e poi

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

Impostare ImageView.setImageBitmap()

1

Giusto per informare che ho sviluppato una nuova libreria FlipView che include ed estende questa animazione specifica (capovolgere). Intendo una libreria completamente personalizzabile in cui potrai scambiare qualsiasi tipo di visualizzazione e layout con qualsiasi tipo di animazione e forma desideri, incluso il lancio delle immagini di Gmail.

Per il caso specifico, l'esempio fornito con la libreria ha anche un flip verticale.

Si prega di dare un'occhiata.

Problemi correlati