安卓开发,关于动态图显示及缩放
来源:互联网 发布:皮影客动画软件 编辑:程序博客网 时间:2024/05/17 07:32
最开始做的时候,百度了一下
发现了有一个叫做gifView的第三方包,开始用上去还不错,后来发现不能释放资源,源码也并没有怎么完善,加载过程中若进行了第二次加载就会报空指针。
通过重新new对象可以解决问题,但这样多次操作会造成内存溢出(源码对外暴露的方法中,并没有释放资源这个方法)。
若只是做简单的显示,可以直接使用这个第三方包。
具体操作请自行百度。
------------------------------------------请叫我分割线-------------------------------------------------
使用webView可以直接显示动态图。
用web.loadDataWithBaseURL(null, str_html, "text/html","utf-8", null);
这里用html代码来加载sdcard或者网络上的图片
备注:为什么不直接用load方法而是用loadDataWithBaseURL这个方法,原因是我在用的时候,load读不出图,具体为什么不知道= =。。。。。
网络图片不多说,直接放url地址即可,
本地sdcard图片,格式为:file:///sdcardRoot/filePath
具体例子:str_html = "<html><title>图片显示</title></head><body><table style=\"width:100%; height:auto;\" ><tr><td valign=\"middle\" width=\"100%\" height=\"auto\"> <img src=\"file:///"+ list.get(current_index)+ "\" width=\"100%\" height=\"auto\"/></td></tr></table></body></html>";
这里说明一下,之所以使用table,是因为后面要做放大和缩小
这里实现原理为:若宽大于高,则用宽填充,高为自适应。反之则用高填充,宽自适应。这个时候改变webView的大小,看上去就像改变了动态图的大小,因为里面的图片始终是按照比例来填充。
具体显示:
基于保持图片宽高比(失去宽高比将导致拉伸,让图片变得模糊),所以用bitmap先读取图片的原图宽高
int width = bitmap.getWidth();
int height = bitmap.getHeight();
判断图片的宽大还是高大,若宽大于高,这用宽填充,高位自适应。反之则用高填充,宽自适应(交换html代码中 100%和auto的位置即可)。
缩放:
在使用iwebVew的时候,直接设置具体宽高,可以为原图宽高,也可以为某一固定值,或者屏幕百分比
备注:获取屏幕的宽高为:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int dis_width = metrics.widthPixels;
int dis_height = metrics.heightPixels;
动态设置宽高:例如:
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(width,height);
web.setLayoutParams(params);
自己设置缩放比率,比如我这边设置的是放大,为1.25,缩小为0.8
所以我这边当放大时,用webView的宽高乘以1.25(因为webView的宽高是直接设定的,所以知道它们的具体值)
缩小也一样,用iwebVew的宽高乘以0.8
这样,就可以实现动态图的缩放了
至于动态图的旋转,我应该是没见过有这个功能。。。。所以没考虑
如果涉及到切换显示,设置好路径,让上面的代码重新运行一遍即可。
注意:如果存在图片缓存变量,每次切换显示的时候重置。
有任何想法可以给我留言,期待一起进步,
- 安卓开发,关于动态图显示及缩放
- 安卓开发,关于静态图显示,缩放以及旋转
- Qt中关于QLabel等其显示内容的缩放与对齐,动态图的显示
- Android安卓开发中图片缩放
- 安卓开发入门之图片缩放
- 安卓开发 轮播图Banner+缩放PhotoView
- 安卓动态壁纸开发
- 安卓-BitMap缩放
- 安卓图片缩放
- Android安卓开发中图片缩放讲解
- Android安卓开发中图片缩放讲解
- 安卓开发入门之图片缩放(翻译)
- Qt中QLabel显示动态图的平滑缩放
- 关于在jsp页面显示当前时间及动态显示
- 《安卓应用开发学习》——关于ListView不显示内容的问题
- 安卓开发关于图片保存到本地相册并显示功能
- Xamarin安卓开发:去掉Activity的头部标题栏及全屏显示
- 安卓开发动态设置全屏
- 微软官方大秀DX12:性能暴涨50%
- c++第一次试验项目三
- 项目4-用循环求解
- 用循环求
- Android开发环境的搭建——Android Studio
- 安卓开发,关于动态图显示及缩放
- Ubuntu 安装和配置postgresql
- .net 获取当前电脑域账号
- js中的类型转换问题
- 建造者模式
- 正则匹配中\、{}、()和|的作用
- bzoj4358 perm
- ffmpeg常用基本命令
- MyBatis框架初识