2017-03-20 3 views
2

Ich versuche, ein GIF in XML Android Studio hinzufügenGIF in Android Studio Hinzufügen

Es funktioniert auf dem ersten gut, aber wenn ich Android Studio schließen und wieder öffnet wieder es gibt ich Fehler!

Auch ich habe versucht, GIF Qualität und seinen Platz zu senken, funktioniert es zunächst gut, aber gibt Fehler nach dem Neustart!

Hier ist meine XML-Code:

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="#fff" 
    android:orientation="vertical"> 

    <pl.droidsonroids.gif.GifImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/myimg"/> 
</LinearLayout> 

Fehler

enter image description here

+0

versuchen Ihr Projekt seine Rendering-Problem –

Antwort

0

dies versuchen, für mich zu arbeiten

Legen Sie Ihre GIF-Datei in Drawable folde r

erstellen Klasse GifImageView.java

public class GifImageView extends View { 

     private InputStream mInputStream; 
     private Movie mMovie; 
     private int mWidth, mHeight; 
     private long mStart; 
     private Context mContext; 

     public GifImageView(Context context) { 
     super(context); 
     this.mContext = context; 
     } 

     public GifImageView(Context context, AttributeSet attrs) { 
     this(context, attrs, 0); 
     } 

     public GifImageView(Context context, AttributeSet attrs, int defStyleAttr) { 
     super(context, attrs, defStyleAttr); 
     this.mContext = context; 
     if (attrs.getAttributeName(1).equals("background")) { 
      int id = Integer.parseInt(attrs.getAttributeValue(1).substring(1)); 
      setGifImageResource(id); 
     } 
     } 


     private void init() { 
     setFocusable(true); 
     mMovie = Movie.decodeStream(mInputStream); 
     mWidth = mMovie.width(); 
     mHeight = mMovie.height(); 

     requestLayout(); 
     } 

     @Override 
     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
     setMeasuredDimension(mWidth, mHeight); 
     } 

     @Override 
     protected void onDraw(Canvas canvas) { 

     long now = SystemClock.uptimeMillis(); 

     if (mStart == 0) { 
      mStart = now; 
     } 

     if (mMovie != null) { 

      int duration = mMovie.duration(); 
      if (duration == 0) { 
      duration = 1000; 
      } 

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

      mMovie.setTime(relTime); 

      mMovie.draw(canvas, 0, 0); 
      invalidate(); 
     } 
     } 

     public void setGifImageResource(int id) { 
     mInputStream = mContext.getResources().openRawResource(id); 
     init(); 
     } 

     public void setGifImageUri(Uri uri) { 
     try { 
      mInputStream = mContext.getContentResolver().openInputStream(uri); 
      init(); 
     } catch (FileNotFoundException e) { 
      Log.e("GIfImageView", "File not found"); 
     } 
     } 
    } 

in Ihrer .xml-Datei

<com.gifLoader.GifImageView // **of your GifImageView.java** 
     android:id="@+id/GifImageView" 
     android:layout_height="@dimen/txt_size_1" 
     android:layout_width="@dimen/txt_size_1" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" 
     android:layout_marginBottom="@dimen/sb_progrees_margin_lr" 
     android:layout_centerInParent="true" /> 

und in dir Aktivität r

GifImageView gifImageView = (GifImageView) findViewById(R.id.GifImageView); 
gifImageView.setGifImageResource(R.drawable.ring); 
+0

was "setGifImageResource" bezieht wieder aufbauen? –

+0

Hallo, was bedeutet in Ihrem XML? –

+0

Ihre .xml-Datei, wo Sie @VitaliPetrov –

Verwandte Themen