Android 滑动选择控件&MVP+Retrofit+RxJava资源推荐

本文作者

作者:超神的菠萝

链接:http://www.jianshu.com/p/baf143364e04

本文由作者投稿发布。

1

概述

效果图

使用

源码地址

https://github.com/superSp/RulerView

2

实现思路

1. 初始化画笔,以及其他需要的参数

2. 重写onMeasuer()确定尺子的大小

3. 重写onDraw()绘画出静态尺子,并且将一些滑动时需要改变的参数设置为变量,绘制时只绘制当前屏幕可见区域,滑动尺子时,只刷新当前屏幕模拟滑动并不是真正的滑动

4. 重写onTouchEvent()处理滑动,增加滑动速率监听VelocityTracker以及惯性滑动以及抬起手指时指针落在刻度上面需要的属性动画ValueAnimator

3

实现过程

测量

控件的高度=尺子的高度+结果值的高度+尺子距离结果值的高度

控件的宽度=屏幕宽度或者固定宽度

测量这个环节很重要的就是定位自己这个控件的宽高的具体使用方式,例如本控件的宽度,因为内部可以滑动,是没有办法设置为wrap_content的(除非有个默认值)。

绘制静态尺子

绘制背景

绘制那个白色的圆角/矩形背景。

绘制尺子

这一步是绘制控件中最为复杂的一步,需要考虑初始如何默认选中初始刻度,手指抬起时候尺子需要滑动到的位置,计算当前所处刻度等等。

绘制滑动类型的view时,当初的想法是一次性绘制出全部内容,之后使用canvas.clipRect()裁剪掉不可见区域,但是如果内容区域比较大,例如需要绘制1000个内容,则没滑动一次for循环需要执行1000次,而且刻度越大时候循环越多,占用内存更大,会造成卡顿,因此换了另外一种思路,只绘制当前屏幕可见区域内容,这样无论刻度有多大,暂用的内存都很小,滑动时,通过不断刷新来模拟滑动,做到以假乱真的效果。

处理滑动

主要是记录moveX,以及添加velocityTracker速度监听器,以及处理惯性滑动

处理惯性滑动的代码

这里就是调节了,根据得到的速率调节出比较舒服的滑动

供外部使用的获取结果值的接口

源码地址

https://github.com/superSp/RulerView

再续几秒

光看一篇自定义控件,你可能还不满足,毕竟全是代码看起来挺费劲的。刚好后台有很多朋友想学习MVP+Retrofit+RxJava的一些组合,这里给大家找了一些文章,比较适合目前还不太了解的同学:

带你高效学习MVP+RxJava+Retrofit

http://www.jianshu.com/p/c81c48144029

Android 教你一步步搭建MVP+Retrofit+RxJava网络请求框架http://www.jianshu.com/p/7b839b7c5884

MVP+Retrofit+Rxjava在项目中实战解析

http://www.jianshu.com/p/644206ddbd2c

小白能看懂的MVP+RXjava+Retrofit2详细讲解http://www.jianshu.com/p/426864584518

MVP+Retrofit+Rxjava在项目中实战解析https://juejin.im/post/596eb0faf265da6c322e0e3d

MVP + Retrofit + RxJava 优雅的实现http://lovehaodong.cn/2017/04/12/Android%20%E6%9E%B6%E6%9E%84/

Retrofit+Rxjava+Okhttp+MVP搭建Android开发框架一

http://t.cn/RYe617d

Retrofit-Rxjava-Okhttp-MVP搭建Android开发框架二

http://t.cn/RYe6gRA

刚好是周五,建议如果从未有过尝试的,可以周末好好学习了解下。而且经常推荐的开源项目多数都是以此为基础的;因为涉及的技术比较多,光看起来比较费劲,建议跟着敲,边敲便体会。

http://www.wanandroid.com/article/list/0?cid=260

本文来自企鹅号 - 鸿洋媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏hightopo

基于 HTML5 的 WebGL 3D 版俄罗斯方块

1233
来自专栏HenCoder

HenCoder Android 开发进阶:自定义 View 1-3 文字的绘制

之前的内容在这里: HenCoder Android 开发进阶 自定义 View 1-1 绘制基础 HenCoder Android 开发进阶 自定义 View...

622
来自专栏HTML5学堂

几个前端工程师应当掌握的“词语”

HTML5学堂-码匠:W3C、BFC、FOUC、Hack、GPU、Sprite、UA……各类前端术语知多少? 有不少前端开发工程师,可能并不清楚下面的部分词语,...

3396
来自专栏HTML5学堂

JavaScript | 动画显示比例的投票效果

HTML5学堂(码匠):一个简洁实用的投票效果如何使用原生JS来进行实现呢?同时动画显示比例的形式又需要依靠哪些技术来实现?是数学对象还是字符串操作,又或者是计...

3076
来自专栏Keegan小钢

Android样式的开发:View Animation篇

drawable汇总篇讲过两个动画,animation-list定义帧动画,animated-rotate定义旋转动画,这两个属于drawable动画。除了dr...

542
来自专栏IMWeb前端团队

重构不完全教程集之二

本文作者:IMWeb 结一原文出处:IMWeb社区未经同意,禁止转载 故不登高山,不知天之高也;不临深溪,不知地之厚也。--摘自《劝学》 ::before &...

21010
来自专栏华章科技

值得收藏的Python小技巧:这17个骚操作你都OK吗?

导读:Python 是一门非常优美的语言,其简洁易用令人不得不感概人生苦短。在本文中,作者 Gautham Santhosh 带我们回顾了 17 个非常有用的 ...

943
来自专栏HTML5学堂

CSS3蒙版 — 元旦快乐!

相信大家如果对PS有所了解都知道里面有蒙版遮罩层的效果,可我们在这里并不打算介绍PS的蒙版效果,而是介绍在内核为-webkit的浏览器中通过CSS3的新属性-w...

33910
来自专栏大数据挖掘DT机器学习

信息图制作教程案例

当大家看到很多好看的信息图的时候最喜欢问的两个问题是:用什么软件做的?怎么做的? 在工具选择上,使用Adobe Illustrator,制作过程大家...

3447
来自专栏前端儿

Flex 布局相关用法

布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性。它对于那些特殊布局非常不方便,比如,垂直居中 就不容易...

851

扫码关注云+社区