我也不说废话了,和上一个左滑差不多一样,我就贴一下主要代码,

有什么问题请留言哈,

import android.content.Context;import android.util.AttributeSet;import android.util.DisplayMetrics;import android.view.MotionEvent;import android.view.ViewGroup;import android.view.WindowManager;import android.widget.HorizontalScrollView;import android.widget.LinearLayout;public class LeftMenu extends HorizontalScrollView {Context context;int width;// 屏幕的宽度int left_width;// leftmenu宽度int right_width;// leftmenu宽度int scrolWidth;// 滚动的宽度boolean isleftOpen = false;// 判断侧滑菜单是否显示boolean isrightOpen = false;public LeftMenu(Context context) {super(context);this.context = context;}public LeftMenu(Context context, AttributeSet attrs) {super(context, attrs);this.context = context;}public LeftMenu(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);this.context = context;}// 设置空间的大小@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {// 获取屏幕的宽度WindowManager wm = (WindowManager) context.getSystemService(context.WINDOW_SERVICE);DisplayMetrics outMetrics = new DisplayMetrics();wm.getDefaultDisplay().getMetrics(outMetrics);width = outMetrics.widthPixels;left_width = (int) (width * 0.8);scrolWidth = (int) (left_width / 2);LinearLayout wrapper = (LinearLayout) getChildAt(0);ViewGroup leftmenu = (ViewGroup) wrapper.getChildAt(0);ViewGroup content = (ViewGroup) wrapper.getChildAt(1);ViewGroup rightmenu = (ViewGroup) wrapper.getChildAt(2);leftmenu.getLayoutParams().width = left_width;// 设置leftmenu的宽度content.getLayoutParams().width = width;// 设置正文的宽度rightmenu.getLayoutParams().width = left_width;// 设置leftmenu的宽度super.onMeasure(widthMeasureSpec, heightMeasureSpec);}// 设置控件的显示@Overrideprotected void onLayout(boolean changed, int l, int t, int r, int b) {super.onLayout(changed, l, t, r, b);if (changed) {this.scrollTo(left_width, 0);// 隐藏leftmenu}}@Overridepublic boolean onTouchEvent(MotionEvent ev) {int action = ev.getAction();switch (action) {case MotionEvent.ACTION_UP:int scrollX = getScrollX();if (scrollX > scrolWidth + width) {//判断是左滑还是右滑if (scrollX >= scrolWidth + left_width) {this.smoothScrollTo(width + left_width, 0);isrightOpen = true;} else {this.smoothScrollTo(left_width, 0);isrightOpen = false;}} else {// 如果显示区域大于菜单宽度一半则完全显示,否则隐藏if (scrollX >= scrolWidth) {this.smoothScrollTo(left_width, 0);isleftOpen = false;} else {this.smoothScrollTo(0, 0);isleftOpen = true;}}break;}return super.onTouchEvent(ev);}// 判断leftmenu的显示隐藏,主要用于外部按钮的设置menu的显示隐藏public void openMenu() {if (isleftOpen) {this.smoothScrollTo(left_width, 0);isleftOpen = false;} else {this.smoothScrollTo(0, 0);isleftOpen = true;}}// 判断rightmenu的显示隐藏,主要用于外部按钮的设置menu的显示隐藏public void openRightMenu() {if (isrightOpen) {this.smoothScrollTo(left_width, 0);isrightOpen = false;} else {this.smoothScrollTo(width + left_width, 0);isrightOpen = true;}}}


更多相关文章

  1. Android(安卓)工程目录简单结构
  2. adnroid actionbar属性
  3. Android(安卓)把图片进行压缩
  4. android 鸡蛋在哪只鞋子小综合
  5. Windown类
  6. Android菜单定制总结
  7. 设置菜单默认值设置
  8. 获取Android设备屏幕的相关参数
  9. Android:有关菜单的学习(供自己参考)

随机推荐

  1. android spinner 样式完全自定义[包括Rad
  2. Android:SMS TEL MAIL 使用集合
  3. Android计算器尝试
  4. 应该是史上最全最新Java和Android面试题
  5. Android开发周报:性能优化从入门到精通
  6. 71、Android上对Cookie的读写操作
  7. Android(安卓)解决依赖冲突问题
  8. Android(安卓)富文本编辑器 图文混排
  9. Android流媒体开发之路三:基于NDK开发And
  10. Android动态快捷方式兼容性问题