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

13
回复
4984
查看
打印 上一主题 下一主题
[复制链接]

0

主题

0

帖子

-9万

安币

VIP3

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

楼主
发表于 2016-10-31 16:35:08 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
分析
从网络上加载图片是一种耗时的操作,当加载的图片体积越大,消耗的时间也会更长。向ImageView添加一个进度条的话,可以起到一定的效果。而在我们Android里面,据我了解,想实现ImageView添加进度条的方法有两种:
1.?#38470;?#19968;个类extends ImageView,在draw()方法里面画进度。
2.可以在你的ImageView外围添加RelativeLayout,然后,在里面加多一个ProgressBar。
LoadingProgress用的都不是以上两?#22336;?#27861;。而是采用了extends Drawable的?#38382;?然后注入到ImageView图层上面。
?#21592;?/strong>
先从上面第二种来说,在外围嵌套RelativeLayout再放多一个ProgressBar,如果在ListView里面这样来写的话,?#38405;?#32477;对会受到影响,因为多绘制两个控件,Android就要多点耗时时间,内存也会?#21152;謾?br /> 第一种和我的那种?#21592;?#30340;话,我的那种可能会相对?#21152;?#19968;点内存,但是相对的,灵活性和扩展?#36291;?#39640;了,为什么这样?#30340;?比如,你有时候需要用到手势缩放这种Extends ImageView的控件,总不可能?#22363;?#19982;手势缩放,再重新封?#25353;?#30721;对吧?
我的只要是?#22363;?#20110;ImageView和可以监听到下载图片进度的回调,都可以实现像QQ和微信那种加载进度条,可以动态的调整?#19981;反?#23567;和字体大小,颜色?#25512;?#20182;的。
附上效果图
用法
[Java] 查看源文件 复制代码
    //用法也是挺简单的,只需要几?#20889;?#30721;
    CircleProgress progress = new CircleProgress.Builder()
    
    // .....从建造者里面设置你的属性,园底层颜色,进度颜色,字体大小颜色等..
                        .build();//返回CircleProgress


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


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

Android Webview和js交互

ViewPager卡顿优化实战

Android Studio六种?#35272;?/font>

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

[译] ProGuard 选项

Android studio的live templates汇总

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

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

Android水波纹效果

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

高仿?#21592;?#19979;拉刷新控件

一个Adapter搞定仿qq侧滑删除?#35828;?/font>

Android MD风格控件

TextInputLayou包裹EditText创建账户登陆

使用ViewPager实现的广告栏

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

recyclerview 下拉刷新?#22270;?#36733;更多

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

Android显示多图或item的View


【一周优秀实例?#22363;獺?/font>

想要?#36164;?#23454;现一个刷新控件,你只需要掌握这些知识

Android App 线上热修复方案

在Android 5.0中使用JobScheduler

使用RxBinding处理控件异步调用

RxVolley介绍与应用

Android日历组件快速集成方案

使用Android Studio,?#38470;╨ibrary并发布到jCenter

Okhttp-wiki 之 Interceptors 拦截器


Android重绘优化实战

第二十五周巴士之星公布


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

问答区热心巴友:lilongfei0504,?#26696;?/div>
see you 咱们下期见~

安卓巴士官方微博链接

安卓巴士微信公众号

分享到:  QQ好友和群 QQ空间 微信
收藏
收藏7
支持
支持0
反对
反对0

0

主题

9889

帖子

1690

安币

Android大神

IT

Rank: 6Rank: 6

沙发
发表于 2016-10-31 17:34:23 | 只看该作者
支持,?#34892;唬?#31069;巴士越来越好~

21

主题

9536

帖子

2036

安币

Android大神

Rank: 6Rank: 6

板凳
发表于 2016-10-31 17:50:12 | 只看该作者
好好 学习了 确实不错

85

主题

9850

帖子

2190

安币

Android大神

Rank: 6Rank: 6

地板
发表于 2016-10-31 18:07:54 | 只看该作者
好好 学习了 确实不错

0

主题

9449

帖子

2402

安币

Android大神

Rank: 6Rank: 6

5#
发表于 2016-10-31 18:16:08 | 只看该作者
?#34892;?#20998;享,楼主V5~

62

主题

9832

帖子

899

安币

代码手工艺人

学海无涯

Rank: 4

QQ达人

6#
发表于 2016-10-31 18:19:22 | 只看该作者
?#34892;?#22823;神~

0

主题

9211

帖子

2371

安币

Android大神

Rank: 6Rank: 6

7#
发表于 2016-10-31 18:26:29 | 只看该作者
好好 学习了 确实不错

0

主题

187

帖子

2437

安币

Android大神

Rank: 6Rank: 6

8#
发表于 2016-10-31 18:35:23 | 只看该作者
?#34892;?#20998;享,安卓巴士有你更精彩:)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

领先的中文移动开发者社区
18620764416
7*24全天服务
意见反馈:[email protected]

扫一扫关注我们

Powered by Discuz! X3.2© 2001-2019 Comsenz Inc.( 粤ICP备15117877号 )

阿拉斯加垂钓APP下载
山西快乐十分 25选5 澳洲赛车开奖官方平台 时时彩怎么买龙虎技巧 拉霸游戏连线手机下载 沪深股票指数 捕鱼来了怎么挣钱 一分快三的秘籍 有利润就一定赚钱吗 北京麻将有没有作弊器有 日本棒球比分直播即时比分 7n体育比分 银行满减活动黄牛赚钱 七星彩开奖视频播放 浙江快乐彩 青海快3图片欣赏