rxjava2代码实战4--interval,take操作符clipdrawable制作图片进度条
来源:互联网 发布:matlab find(矩阵) 编辑:程序博客网 时间:2024/06/12 18:57
interval:延迟执行一段逻辑或者间隔执行一段逻辑
take:截取前n个事件
代码地址:
GitHub - GodisGod/Rxjava2Testhttps://github.com/GodisGod/Rxjava2Test
使用interval制作一个图片进度条
效果图:
activity代码:
public class IntervalTakeComposeActivity extends AppCompatActivity { private ImageView imgLevelProgress; private ClipDrawable clipDrawable; private Button btnStart; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_interval_take_compose); imgLevelProgress = (ImageView) findViewById(R.id.img_level_progress); clipDrawable = (ClipDrawable) imgLevelProgress.getDrawable(); btnStart = (Button) findViewById(R.id.btn_start); btnStart.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { setLevelProgress(80, 100);//0 - 10000 } }); } /** * 设置等级的进度 * * @param progress 已有的经验 * @param all 升级需要的总经验 */ private void setLevelProgress(long progress, long all) { //level在0-10000之间,0表示完全裁剪,10000表示完全不裁剪。设置的值越大,裁剪的范围就越小。 final int curProgress = (int) (((float) progress / all) * 10000); Observable.interval(10, TimeUnit.MILLISECONDS)//每隔10ms输出一次 .take(curProgress / 50)//0 - 8000/200 - -> 0 - 40 //减小输出次数,这样就不用输出8000次,而是只输出40次了,10000一共输出200次,输出次数多可以让进度变化看起来更加连贯 .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer<Long>() { @Override public void accept(Long aLong) throws Exception { clipDrawable.setLevel((int) ((aLong + 1) * 50));//10000一共输出200次,每次增加50 } }, new Consumer<Throwable>() { @Override public void accept(Throwable throwable) throws Exception { clipDrawable.setLevel(1); } }); }}
阅读全文
0 0
- rxjava2代码实战4--interval,take操作符clipdrawable制作图片进度条
- RxJava2 / RxAndroid2操作符take
- rxjava2代码实战1--Map操作符
- rxjava2代码实战2--zip操作符
- rxjava2代码实战3--flatMap,concatMap操作符
- ClipDrawable制作图片渐进效果
- RxJava2 / RxAndroid2操作符interval:每隔若干时间发射信号
- RxJava2 / RxJava2操作符scan
- android ClipDrawable实现进度条
- RxJava 操作符 take
- rxjava2操作符
- RxJava2操作符Map
- rxjava2代码实战5--distinct,filter,buffer
- RxJava 操作符 interval
- 小白学习Rxjava2,从零开始到实战(三) 操作符
- 小白学习Rxjava2,从零开始到实战(三) 操作符
- RxJava2 / RxAndroid2操作符skip
- RxJava2.0教程操作符
- Server.Transfer跳转异常,post请求未找到HTTP处理程序
- 关于Vue.js 使用v-cloak后仍显示变量的解决方法
- 搜索引擎选择: Elasticsearch与Solr
- 数组小和(单调和)
- 悬空else的问题
- rxjava2代码实战4--interval,take操作符clipdrawable制作图片进度条
- mysql练习1
- selenium问题:webdriver Unable to connect to host 127.0.0.1 on port 7055
- Intellij导入插件工程,不能运行(需要EditConfiguration)
- Sublime Text Snippets(代码片段)功能
- 大型网站电商网站架构案例和技术架构的示例
- 易天强势推出10G SFP+电口模块
- 手机端H5获取当前城市的方法
- [链分治][FWT][树链剖分] BZOJ 4911: [Sdoi2017]切树游戏