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"
就可以。
写的点有乱,希望能帮助大家
- Android gif 加载方式
- Android加载GIF图片的两种方式
- Android 加载gif动画
- android加载GIF动画
- android 加载gif
- android加载gif图片
- Android 加载gif图片
- Android加载gif图
- Android加载GIF动画
- Android加载gif图片
- android加载gif图片
- android-加载网络Gif和本地Gif
- Android 加载.gif格式图片
- Android中加载Gif动画图片
- Android中加载Gif图片
- android中加载Gif图片
- Android GIF图片加载显示
- 在Android中加载gif
- Android学习笔记——webview 适配相关(不定期更贴填坑)
- UVa1586
- iOS开发之Objective-c的MD5/SHA1加密算法的实现
- StateThreads--高性能、高并发、高扩展性和可读性的网络服务器架构
- [Git]Git常用命令清单
- Android gif 加载方式
- Nginx+Tomcat搭建高性能负载均衡集群
- A除以B
- LovelyToast
- Android AppBarLayout+TabLayout+RecyclerView+ViewPager+Fragment
- Spring MVC静态资源处理
- liunx 生成证书题keytool 命令找不到
- ETL工具Kettle的基本使用
- 文章标题