欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

Android自定义View之仿QQ侧滑菜单实现

来源:本站整理 作者:佚名 时间:2017-02-28 TAG: 我要投稿

最近,由于正在做的一个应用中要用到侧滑菜单,所以通过查资料看视频,学习了一下自定义View,实现一个类似于QQ的侧滑菜单,顺便还将其封装为自定义组件,可以实现类似QQ的侧滑菜单和抽屉式侧滑菜单两种菜单。
下面先放上效果图:


我们这里的侧滑菜单主要是利用HorizontalScrollView来实现的,基本的思路是,一个布局中左边是菜单布局,右边是内容布局,默认情况下,菜单布局隐藏,内容布局显示,当我们向右侧滑,就会将菜单拉出来,而将内容布局的一部分隐藏,如下图所示:

下面我们就一步步开始实现一个侧滑菜单。
一、定义一个类SlidingMenu继承自HorizontalScrollView
我们后面所有的逻辑都会在这个类里面来写,我们先写上其构造方法
public class SlidingMenu extends HorizontalScrollView {
    /**
     * 在代码中使用new时会调用此方法
     * @param context
     */
    public SlidingMenu(Context context) {
        this(context, null);
    }
 
    /**
     * 未使用自定义属性时默认调用
     * @param context
     * @param attrs
     */
    public SlidingMenu(Context context, AttributeSet attrs) {
        //调用三个参数的构造方法
        this(context, attrs, 0);
 
    }
 
    /**
     * 当使用了自定义属性时会调用此方法
     * @param context
     * @param attrs
     * @param defStyleAttr
     */
    public SlidingMenu(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }
}
二、定义菜单布局文件
left_menu.xml文件代码如下
"1.0" encoding="utf-8"?-->
"match_parent" android:layout_width="match_parent" xmlns:android="http://schemas.android.com/apk/res/android">
 
    "true" android:layout_height="wrap_content" android:layout_width="match_parent" android:orientation="vertical">
 
        "@mipmap/ic_launcher" android:drawablepadding="20dp" android:gravity="left|center" android:layout_height="wrap_content" android:layout_marginleft="20dp" android:layout_width="match_parent" android:text="第一个Item">
        "@mipmap/ic_launcher" android:drawablepadding="20dp" android:gravity="left|center" android:layout_height="wrap_content" android:layout_marginleft="20dp" android:layout_width="match_parent" android:text="第二个Item">
        "@mipmap/ic_launcher" android:drawablepadding="20dp" android:gravity="left|center" android:layout_height="wrap_content" android:layout_marginleft="20dp" android:layout_width="match_parent" android:text="第三个Item">
        "@mipmap/ic_launcher" android:drawablepadding="20dp" android:gravity="left|center" android:layout_height="wrap_content" android:layout_marginleft="20dp" android:layout_width="match_parent" android:text="第四个Item">
        "@mipmap/ic_launcher" android:drawablepadding="20dp" android:gravity="left|center" android:layout_height="wrap_content" android:layout_marginleft="20dp" android:layout_width="match_parent" android:text="第五个Item">
   
上面其实就是定义了一列TextView来模仿菜单的Item项
三、定义主布局文件,使用自定义的View
activity_main.xml文件代码如下
"1.0" encoding="utf-8"?-->
"match_parent" android:layout_width="match_parent" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">

[1] [2] [3] [4] [5] [6] [7]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载