2016-10-25 4 views
0

내 스플래시 화면에서 .Gif 파일을 구현하고 싶습니다. 완료했습니다. 하지만 전체 화면으로 diply하지 않습니다. 화면의 왼쪽 상단 모서리를 보여줍니다. 솔루션전체 화면으로 .GIF 파일을 표시하는 방법

내 코드 :

<com.App.app.PlayGifView 
    android:id="@+id/viewGif" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    /> 

활동

PlayGifView pGif = (PlayGifView) findViewById(R.id.viewGif); 
    pGif.setImageResource(R.drawable.transit); 

GifActivity :

i get this sample code from google 

    public class PlayGifView extends View { 
    private static final int DEFAULT_MOVIEW_DURATION = 1000; 
    private int mMovieResourceId; 
    private Movie mMovie; 
    private long mMovieStart = 0; 
    private int mCurrentAnimationTime = 0; 
    @SuppressLint("NewApi") 
    public PlayGifView(Context context, AttributeSet attrs) { 
    super(context, attrs); 

    /** 
    * Starting from HONEYCOMB have to turn off HardWare acceleration to draw 
    * Movie on Canvas. 
    */ 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { 
     setLayerType(View.LAYER_TYPE_SOFTWARE, null); 
    } 
    } 

// herei

protected void onDraw(Canvas canvas) { 
    if (mMovie != null){ 
     updateAnimtionTime(); 
     drawGif(canvas); 
     invalidate(); 
    }else{ 
     drawGif(canvas); 
    } 
} 

private void updateAnimtionTime() { 
    long now = android.os.SystemClock.uptimeMillis(); 

    if (mMovieStart == 0) { 
     mMovieStart = now; 
    } 
    int dur = mMovie.duration(); 
    if (dur == 0) { 
     dur = DEFAULT_MOVIEW_DURATION; 
    } 
    mCurrentAnimationTime = (int) ((now - mMovieStart) % dur); 
} 

private void drawGif(Canvas canvas) { 
    mMovie.setTime(mCurrentAnimationTime); 
    mMovie.draw(canvas, 0, 0); 
    canvas.restore(); 
} 
} 
+0

당신은 또한 GIF를로드하는 웹보기를 사용할 수

<SurfaceView android:id="@+id/mygif" android:layout_width="fill_parent" android:layout_height="fill_parent" android:scaleType="fitXY"/>
. –

+0

중복 가능성 : http://stackoverflow.com/questions/20416383/how-to-play-gif-in-android – Nirel

답변

0

surfaceView = (SurfaceView)findViewById(R.id.mygif); 
 
GifRun gifRun = new GifRun(); 
 
gifRun.LoadGiff(surfaceView, this, R.drawable.splashgif);

+0

GifRun 클래스는 @ Prkash Saurav입니다. –

2

퍼팅 시도 내 GIF 파일

public void setImageResource(int mvId){ 
    this.mMovieResourceId = mvId; 
    mMovie =  Movie.decodeStream(getResources().openRawResource(mMovieResourceId)); 
    requestLayout(); 
} 
@Override 
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
    if(mMovie != null){ 
     setMeasuredDimension(mMovie.width(), mMovie.height()); 
    }else{ 
     setMeasuredDimension(getSuggestedMinimumWidth(), getSuggestedMinimumHeight()); 
    } 
} 

@Override 통과

android:scaleType="fitXY" 

INT의 layout.xml 파일