在这里我们先分析下效果,左边是一个按照字母排序的并有子列表,右边是直接一个字母的排列,屏幕中间有一个显示你点击了右边的那个字母的显示。
在这里我们先去处理右边的字母列表。我们先去自定义一个view,把26个字母和“#”放到一个数组里面,再用画笔在ondraw()里面画出来。
当我们在这个字母列表上面滑动的时候,被点击到的字母会变色,这就需要有两个颜色的画笔去分别画不同的字母。
我们可以在onTouchEvent方法里面拿到按下和滑动的事件,在MotionEvent.ACTION_DOWN和MotionEvent.ACTION_MOVE的时候处理字母的变色。我们首先得那个我们点击的是哪个字母,我们可以拿到当前点击位置的y方向的距离去除以每个字母的高度,然后取整就知道那个字母被点击了,这时候调用invalidate方法去重新绘制字母列表,这样就可以实现当那个字母被点击或者是滑动时被覆盖的字母变色的效果。然后在这里我们写一个回调,去让页面中间的那个textview知道如何去显示那个字母被点击了。
我们ManActivity的布局文件是这样的
在ManActivity里面我们给RecyclerView添加数据,先给RecyclerView添加字母列表,在RecyclerView的布局文件在添加一个子RecyclerView。
给子RecyclerView添加数据之后,在会掉里面,当右边的列表那个被惦记了,就将父RecyclerView的那个对应位置的条目滚动到顶部,这样效果就实现了
项目已经放到github上面: https://github.com/chenzhikaizg/LetterListView
1.仿微信聊天功能:好友列表
2.
好友头像、好友名称、顶部名字
3.
聊天最近一条记录、最近时间展示
4.
仿微信聊天功能:好友聊天
5.
好友头像、我的头像
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)