当前位置: 首页 > 工具软件 > GifView > 使用案例 >

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

农存
2023-12-01

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"

/>

 类似资料: