Domanda

Ho una visualizzazione personalizzata per mostrare un'immagine gif animate. Il problema nasce quando ho messo nel mio LinearLayout la visualizzazione personalizzata, gli altri elementi sotto la mia visualizzazione personalizzata non vengono visualizzati. questa è la mia opinione:

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

e questo è il mio layout 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>

nell'attività aggiungo la visualizzazione personalizzata a disposizione con id layoutGIF in questo modo:

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

cosa posso fare? ho bisogno di elementi in questo!

È stato utile?

Soluzione

miglior modo è usare l'animazione .. non credo che gif è la soluzione .. non è supportato da tutti i dispositivi Android!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top