2011-10-18 2 views
0

gif 애니메이션 이미지를 표시하는 사용자 정의보기가 있습니다. 내 customLayoutout에 사용자 정의보기를 넣을 때 생기는 문제는 사용자 정의보기 아래에있는 다른 요소가 표시되지 않습니다. 이것은 내보기입니다 :사용자 정의보기가 위의 요소를 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는 해결책이라고 생각하지 않습니다. 모든 안드로이드 장치에서 지원되지 않습니다!