自定义gif android,Android自定义GifView显示gif动画

com.ncs.msg.ui.widget;

android.content.Context;

android.content.res.TypedArray;

android.graphics.Canvas;

android.graphics.Movie;

android.util.AttributeSet;

android.view.View;

com.ncs.msg.R;

java.io.ByteArrayOutputStream;

java.io.InputStream;

GifView View {

Movie ;

;

= ;

;

;

;

;

GifView(Context context) {

(context);

init(context, );

}

GifView(Context context, AttributeSet set) {

(context, set);

init(context, set);

}

init(Context context, AttributeSet set) {

TypedArray a = context.obtainStyledAttributes(set,

R.styleable.);

= a.getResourceId(R.styleable., -);

= a.getBoolean(R.styleable., );

= a.getInteger(

R.styleable., );

a.recycle();

setFocusable();

java.io.InputStream is;

is = context.getResources().openRawResource();

() {

= Movie.(is);

} {

[] array = (is);

= Movie.(array, , array.);

}

}

onDraw(Canvas canvas) {

(!= ) {

(!) {

updateAnimationTime();

drawMovieFrame(canvas);

invalidate();

} {

drawMovieFrame(canvas);

}

}

}

updateAnimationTime() {

now = android.os.SystemClock.();

(== ) {

= now;

}

dur = .duration();

(dur == ) {

dur = ;

}

= () ((now - ) % dur);

}

drawMovieFrame(Canvas canvas) {

.setTime();

canvas.save(Canvas.);

.draw(canvas, , );

canvas.restore();

}

setPaused(paused) {

.= paused;

(!paused) {

= android.os.SystemClock.()

- ;

}

invalidate();

}

isPaused() {

.;

}

onMeasure(widthMeasureSpec, heightMeasureSpec) {

widthMode = MeasureSpec.(widthMeasureSpec);

widthSize = MeasureSpec.(widthMeasureSpec);

heightMode = MeasureSpec.(heightMeasureSpec);

heightSize = MeasureSpec.(heightMeasureSpec);

width;

height;

(widthMode == MeasureSpec.) {

width = widthSize;

} {

desired = () (getPaddingLeft() + .width() + getPaddingRight());

width = Math.(desired, widthSize);

}

(heightMode == MeasureSpec.) {

height = heightSize;

} {

desired = () (getPaddingTop() + .height() + getPaddingBottom());

height = Math.(desired, heightSize);

}

setMeasuredDimension(width, height);

}

[] streamToBytes(InputStream is) {

ByteArrayOutputStream os = ByteArrayOutputStream();

[] buffer = [];

len;

{

((len = is.read(buffer)) >= ) {

os.write(buffer, , len);

}

} (java.io.IOException e) {

}

os.toByteArray();

}

}

android:id="@+id/image_view"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerInParent="true"

android:background="#ffffff"

gif:decode_stream="true"

gif:default_animation_time="1000"

gif:gif_src="@drawable/corporate_login"

/>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值