Android gif 加载方式

来源:互联网 发布:淘宝双十二报名入口 编辑:程序博客网 时间:2024/04/25 20:57

最近在做一个项目,项目要求加载 gif图片,而且是自适应各种手机,查找了很多资料,也搜了一些关于Android加载 gif动图的方式

总结如下:

1,直接使用Animation 方法加载 一组图片,然后进行播放(网上有很多例子就不在说明了)

2,直接自定义控件显示gif动图(附件为源码,此源码本人亲自验证)

第一种方法网上有很多例子就不在说明了,重点说下第二种方法要注意的地方:

1,AndroidManifest.xml文中添加android:hardwareAccelerated="false" 使用硬件不加速显示

2,重写onMeasure方法,在此重新计算长宽,代码如下:

 protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    if (mMovie != null) {
/*
* Calculate horizontal scaling
*/
float scaleW = 1f;
int measureModeWidth = MeasureSpec.getMode(widthMeasureSpec);
if (measureModeWidth != MeasureSpec.UNSPECIFIED) {
int maximumWidth = MeasureSpec.getSize(widthMeasureSpec);
scaleW = (float) mImageWidth / (float) maximumWidth;
}
/*
* calculate vertical scaling
*/
float scaleH = 1f;
int measureModeHeight = MeasureSpec.getMode(heightMeasureSpec);
if (measureModeHeight != MeasureSpec.UNSPECIFIED) {
int maximumHeight = MeasureSpec.getSize(heightMeasureSpec);
scaleH = (float) mImageHeight / (float) maximumHeight;
}
/*
* calculate overall scale
*/
mScale = 1f / Math.max(scaleH, scaleW);
mMeasuredGifWidth = (int) (mImageWidth * mScale);
mMeasuredGifHeight = (int) (mImageHeight * mScale);
        setMeasuredDimension(mMeasuredGifWidth, mMeasuredGifHeight);
    }
  }


3,注意控件使用时的长宽设置

高宽自适应 如下:

<com.hx.gifimageview.GifImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="10dp"
        android:src="@drawable/readcard"
        attr:auto_play="true" />


也可以指定高宽

android:layout_width="150dp"
        android:layout_height="150dp"

就可以。


写的点有乱,希望能帮助大家



0 0
原创粉丝点击