Subversion Repositories SmartDukaan

Rev

Rev 21569 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
21569 rajender 1
package com.saholic.profittill;
2
 
3
import android.content.Context;
4
import android.graphics.Canvas;
5
import android.graphics.Movie;
22122 rajender 6
import android.net.Uri;
7
import android.os.SystemClock;
21569 rajender 8
import android.util.AttributeSet;
22122 rajender 9
import android.util.Log;
21569 rajender 10
import android.view.View;
11
 
22122 rajender 12
import java.io.FileNotFoundException;
21569 rajender 13
import java.io.InputStream;
14
 
15
/**
16
 * Created by rajender on 24/5/17.
17
 */
18
public class GIFView extends View {
19
 
22122 rajender 20
    private InputStream mInputStream;
21
    private Movie mMovie;
22
    private int mWidth, mHeight;
23
    private long mStart;
24
    private Context mContext;
25
 
21569 rajender 26
    public GIFView(Context context) {
27
        super(context);
22122 rajender 28
        this.mContext = context;
21569 rajender 29
    }
30
 
31
    public GIFView(Context context, AttributeSet attrs) {
22122 rajender 32
        this(context, attrs, 0);
33
    }
21569 rajender 34
 
22122 rajender 35
    public GIFView(Context context, AttributeSet attrs, int defStyleAttr) {
36
        super(context, attrs, defStyleAttr);
37
        this.mContext = context;
38
        if (attrs.getAttributeName(1).equals("background")) {
39
            int id = Integer.parseInt(attrs.getAttributeValue(1).substring(1));
40
            setGifImageResource(id);
41
        }
21569 rajender 42
    }
22122 rajender 43
 
44
 
45
    private void init() {
46
        setFocusable(true);
47
        mMovie = Movie.decodeStream(mInputStream);
48
        mWidth = mMovie.width();
49
        mHeight = mMovie.height();
50
 
51
        requestLayout();
21569 rajender 52
    }
22122 rajender 53
    @Override
54
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
55
        setMeasuredDimension(mWidth, mHeight);
21569 rajender 56
    }
57
 
58
    @Override
59
    protected void onDraw(Canvas canvas) {
60
 
22122 rajender 61
        long now = SystemClock.uptimeMillis();
62
 
63
        if (mStart == 0) {
64
            mStart = now;
21569 rajender 65
        }
22122 rajender 66
 
21569 rajender 67
        if (mMovie != null) {
22122 rajender 68
 
69
            int duration = mMovie.duration();
70
            if (duration == 0) {
71
                duration = 1000;
72
            }
73
 
74
            int relTime = (int) ((now - mStart) % duration);
75
 
21569 rajender 76
            mMovie.setTime(relTime);
22122 rajender 77
 
78
            mMovie.draw(canvas, 0, 0);
79
            invalidate();
80
        }
21569 rajender 81
    }
82
 
22122 rajender 83
    public void setGifImageResource(int id) {
84
        mInputStream = mContext.getResources().openRawResource(id);
85
        init();
86
    }
87
    public void setGifImageUri(Uri uri) {
88
        try {
89
            mInputStream = mContext.getContentResolver().openInputStream(uri);
90
            init();
91
        } catch (FileNotFoundException e) {
92
            Log.e("GIfImageView", "File not found");
93
        }
94
    }
95
}
21569 rajender 96