目錄
準(zhǔn)備
movie 類專用于 gif 播放僻弹。
movie 有duration
movie.setTime(int time)---> movie.draw(canvas, 0, 0) 可以將 move的對(duì)應(yīng)時(shí)刻圖像繪制在canvas之上晕城。
思路
1.獲取movie
2.開啟線程 根據(jù)人 視角 25ms 繪制一次
演示
動(dòng)圖制作不容易...靜態(tài)圖代替
代碼
代碼簡(jiǎn)單夜郁,利于學(xué)習(xí)入門翰萨,但不利于使用。
public class MyGifView extends View {
private Movie movie;
private int duration = 0;
private int now = 0;
public MyGifView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
//獲取movie 時(shí)長
movie = Movie.decodeStream(getResources().openRawResource(R.drawable.test));
duration = movie.duration();
//開始播放 25ms刷新一次
new Timer().schedule(new TimerTask() {
@Override
public void run() {
now += 25;
if (now < duration)
invalidate();
}
}, 0, 25);
}
/**
* 繪制
* setTime
* 設(shè)置canvas縮放比例
* draw 在 左上角坐標(biāo) 0玩裙,0
* @param canvas
*/
@Override
protected void onDraw(Canvas canvas) {
movie.setTime(now);
canvas.scale((float)getWidth()/movie.width(),(float)getHeight()/movie.height());
movie.draw(canvas, 0, 0);
}
}