登录 立即注册
安币:

安卓巴士 - 安卓开发 - Android开发 - 安卓 - 移动互联网门户

查看: 1154|回复: 12

图片加载显示进度效果->Drawable注入|【Bus Weekly】二十五期

[复制链接]
 成长值: 3690

3010

主题

3339

帖子

9330

安币

VIP3

积分
4267

签到达人活跃会员推广达人优秀版主元老勋章明星会员

QQ
发表于 2016-10-31 16:35:08 | 显示全部楼层 |阅读模式
分析
从网络上加载图片是一种耗时的操作,当加载的图片体积越大,消耗的时间也会更长。向ImageView添加一个进度条的话,可以起到一定的效果。而在我们Android里面,据我了解,想实现ImageView添加进度条的方法有两种:
1.新建一个类extends ImageView,在draw()方法里面画进度。
2.可以在你的ImageView外围添加RelativeLayout,然后,在里面加多一个ProgressBar。
LoadingProgress用的都不是以上两种方法。而是采用了extends Drawable的形式,然后注入到ImageView图层上面。
pc-885b785c-6b37-11e4-a037-00163e001348.png
对比
先从上面第二种来说,在外围嵌套RelativeLayout再放多一个ProgressBar,如果在ListView里面这样来写的话,性能绝对会受到影响,因为多绘制两个控件,Android就要多点耗时时间,内存也会占用。
第一种和我的那种对比的话,我的那种可能会相对占用一点内存,但是相对的,灵活性和扩展性就高了,为什么这样说呢?比如,你有时候需要用到手势缩放这种Extends ImageView的控件,总不可能继承与手势缩放,再重新封装代码对吧?
我的只要是继承于ImageView和可以监听到下载图片进度的回调,都可以实现像QQ和微信那种加载进度条,可以动态的调整圆环大小和字体大小,颜色和其他的。
附上效果图
用法
[Java] 查看源文件 复制代码
    //用法也是挺简单的,只需要几行代码
    CircleProgress progress = new CircleProgress.Builder()
    
    // .....从建造者里面设置你的属性,园底层颜色,进度颜色,字体大小颜色等..
                        .build();//返回CircleProgress


    /**********
    * 如果你不想圆形进度条,你可以使用其他的进度条
    * 比如:RectangleProgress(长形进度条)
    * RotateProgress(实现自动旋转的进度条)
    * LevelProgress(这个我也不好解析,类似效果图水杯的那种效果)
    */
    //对于使用Fresco框架的
    progress.injectFresco(target);//SimpledraweeView
    //除了Fresco框架其他的,均使用这个方法
    progress.inject(target);//target为你的ImageView
    //接着加载你的图片把
最后,你需要监听到图片下载进度变化的事件,Fresco框架的不需要。
在你的进度回调方法里面:
[Java] 查看源文件 复制代码
    @Override
    public void update(long current,long total){
        //当前进度值
        progress.setLevel((int)current);
        //最大进度值
        progress.setMaxValue(total);
    }
对于使用Glide和Picasso框架的人来说,获取进度变化的回调可能会有点困难,不过可参考我的DEMO,使用Okhttp3拦截进度事件,不过也有点问题,特别大的图片加载不出来,我也不太了解OKhttp3进度获取,希望有人能指点一下我!
Github


【Bus Weekly】二十五期
【一周优秀博文】
完美Model层之sqldelight使用

Android Webview和js交互

ViewPager卡顿优化实战

Android Studio六种依赖

实现微信图片加载显示进度效果->Drawable注入

[译] ProGuard 选项

Android studio的live templates汇总

老司机带你了解Android的handler机制

Android 动画总结
【一周Android精品源码推荐】

Android水波纹效果

ViewPager做滑动广告页面(首次使用要看广告)

高仿淘宝下拉刷新控件

一个Adapter搞定仿qq侧滑删除菜单

Android MD风格控件

TextInputLayou包裹EditText创建账户登陆

使用ViewPager实现的广告栏

使用MVP模式简单地展示知乎日报主页及内容

recyclerview 下拉刷新和加载更多

简单封装的一个item,仿照微信

Android显示多图或item的View


【一周优秀实例教程】

想要亲手实现一个刷新控件,你只需要掌握这些知识

Android App 线上热修复方案

在Android 5.0中使用JobScheduler

使用RxBinding处理控件异步调用

RxVolley介绍与应用

Android日历组件快速集成方案

使用Android Studio,新建library并发布到jCenter

Okhttp-wiki 之 Interceptors 拦截器


Android重绘优化实战

第二十五周巴士之星公布


精品源码热心巴友:陈苗辉万年潜水艇dalong982242

问答区热心巴友:lilongfei0504,蛋糕

see you 咱们下期见~

安卓巴士官方微博链接

安卓巴士微信公众号

0

主题

903

帖子

702

安币

代码手工艺人

IT

Rank: 4

积分
898
发表于 2016-10-31 17:34:23 | 显示全部楼层
支持,感谢,祝巴士越来越好~

21

主题

573

帖子

210

安币

代码手工艺人

Rank: 4

积分
571
发表于 2016-10-31 17:50:12 | 显示全部楼层
好好 学习了 确实不错

85

主题

1053

帖子

115

安币

Android大神

Rank: 6Rank: 6

积分
1040
发表于 2016-10-31 18:07:54 | 显示全部楼层
好好 学习了 确实不错

0

主题

594

帖子

-90

安币

代码手工艺人

Rank: 4

积分
750
发表于 2016-10-31 18:16:08 | 显示全部楼层
感谢分享,楼主V5~

62

主题

1032

帖子

1330

安币

Android大神

学海无涯

Rank: 6Rank: 6

积分
2013

QQ达人

发表于 2016-10-31 18:19:22 | 显示全部楼层
感谢大神~

0

主题

334

帖子

-119

安币

攻城狮

Rank: 3Rank: 3

积分
327
发表于 2016-10-31 18:26:29 | 显示全部楼层
好好 学习了 确实不错

0

主题

173

帖子

2271

安币

程序猿

Rank: 2

积分
173
发表于 2016-10-31 18:35:23 | 显示全部楼层
感谢分享,安卓巴士有你更精彩:)
*滑动验证:
高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

站长推荐

通过邮件订阅最新安卓weekly信息
上一条 /7 下一条
联系我们
关闭
合作电话:
13802416937
Email:
[email protected]
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| Github|申请友链|手机版|站点统计|安卓巴士 ( 粤ICP备15117877号 )

快速回复 返回顶部 返回列表