2011-10-18 30 views
0

我有一個自定義視圖來顯示gif動畫圖像。出現問題時,我把我的linearlayout自定義視圖,我的自定義視圖下的其他元素不顯示。這是我的看法:自定義視圖使上述元素在xml中不可見

public class GIFView extends View{   
private Movie movie; 
private InputStream is; 
private long moviestart; 
private long duration; 

public GIFView(Context context) { 
    super(context); 
    is=getResources().openRawResource(R.drawable.anim_cerca); 
    movie=Movie.decodeStream(is); 
    duration = movie.duration(); 
} 

public GIFView(Context context,AttributeSet set){ 
    super(context,set); 
    is=getResources().openRawResource(R.drawable.anim_cerca); 
    movie=Movie.decodeStream(is); 
    duration = movie.duration(); 
} 

public GIFView(Context context,AttributeSet set,int def){ 
    super(context,set,def); 
    is=getResources().openRawResource(R.drawable.anim_cerca); 
    movie=Movie.decodeStream(is); 
    duration = movie.duration(); 
} 

@Override 
protected void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 
    long now=android.os.SystemClock.uptimeMillis(); 
    Paint p = new Paint(); 
    p.setAntiAlias(true); 
    if (moviestart == 0) 
     moviestart = now; 

    int relTime = (int)((now - moviestart) % duration); 

    movie.setTime(relTime); 
    movie.draw(canvas,0,0); 


    this.invalidate(); 
    }       
}  

,這是我的佈局XML:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" android:layout_width="match_parent" 
android:layout_height="match_parent" android:background="@drawable/sfondo"> 
<LinearLayout android:id="@+id/linearLayout2" 
    android:layout_height="wrap_content" android:layout_width="match_parent" 
    android:orientation="vertical"> 
    <LinearLayout android:id="@+id/linearLayout1" 
     android:layout_height="fill_parent" android:weightSum="1" 
     android:layout_width="fill_parent" android:orientation="horizontal"> 
     <ImageView android:layout_height="73dp" android:id="@+id/imageView1" 
      android:layout_weight="0.25" android:src="@drawable/trovachiavi" 
      android:layout_width="256dip"></ImageView> 
     <ImageButton android:id="@+id/infoButton" 
      android:background="@null" android:layout_height="47dp" 
      android:layout_marginLeft="10dip" android:layout_weight="0.25" 
      android:layout_marginTop="15dip" android:src="@drawable/info_mini" 
      android:layout_width="47dp"></ImageButton> 
    </LinearLayout> 
</LinearLayout> 
<LinearLayout android:id="@+id/layoutGIF" 
    android:layout_height="wrap_content" android:layout_width="wrap_content" 
    android:orientation="vertical" 
    android:layout_gravity="center"> 
</LinearLayout> 
<ImageButton android:id="@+id/avvia_cerca" 
    android:layout_height="wrap_content" android:layout_width="wrap_content" 
    android:layout_marginTop="10dp" android:layout_gravity="center|bottom" 
    android:background="@null"></ImageButton> 
</LinearLayout> 

在我添加自定義視圖ID爲layoutGIF佈局這樣的活動:

LinearLayout lg = (LinearLayout)findViewById(R.id.layoutGIF); 
lg.setGravity(Gravity.CENTER); 
gif = new GIFView(this); 
lg.addView(gif, new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT)); 

我能做什麼?我需要這個元素!

+0

您可以使用包名稱將視圖添加到xml中,並查看它如何呈現。希望這可以幫助。 –

+0

,你可以在這裏看到http://stackoverflow.com/questions/7795051/how-to-use-custom-views-in-layout-xml/7795114#comment9507382_7795114我有一個更糟的問題直接添加到XML – JackTurky

回答

0

最好的方法是使用動畫..不認爲該gif是解決方案..不支持從每個Android設備!

相關問題