仿QQ6.0主页面侧滑效果汇编.doc

仿QQ6.0主页面侧滑效果汇编

仿QQ6.0主页面侧滑效果 2.实现    2.1. 实现的方式多种多样   2.1.1 自定义ViewGroup ,处理其onTouch事件   2.1.2 FrameLayout + 手势处理类GestureDetector   2.2.3 使用Google自带的DrawerLayout 对其进行修改   2.2.4 继承自水平滚动HorizontalScrollView 这种方式继承自ViewGroup,个人觉得还行但是还是比较繁琐要处理的东西也比较多,那么我就用最后一种2.2.4的方式实现,有人说直接去网上下载一个源代码就可以了,这我就只能GG了。   2.3. 自定义SlidingMenu extends HorizontalScrollView 然后写好布局文件这个和ScrollView的用法一样,只不过是横向滚动的 /** * description: * 仿QQ6.0主页面侧滑的自定View * Created by 曾辉 on 2016/11/1. * QQ:240336124 * Email: 240336124@ * Version:1.0 */ public class SlidingMenu extends HorizontalScrollView { public SlidingMenu(Context context) { super(context); } public SlidingMenu(Context context, AttributeSet attrs) { super(context, attrs); } public SlidingMenu(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } } 2.4. 运行起来之后发现布局不对,完全乱了明明都是match_parent可是就是不行那么我们就需要用代码指定菜单和内容的宽度: 菜单的宽度 = 屏幕的宽度 - 自定义的右边留出的宽度 内容的宽度 = 屏幕的宽度 /** * description: * 仿QQ6.0主页面侧滑的自定View * Created by 曾辉 on 2016/11/1. * QQ:240336124 * Email: 240336124@ * Version:1.0 */ public class SlidingMenu extends HorizontalScrollView { private View mMenuView; private View mContentView; private int mMenuWidth; public SlidingMenu(Context context) { this(context, null); } public SlidingMenu(Context context, AttributeSet attrs) { this(context, attrs, 0); } public SlidingMenu(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); // 获取自定义的右边留出的宽度 TypedArray array = context.obtainStyledAttributes(attrs,R.styleable.SlidingMenu); float rightPadding = array.getDimension( R.styleable.SlidingMenu_rightPadding,dip2px(50)); // 计算菜单的宽度 = 屏幕的宽度 - 自定义右边留出的宽度 mMenuWidth = (int) (getScreenWidth() - rightPadding); array.recycle(); } /** * 把dip 转成像素 */ private float dip2px(int dip) { r

文档评论(0)

1亿VIP精品文档

相关文档