Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.media_app.media_app;
- import android.content.Context;
- import android.graphics.Canvas;
- import android.graphics.Movie;
- import android.util.AttributeSet;
- import android.view.View;
- import java.io.InputStream;
- public class GIFView extends View {
- private InputStream gifInputStream;
- private Movie gifMovie;
- private int movieWidth, movieHeight;
- private long movieDuration;
- private long mMovieStart;
- public GIFView(Context context) {
- super(context);
- init(context);
- }
- public GIFView(Context context, AttributeSet attrs) {
- super(context, attrs);
- init(context);
- }
- public GIFView(Context context, AttributeSet attrs,
- int defStyleAttr) {
- super(context, attrs, defStyleAttr);
- init(context);
- }
- private void init(Context context) {
- setFocusable(true);
- gifInputStream = context.getResources().openRawResource(R.drawable.flower);
- gifMovie = Movie.decodeStream(gifInputStream);
- movieWidth = gifMovie.width();
- movieHeight = gifMovie.height();
- movieDuration = gifMovie.duration();
- }
- @Override
- protected void onMeasure(int widthMeasureSpec,
- int heightMeasureSpec) {
- setMeasuredDimension(movieWidth, movieHeight);
- }
- public int getMovieWidth() {
- return movieWidth;
- }
- public int getMovieHeight() {
- return movieHeight;
- }
- public long getMovieDuration() {
- return movieDuration;
- }
- @Override
- protected void onDraw(Canvas canvas) {
- long now = android.os.SystemClock.uptimeMillis();
- if (mMovieStart == 0) { // first time
- mMovieStart = now;
- }
- if (gifMovie != null) {
- int dur = gifMovie.duration();
- if (dur == 0) {
- dur = 1000;
- }
- int relTime = (int) ((now - mMovieStart) % dur);
- gifMovie.setTime(relTime);
- canvas.scale((float)this.getWidth() / (float)gifMovie.width(),(float)this.getHeight() / (float)gifMovie.height());
- //canvas.scale(1.9f, 3.21f);
- gifMovie.draw(canvas,0, 0);
- invalidate();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement