精华内容
下载资源
问答
  • 高仿QQ侧滑

    2015-04-01 23:12:12
    高仿QQ侧滑,有各种侧滑功能,保证完美。
  • 仿QQ侧滑

    2015-09-16 10:47:18
    模仿QQ的侧滑菜单仿QQ侧滑菜单主要用到开源控件SlidingMenu。自定义控件SlidingMenu /** * 侧滑 * * @author Administrator * */ public class SlidingMenu extends HorizontalScrollView { private ...

    模仿QQ的侧滑菜单

    仿QQ侧滑菜单主要用到开源控件SlidingMenu。

    自定义控件SlidingMenu

    /**
     * 侧滑
     * 
     * @author Administrator
     * 
     */
    public class SlidingMenu extends HorizontalScrollView {
        private LinearLayout mWapper;
        private ViewGroup mMenu;
        private ViewGroup mContent;
        private int mScreenWidth;
    
        private int mMenuWidth;
        // dp
        private int mMenuRightPadding = 50;
    
        private boolean once;
    
        public  boolean isOpen;
        public static final int[] SlidingMenu = { 0x7f010000 };
    
        /**
         * 未使用自定义属性时,调用
         * 
         * @param context
         * @param attrs
         */
        public SlidingMenu(Context context, AttributeSet attrs) {
            this(context, attrs, 0);
        }
    
        /**
         * 当使用了自定义属性时,会调用此构造方法
         * 
         * @param context
         * @param attrs
         * @param defStyle
         */
        public SlidingMenu(Context context, AttributeSet attrs, int defStyle) {
            super(context, attrs, defStyle);
            // 获取我们定义的属性
            TypedArray a = context.getTheme().obtainStyledAttributes(attrs,
                    R.styleable.SlidingMenu, defStyle, 0);
    
            int n = a.getIndexCount();
            for (int i = 0; i < n; i++) {
                int attr = a.getIndex(i);
                switch (attr) {
                case R.styleable.SlidingMenu_rightPadding:
                    mMenuRightPadding = a.getDimensionPixelSize(attr,
                            (int) TypedValue.applyDimension(
                                    TypedValue.COMPLEX_UNIT_DIP, 50, context
                                            .getResources().getDisplayMetrics()));
                    break;
                }
            }
            a.recycle();
    
            WindowManager wm = (WindowManager) context
                    .getSystemService(Context.WINDOW_SERVICE);
            DisplayMetrics outMetrics = new DisplayMetrics();
            wm.getDefaultDisplay().getMetrics(outMetrics);
            mScreenWidth = outMetrics.widthPixels;
    
        }
    
        public SlidingMenu(Context context) {
            this(context, null);
        }
    
        /**
         * 设置子View的宽和高 设置自己的宽和高
         */
        @Override
        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
            if (!once) {
                mWapper = (LinearLayout) getChildAt(0);
                mMenu = (ViewGroup) mWapper.getChildAt(0);
                mContent = (ViewGroup) mWapper.getChildAt(1);
                mMenuWidth = mMenu.getLayoutParams().width = mScreenWidth
                        - mMenuRightPadding;
                mContent.getLayoutParams().width = mScreenWidth;
                once = true;
            }
            super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        }
    
        /**
         * 通过设置偏移量,将menu隐藏
         */
        @Override
        protected void onLayout(boolean changed, int l, int t, int r, int b) {
            super.onLayout(changed, l, t, r, b);
            if (changed) {
                this.scrollTo(mMenuWidth, 0);
            }
        }
    
        @Override
        public boolean onTouchEvent(MotionEvent ev) {
    
                int action = ev.getAction();
                switch (action) {
                case MotionEvent.ACTION_UP:
                    // 隐藏在左边的宽度
                    int scrollX = getScrollX();
                    if (scrollX >= mMenuWidth / 4) {//scrollX >= mMenuWidth / 2
                        this.smoothScrollTo(mMenuWidth, 0);
                        isOpen = false;
                    } else {
                        this.smoothScrollTo(0, 0);
                        isOpen = true;
                    }
                    return true;
                }
    
            return super.onTouchEvent(ev);
        }
    
        /**
         * 打开菜单
         */
        public void openMenu() {
            if (isOpen)
                return;
            this.smoothScrollTo(0, 0);
            isOpen = true;
        }
    
        public void closeMenu() {
            if (!isOpen)
                return;
            this.smoothScrollTo(mMenuWidth, 0);
            isOpen = false;
        }
    
        /**
         * 切换菜单
         */
        public void toggle() {
            if (isOpen) {
                closeMenu();
            } else {
                openMenu();
            }
        }
    
        /**
         * 滚动发生时
         */
        @Override
        protected void onScrollChanged(int l, int t, int oldl, int oldt) {
            super.onScrollChanged(l, t, oldl, oldt);
            float scale = l * 1.0f / mMenuWidth; // 1 ~ 0
    
            /**
             * 区别1:内容区域1.0~0.7 缩放的效果 scale : 1.0~0.0 0.7 + 0.3 * scale
             * 
             * 区别2:菜单的偏移量需要修改
             * 
             * 区别3:菜单的显示时有缩放以及透明度变化 缩放:0.7 ~1.0 1.0 - scale * 0.3 透明度 0.6 ~ 1.0 0.6+
             * 0.4 * (1- scale) ;
             * 
             */
            float rightScale = 0.7f + 0.3f * scale;
            float leftScale = 1.0f - scale * 0.3f;
            float leftAlpha = 0.6f + 0.4f * (1 - scale);
    
            // 调用属性动画,设置TranslationX
            ViewHelper.setTranslationX(mMenu, mMenuWidth * scale * 0.8f);
    
            ViewHelper.setScaleX(mMenu, leftScale);
            ViewHelper.setScaleY(mMenu, leftScale);
            ViewHelper.setAlpha(mMenu, leftAlpha);
            // 设置content的缩放的中心点
            ViewHelper.setPivotX(mContent, 0);
            ViewHelper.setPivotY(mContent, mContent.getHeight() / 2);
            ViewHelper.setScaleX(mContent, rightScale);
            ViewHelper.setScaleY(mContent, rightScale);
    
        }
    
    }
    

    SlidingMenu需要在values文件夹创建attr.xml

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    
        <attr name="rightPadding" format="dimension"></attr>
    
        <declare-styleable name="SlidingMenu">
            <attr name="rightPadding"></attr>
        </declare-styleable>
    
    </resources>

    自定义控件SlidingMenu还需要jar包 nineoldandroids-2.4.0.jar

    布局文件

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
         xmlns:hyman="http://schemas.android.com/apk/res/com.example.sideslipe"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >
    <com.example.sideslipe.SlidingMenu 
        android:id="@+id/slidingmenu"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        hyman:rightPadding="100dp"
        android:background="#fefefe"
        >
        <LinearLayout 
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="horizontal"
            >
            <include layout="@layout/left"/>
           <include layout="@layout/middle"/>
        </LinearLayout>
    
    </com.example.sideslipe.SlidingMenu>
    
    </RelativeLayout>

    侧滑菜单布局

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
        <include android:id="@+id/left" layout="@layout/leftmenu" android:visibility="gone"/>
    
    </LinearLayout>

    leftmenu.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" 
        android:gravity="center_vertical"
        >
        <LinearLayout 
             android:id="@+id/start"
            android:layout_width="match_parent"
            android:layout_height="45dp"
     android:orientation="horizontal"        
            >
    
            <ImageView 
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/ic_launcher"
                />
            <TextView 
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="开始"
                android:layout_gravity="center_vertical"
                />
        </LinearLayout>
        <LinearLayout 
            android:id="@+id/end"
            android:layout_width="match_parent"
            android:layout_height="45dp"
     android:orientation="horizontal"        
            >
    
            <ImageView 
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/ic_launcher"
                />
            <TextView 
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="结束"
                android:layout_gravity="center_vertical"
                />
        </LinearLayout>
    </LinearLayout>
    

    middle.xml布局

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#fefefe"
        android:orientation="vertical" >
    
    <LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:orientation="horizontal"
        android:background="#626262"
        >
    
        <ImageView 
            android:id="@+id/img"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:src="@drawable/ic_launcher"
            />
        <TextView 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="QQ侧滑"
            android:layout_gravity="center_vertical|center_horizontal"
            />
    </LinearLayout>
     <ScrollView 
                android:id="@+id/scrollview"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="#fefefe"
                    android:orientation="vertical"
                    android:scrollbars="none"
                >
            <LinearLayout 
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:background="@drawable/qq"
                >
    </LinearLayout>
    </ScrollView>
    </LinearLayout>
    

    程序代码

    public class MainActivity extends Activity implements OnClickListener{
    private SlidingMenu slidingMenu;
    private LinearLayout li_s,li_end;
    private ImageView img;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            setContentView(R.layout.activity_main);
            slidingMenu=(SlidingMenu) findViewById(R.id.slidingmenu);
            ScrollView scroll = (ScrollView) findViewById(R.id.scrollview);
            scroll.smoothScrollTo(0, 0);
            li_s=(LinearLayout) findViewById(R.id.start);
            li_end=(LinearLayout) findViewById(R.id.end);
            img=(ImageView) findViewById(R.id.img);
            img.setOnClickListener(this);
            li_s.setOnClickListener(this);
            li_end.setOnClickListener(this);
            findViewById(R.id.left).setVisibility(View.VISIBLE);  
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }
    
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            switch (v.getId()) {
            case R.id.img:
                slidingMenu.toggle();
                break;
            case R.id.start:
                Toast.makeText(getApplicationContext(), "开始", 0).show();
                break;
            case R.id.end:
                Toast.makeText(getApplicationContext(), "结束", 0).show();
                break;
            default:
                break;
            }
        }
    
    }

    特别注意:

    **如果主页布局不用ScrollView包裹,代码里面没有ScrollView scroll = (ScrollView) findViewById(R.id.scrollview);
    scroll.smoothScrollTo(0, 0); 在主页可以响应侧滑菜单的点击事件!**
    仿QQ侧滑demo下载地址:

    http://download.csdn.net/detail/yy471101598/9110805

    展开全文
  • 仿QQ侧滑效果

    2017-05-21 22:26:31
    仿QQ侧滑效果
  • 仿QQ侧滑菜单

    2017-05-03 16:55:20
    仿QQ侧滑菜单
  • 仿QQ侧滑功能

    2015-12-11 10:27:36
    通过videoPlayer控件实现仿QQ侧滑功能
  • 仿qq侧滑菜单

    2017-06-06 11:32:25
    仿qq侧滑菜单,Android
  • 仿qq侧滑删除

    2016-06-22 13:48:06
    仿qq侧滑删除 android http://www.jianshu.com/p/5cb27a2ce03d
  • 仿qq侧滑实现

    2015-10-13 15:37:16
    仿qq侧滑实现 基本和扣扣一致 本代码是根据网上代码修改完善的
  • 仿QQ侧滑

    2016-08-17 16:34:38
    仿QQ侧滑
  • 主要为大家详细介绍了Android实现多种侧滑效果,包括仿qq侧滑,抽屉侧滑,普通侧滑三种效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • android 仿QQ侧滑

    2016-12-27 14:37:20
    一款好看的仿QQ侧滑
  • 仿QQ侧滑例子源码

    2015-12-20 20:49:33
    仿QQ侧滑例子源码,这个比较简单实用,易看懂!
  • 高仿QQ侧滑删除

    2017-02-05 10:11:20
    高仿QQ侧滑删除聊天列表中的某一条数据
  • 仿QQ侧滑栏-SlidingMenu

    2015-08-23 15:48:03
    Android 仿QQ侧滑栏-SlidingMenu
  • 仿QQ侧滑栏 - SlidingMenu

    2015-08-23 15:36:43
    Android 仿QQ侧滑栏-SlidingMenu
  • 仿QQ侧滑特效

    2016-03-01 13:38:59
    仿QQ侧滑,利用到了HorizontalScrollView希望大家喜欢
  • Android仿QQ侧滑菜单

    2017-12-12 16:59:57
    android中仿qq侧滑菜单Demo,一款酷炫的测滑菜单,集成方便使用。
  • PDSlideViewController:高仿qq侧滑菜单
  • 相信大家对QQ侧滑菜单的效果已经不陌生了吧,侧滑进入个人头像一侧,进行对头像的更改,我的收藏,QQ钱包,我的文件等一系列的操作,下面小编给大家分享Android_UI 仿QQ侧滑菜单效果的实现,一起看看吧
  • ios之高仿QQ侧滑控件OC和Swift4.0. ios之高仿QQ侧滑控件OC和Swift4.0. ios之高仿QQ侧滑控件OC和Swift4.0.
  • 主要为大家详细介绍了Android自定义SwipeLayout仿QQ侧滑条目,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 主要介绍了iOS中仿QQ侧滑菜单功能,在实现此功能之前,需要先了解UITabBarController的层级结构,具体实现思路大家可以参考下本
  • 现在侧滑菜单的框架在github上也有很多,有兴趣的可以去搜一下,今天我就给大家展示一个简单的仿qq侧滑菜单的例子。开始实现原理我们可以自定义一个view,然后用一个水平滚动条HorizontalScrollView匹配父容器原理如...

    我们经常能看到各种app中都有应用侧滑菜单(SlidingMenu),效果很好的一种显示方式,今天我就向大家展示可以说是很简单就能实现和qq的侧滑菜单很相似的效果。现在侧滑菜单的框架在github上也有很多,有兴趣的可以去搜一下,今天我就给大家展示一个简单的仿qq侧滑菜单的例子。

    开始

    实现原理

    我们可以自定义一个view,然后用一个水平滚动条HorizontalScrollView匹配父容器

    原理如图:

    e0e5471e52b6?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

    qq_menu原理

    要有这个HorizontalScrollView要有两倍屏幕的宽度,用这个Android自带的水平滚动条来实现左右滑动的效果。是不是很简单呢。原理就是这么简单。下面我将我的代码贴出来,大家可以参考,或修改。

    部分实现代码

    首先我们生成一个自定义view 继承HorizontalScrollView

    SlidingMenu.java

    public class SlidingMenu extends HorizontalScrollView {

    private LinearLayout mWapper;

    private ViewGroup mMenu;

    private ViewGroup mContent;

    private int mScreenWidth;

    private int mMenuRightPadding = 50;

    private boolean once = false;

    private boolean isOpen;

    private int mMenuWidth;

    这样就自动帮我们生成了一个自定义view所必须的方法

    如果不需要使用自定义属性,那么我们需要修改一下两个方法如下:

    /**

    * 未使用自定义属性时调用

    *

    * @param context

    * @param attrs

    */

    public SlidingMenu(Context context, AttributeSet attrs) {

    this(context, attrs, 0);

    }

    public SlidingMenu(Context context) {

    this(context, null);

    }

    如果使用自定义属性,在本例中将会调用如下方法

    /**

    * 当使用了自定义属性时,会调用此构造方法

    *

    * @param context

    * @param attrs

    * @param defStyle

    */

    public SlidingMenu(Context context, AttributeSet attrs, int defStyle) {

    super(context, attrs, defStyle);

    TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.SlidingMenu, defStyle, 0);

    int n = a.getIndexCount();

    for (int i = 0; i < n; i++) {

    int attr = a.getIndex(i);

    switch (attr) {

    case R.styleable.SlidingMenu_rightPadding:

    mMenuRightPadding = a.getDimensionPixelOffset(attr, (int) TypedValue.applyDimension(

    TypedValue.COMPLEX_UNIT_DIP, 50, context.getResources().getDisplayMetrics()));

    break;

    }

    }

    a.recycle();

    WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);

    DisplayMetrics outMetrics = new DisplayMetrics();

    wm.getDefaultDisplay().getMetrics(outMetrics);

    mScreenWidth = outMetrics.widthPixels;

    }

    其中需要在res/values/下新建一个xml文件为attr.xml,添加适当的代码后如下:

    其中的rightPadding为水平滚动条向右边滑动到极限后保留的距离(原谅我语言匮乏,不怎么会形容),还是不能理解我说的什么意思的话可以自己看看手机qq的效果

    定义view的大小

    我们为了让水平滚动条要适配屏幕的大小,所以得定义一下view的宽和高和自身的宽高

    /**

    * 设置子view的宽和高

    * 设置自己的宽和高

    *

    * @param widthMeasureSpec

    * @param heightMeasureSpec

    */

    @Override

    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

    if (!once) {

    mWapper = (LinearLayout) getChildAt(0);

    mMenu = (ViewGroup) mWapper.getChildAt(0);

    mContent = (ViewGroup) mWapper.getChildAt(1);

    mMenuWidth = mMenu.getLayoutParams().width = mScreenWidth - mMenuRightPadding;

    mContent.getLayoutParams().width = mScreenWidth;

    once = true;

    }

    super.onMeasure(widthMeasureSpec, heightMeasureSpec);

    }

    定义偏移量,实现隐藏

    /**

    * 通过设置偏移量,讲menu隐藏

    *

    * @param changed

    * @param l

    * @param t

    * @param r

    * @param b

    */

    @Override

    protected void onLayout(boolean changed, int l, int t, int r, int b) {

    super.onLayout(changed, l, t, r, b);

    if (changed) {

    this.scrollTo(mMenuWidth, 0);

    }

    }

    滑动事件

    我们怎么来判定是否滑动了这个滚动条呢,并通过这个来显示不同的页面,这就是我们要解决的问题,在这里我们可以onTouchEvent方法来实现,因为只有当我们从屏幕上吧手指抬起来的时候才是我们需要的位置

    @Override

    public boolean onTouchEvent(MotionEvent ev) {

    int action = ev.getAction();

    switch (action) {

    case MotionEvent.ACTION_UP:

    //隐藏在做左边的宽度

    int scrollX = getScrollX();

    if (scrollX >= mMenuWidth * 1.0f / 2) {

    this.smoothScrollTo(mMenuWidth, 0);

    isOpen = false;

    } else {

    this.smoothScrollTo(0, 0);

    isOpen = true;

    }

    return true;

    }

    return super.onTouchEvent(ev);

    }

    activity.xml文件的处理

    在这里我们用的是新建的xml,名称为left_menu.xml 逻辑也是很简单的

    内部逻辑:

    用一个水平排列的LinearLayout

    在LinearLayout内部嵌套RelativeLayout(虽然这样嵌套可能会导致性能收到影响,但我们现在重在理解这个过程)

    在每个RelativeLayout中在添加ImageView和TextView

    这样我们要实现的左边菜单栏,默认隐藏的菜单栏就写好了,代码如下,大家可以选择性的参考:

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:background="@drawable/background">

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    android:layout_centerInParent="true"

    android:orientation="vertical">

    android:layout_width="match_parent"

    android:layout_height="wrap_content">

    android:id="@+id/id_img1"

    android:layout_width="50dp"

    android:layout_height="50dp"

    android:layout_centerVertical="true"

    android:layout_marginLeft="20dp"

    android:layout_marginTop="20dp"

    android:src="@drawable/img_1"/>

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:layout_centerVertical="true"

    android:layout_marginLeft="20dp"

    android:layout_toRightOf="@id/id_img1"

    android:text="第一个item"

    android:textColor="#b41dbc"

    android:textSize="20sp"/>

    android:layout_width="match_parent"

    android:layout_height="wrap_content">

    android:id="@+id/id_img2"

    android:layout_width="50dp"

    android:layout_height="50dp"

    android:layout_centerVertical="true"

    android:layout_marginLeft="20dp"

    android:layout_marginTop="20dp"

    android:src="@drawable/img_2"/>

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:layout_centerVertical="true"

    android:layout_marginLeft="20dp"

    android:layout_toRightOf="@id/id_img2"

    android:text="第二个item"

    android:textColor="#b41dbc"

    android:textSize="20sp"/>

    android:layout_width="match_parent"

    android:layout_height="wrap_content">

    android:id="@+id/id_img3"

    android:layout_width="50dp"

    android:layout_height="50dp"

    android:layout_centerVertical="true"

    android:layout_marginLeft="20dp"

    android:layout_marginTop="20dp"

    android:src="@drawable/img_3"/>

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:layout_centerVertical="true"

    android:layout_marginLeft="20dp"

    android:layout_toRightOf="@id/id_img3"

    android:text="第三个item"

    android:textColor="#b41dbc"

    android:textSize="20sp"/>

    android:layout_width="match_parent"

    android:layout_height="wrap_content">

    android:id="@+id/id_img4"

    android:layout_width="50dp"

    android:layout_height="50dp"

    android:layout_centerVertical="true"

    android:layout_marginLeft="20dp"

    android:layout_marginTop="20dp"

    android:src="@drawable/img_4"/>

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:layout_centerVertical="true"

    android:layout_marginLeft="20dp"

    android:layout_toRightOf="@id/id_img4"

    android:text="第四个item"

    android:textColor="#b41dbc"

    android:textSize="20sp"/>

    android:layout_width="match_parent"

    android:layout_height="wrap_content">

    android:id="@+id/id_img5"

    android:layout_width="50dp"

    android:layout_height="50dp"

    android:layout_centerVertical="true"

    android:layout_marginLeft="20dp"

    android:layout_marginTop="20dp"

    android:src="@drawable/img_5"/>

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:layout_centerVertical="true"

    android:layout_marginLeft="20dp"

    android:layout_toRightOf="@id/id_img5"

    android:text="第五个item"

    android:textColor="#b41dbc"

    android:textSize="20sp"/>

    其中str中引用的图片请自行准备。。。

    打开菜单

    /**

    * 打开菜单

    */

    public void openMenu() {

    if (isOpen) return;

    this.smoothScrollTo(0, 0);

    isOpen = true;

    }

    关闭菜单

    /**

    * 关闭菜单

    */

    public void closeMenu() {

    if (!isOpen) return;

    this.smoothScrollTo(mMenuWidth, 0);

    isOpen = false;

    }

    切换菜单

    /**

    * 切换菜单

    */

    public void toggle() {

    if (isOpen) {

    closeMenu();

    } else {

    openMenu();

    }

    }

    在主页面中引用自定义view

    activity_main.xml

    xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:qq_menu="http://schemas.android.com/apk/res-auto"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    tools:context="com.earthchen.qq_menu.MainActivity">

    android:id="@+id/id_menu"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    qq_menu:rightPadding="100dp">

    android:layout_width="wrap_content"

    android:layout_height="match_parent"

    android:orientation="horizontal">

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:background="@drawable/main">

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:onClick="toggleMenu"

    android:text="切换菜单"/>

    在MainActivity中使用自定义控件

    public class MainActivity extends AppCompatActivity {

    private SlidingMenu mLeftMenu;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

    requestWindowFeature(Window.FEATURE_NO_TITLE);

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    mLeftMenu = (SlidingMenu) findViewById(R.id.id_menu);

    }

    public void toggleMenu(View view) {

    mLeftMenu.toggle();

    }

    }

    运行结果

    以下即为最终运行的结果

    e0e5471e52b6?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

    qq_menu1

    e0e5471e52b6?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

    qq_menu2

    注:

    上述代码在Android studio2.2中编译成功运行,其他ide请自行测试

    上述文字皆为个人看法,如有错误或建议请及时联系我

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,875
精华内容 1,550
关键字:

仿qq侧滑