全文纯干货
在学习这个效果之前,确保你已经知道如何实现一个滑动的View.
接下来就是SlidingMenu的实现思路,首先我们有两个布局content和menu,content在屏幕中,menu在屏幕左侧,要实现这个,我们可以将menu使用setTranslationX()方法左移到屏幕外,然后我们监听滑动事件,根据位移来平移content和menu。
下面是初始化的方法
public class SimpleSlidingMenu extends RelativeLayout {
public SimpleSlidingMenu(Context context, AttributeSet attrs) {
super(context, attrs, defStyleAttr);
init(context);
}
private void init(Context context) {
content = new FrameLayout(context);
menu = new FrameLayout(context);
addView(menu, new LayoutParams(MATCH_PARENT, MATCH_PARENT));
addView(content, new ViewGroup.LayoutParams(MATCH_PARENT, MATCH_PARENT));
}
}
接下来监听滑动事件。
public class SimpleSlidingMenu extends RelativeLayout {
//···
private float lastX;
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
lastX = event.getRawX();
break;
case MotionEvent.ACTION_UP:
scrollHelper.reset();
break;
case MotionEvent.ACTION_MOVE:
float dx = event.getRawX() - lastX;
//这里根据手指平移距离dx做平移操作
lastX = event.getRawX();
break;
}
return true;
}
}
SimpleSlidingMenu支持三种滑动模式,同时还允许我们自定义。
其中只有content滑动最适合我目前项目哈。
所有自定义view代码都在这 https://github.com/pop1234o/CustomViewApp
没办法,本来想新建个工程在研究下DrawerLayout样式的,结果发现新建工程的模板里有个这个
真是造福全社会啊哈哈
、运行了一下,果然没让我失望,啊哈哈。