2015-05-04 172 views
-1

我有一個由一個PNG文件組成的imageview。我想根據4個不同的事件(4個不同的PNG)更改此圖像視圖的來源。 目前我使用imageView.setImageResource更改源代碼,但這有滯後性,並導致大量Choreographer警告。 有更好的方法嗎?什麼是改變圖像視圖來源的最佳方式?

+5

您可以發佈您的當前代碼嗎? – Jejefcgb

+0

你正在做UIThread的工作,沒有任何動畫。發佈您的代碼並嘗試改進這兩點。 – shkschneider

+0

使用圖像加載器庫 –

回答

0

您可以將四個ImageView放在彼此的頂部,然後根據要顯示的內容更改可見性。在將圖片加載到內存方面不會有任何滯後,因爲它們已經在那裏了。只要確保這些照片是不是太內存密集型

代碼:

if (something) 
    imageview1.setVisibility(View.VISIBLE); 
else if (something) 
    imageview2.setVisibility(View.GONE); 

RelativeLayout的默認堆看法彼此的頂部。在linearlayout中設置visibility.gone也可能使視圖「堆疊」。 XML:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" android:layout_height="match_parent"> 

    <ImageView 
     android:id="@+id/pic1" 
     android:layout_width="100dp" 
     android:layout_height="100dp" 
     android:src="@drawable/pic1" 
     android:visibility="visible" 
     android:contentDescription="default picture"/> 
    <ImageView 
     android:id="@+id/pic2" 
     android:layout_width="100dp" 
     android:layout_height="100dp" 
     android:src="@drawable/pic2" 
     android:visibility="invisible" 
     android:contentDescription="pic2"/> 
    <ImageView 
     android:id="@+id/pic3" 
     android:layout_width="100dp" 
     android:layout_height="100dp" 
     android:src="@drawable/pic3" 
     android:visibility="invisible" 
     android:contentDescription="pic3"/> 

    <ImageView 
     android:id="@+id/pic4" 
     android:layout_width="100dp" 
     android:layout_height="100dp" 
     android:src="@drawable/pic4" 
     android:visibility="invisible" 
    android:contentDescription="pic4"/> 
</RelativeLayout> 
0

您可以擁有4個imageViews而不是一個,它們已經加載了4張圖像,並調整了這些圖像必須可見的imageViews的可見性。

像這樣,您不需要在執行期間更改任何imageView的源代碼(只是可見性),並且將擺脫加載/解碼時間。

+0

但是,您將使用更多的內存。 –

相關問題