Frage

Ich habe eine benutzerdefinierte Ansicht, um ein GIF -animiertes Bild anzuzeigen. Das Problem, das geboren wurde, als ich in meinem Linearlayout die benutzerdefinierte Ansicht eingebaut habe, werden die anderen Elemente unter meiner benutzerdefinierten Ansicht nicht angezeigt. Das ist meine Ansicht:

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

Und das ist mein 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>

In der Aktivität füge ich auf diese Weise die benutzerdefinierte Ansicht zum Layout mit ID -LayoutGIF hinzu:

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

was kann ich machen? Ich brauche die Elemente darunter!

War es hilfreich?

Lösung

Der beste Weg ist die Verwendung von Animation. Denken Sie nicht, dass GIF Lösung ist. Es wird nicht von jedem Android -Gerät unterstützt!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top