前一段时间阳光小强安装了一个豆瓣客户端,第一次打开就被这种界面风格吸引了,今天早上起来在打开豆瓣听音乐的时候,突然产生一个念头,来试着实现一下这种效果,打开客户端分析了一下发现其实这种效果的实现并不是想象中的那么难,下面我先分析一下这种效果的实现思路,然后一步步解释实现的过程,希望大家能提出意见和建议,一起交流学习。
先给大家展示一下我的成果吧:
其实豆瓣客户端的界面上还有其他的文字和菜单,但是这两个的实现效果和其他几个类似,可以作为代表,所以就不绘制那么多组件了。
转载请说明出处:http://blog.csdn.net/dawanganban
一、分析界面的组成结构
有两个和我们手机屏幕尺寸大小相等的View(分别是灰色透明度变化的背景和主界面),假设屏幕的宽和高是w和h, 屏幕的坐标原点在左上角,这两个View相对于屏幕的坐标是
刚开始的坐标:
灰色背景: left 0 right w top -h bottom 0
主界面:left 0 right w top 0 bottom h
滑动到最底部(d为滑动到最底部的高度)
灰色背景: left 0 right w top -d bottom h-d
主界面: left 0 right w top h-d bottom 2h-d
接下来我们就要分析两个大问题:
1、滑动的具体实现
从上面的图上可以很容易的看出来,此时我们就要考虑如何实现界面上下滑动,观察豆瓣客户端的滑动手势发现支持滑动加速度检测(速度大于某值时直接从一端滑向另一端)、支持屏幕跟随手指滑动、屏幕的Y轴方向的中间是一个恢复位置的临界点。
从上面的分析我们基本上可以知道用到的技术有如下几个:
(1)监听Event_Move事件,通过scorllBy实现实时移动&#x