zoukankan      html  css  js  c++  java
  • Android SlidingMenu使用详解

    SlidingMenu是安卓程序中的侧滑界面,和系统自带的DrawerLayout的作用是相同的,主要是视觉效果不一样,手机版QQ使用的侧滑界面就是SlidingMenu

    初步使用方法:实现侧滑界面滑出效果

    步骤一:下载好SlidingMenu类库文件后导入到项目中

    SlidingMenu类库网盘下载地址:

    链接:https://pan.baidu.com/s/1df7GKm  密码:vg50  

    将下载好的SlidingMenu-master文件中的library导入到当前项目中

    导入后注意修改library的build.gradle中的以下信息和当前项目的一致

    之后可能会报一个错,显示的是FloatMath已经过期,手动将FloatMath改成Math就好

    步骤二:成功导入类库后就可以在java代码中使用SlidingMenu这个类啦,通过java代码实现侧滑界面效果

    先上activity_main.xml中的布局:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:orientation="vertical"
        android:background="#ed0e0e"
        android:layout_height="match_parent"
        tools:context="com.contentprovide.liuliu.slidmingmenu_4.MainActivity">
    
    
        <Button
            android:id="@+id/button"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Button" />
    
    
    </LinearLayout>
    

     侧滑界面需要引用的自定义的资源布局slid.xml

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    
    
       <TextView
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="我是侧滑界面"
           />
    
    
    </LinearLayout>
    

    Java代码实现: 

    package com.contentprovide.liuliu.slidmingmenu_4;
    
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.view.View;
    import android.widget.Button;
    
    import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
    
    public class MainActivity extends AppCompatActivity {
    
    
        SlidingMenu slidingMenu;
    
        Button button;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            button = (Button) findViewById(R.id.button);
    
            slidingMenu = new SlidingMenu(this);
    //        设置呈现模式
            slidingMenu.setMode(SlidingMenu.LEFT);//呈现模式为左边
    //        设置侧滑界面偏移出的尺寸
            slidingMenu.setBehindOffset(200);
    //        设置全屏都可以触摸
            slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
    //        添加到当前Activity当中
            slidingMenu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
    //        给侧滑界面引用一个布局资源作为所展示的界面
            slidingMenu.setMenu(R.layout.slid);
    
    //        给主界面的按钮添加事件,点击滑出菜单
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    slidingMenu.toggle(true);
                }
            });
    
    
    
    
        }
    }
    

     实现效果:

    SlidingMenu常用属性

    //设置侧滑菜单的位置,可选值LEFT , RIGHT , LEFT_RIGHT (两边都有菜单时设置)

    menu.setMode(SlidingMenu.LEFT_RIGHT);

    // 设置触摸屏幕的模式,可选只MARGIN , CONTENT 
    menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);

    //根据dimension资源文件的ID来设置阴影的宽度
    menu.setShadowWidthRes(R.dimen.shadow_width);

    //根据资源文件ID来设置滑动菜单的阴影效果
    menu.setShadowDrawable(R.drawable.shadow);

    // 这两个都是设置滑动菜单视图的宽度,二选一
    //设置SlidingMenu离屏幕的偏移量
    menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
    //设置宽度
    menu.setBehindWidth()

    // 设置渐入渐出效果的值
    menu.setFadeDegree(0.35f);

    //设置SlidingMenu与下方视图的移动的速度比,当为1时同时移动,取值0-1
    menu.setBehindScrollScale(1.0f);

    //设置二级菜单的阴影效果
    menu.setSecondaryShadowDrawable(R.drawable.shadow);

    //设置右边(二级)侧滑菜单
    menu.setSecondaryMenu(R.layout.right_menu_frame);

    //为侧滑菜单设置布局
    menu.setMenu(R.layout.leftmenu);

    //把滑动菜单添加进所有的Activity中,可选值SLIDING_CONTENT , SLIDING_WINDOW
    menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);

    进阶使用方法:给在SlidingMenu中的布局中的各种空间添加事件,结合使用Fragment

    滑出侧滑界面后我们需要在侧滑界面中进行下一步操作,这样侧滑界面中的布局里的事件就要单独写了

    通过serMenu(a)方法给侧滑界面引用了布局界面a.xml,在这个a.xml布局界面中只有一个FrameLayout,侧滑界面中的所有代码是写在Fragment中的,然后通过使用FragmentManager将Fragment替换掉此Fragment,这下就相当于setMenu方法引用的是Fragment了

    实现效果:

     

  • 相关阅读:
    HTML5 Shiv – 让该死的IE系列支持HTML5吧(转)
    sql之left join、right join、inner join的区别
    一道JS的简单算法题
    逆波兰式计算字符串公式
    前端编程,语义化
    罗列各种排序Mark
    关于JS动画和CSS3动画的性能差异
    各种算法题MARK
    Html笔记【不定时更新】
    CSS3笔记【不定时更新】
  • 原文地址:https://www.cnblogs.com/lyd447113735/p/8395134.html
Copyright © 2011-2022 走看看