安卓侧滑

SlidingMenu

下载 SlidingMenu

    https://github.com/jfeinstein10/SlidingMenu

android studio 中导入库文件
这里写图片描述

    将Slidingmenu文件中的library文件夹拷入到AS中,在Project下和app同一目录

这里写图片描述

    或者可以File--New--Import Moudle

这里写图片描述

    可以给library重新命名,这里是SlidingMenuLibrary;

    接着,在app的settings.gradle中,添加   include ':SlidingMenuLibrary' ;

这里写图片描述

    其次,将库文件和app中的build.gradle中的compileSdkVersion ,buildToolsVersion ,minSdkVersion ,targetSdkVersion 都修改一致

这里写图片描述

    接着,将dependencies下的build.gradle中的 classpath 修改一致

这里写图片描述

    之后,SlidingMenu文件中的 CustomViewAbove 会报错,是因为 distanceInfluenceForSnapDuration中的方法(float) FloatMath.sin(f)过时,将FloatMath改为Math就可以了;

这里写图片描述

    改为

这里写图片描述

Build/Make Project ,SlidingMenu添加成功

Activity中new SlidingMenu使用
这里写图片描述

继承SlidingActivity,通过getSlidingMenu()获取slidingmenu对象,setBehindContentView()设置布局

这里写图片描述

DrawerLayout

drawerLayout是带有滑动的功能的控件,包括侧边菜单和主内容两部分

DrawerLayout的基本使用

 1.设置布局xml

这里写图片描述

最外层是控件 android.support.v4.widget.DrawerLayout,其中的id为iv_content 的 ImageView是主界面的内容,id是tv_left_drawerlayout的TextView是侧滑菜单的内容


  2. Activity中设置drawerlayout

这里写图片描述

Activity中通过android.support.v7.app.ActionBarDrawerToggle中的ActionBarDrawerToggle设置drawerlayout 打开或者关闭的操作 onDrawerOpened 和 onDrawerClosed ;
最后,将ActionBarDrawerToggle添加给drawerlayout
如下:
    actionBarDrawerToggle.syncState();
    drawerlayout.addDrawerListener(actionBarDrawerToggle);

drawerlayout和Toolbar一起使用
布局文件
这里写图片描述

    Activity中
public class MainActivity extends ActionBarActivity {
    //声明相关变量
    private Toolbar toolbar;
    private DrawerLayout mDrawerLayout;
    private ActionBarDrawerToggle mDrawerToggle;
    private ListView lvLeftMenu;
    private String[] lvs = {"List Item 01", "List Item 02", "List Item 03", "List Item 04"};
    private ArrayAdapter arrayAdapter;
    private ImageView iv_main;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();
    }

    private void init() {
        iv_main = (ImageView) findViewById(R.id.iv_main);
        toolbar = (Toolbar) findViewById(R.id.tl_custom);
        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerlayout);
        lvLeftMenu = (ListView) findViewById(R.id.lv_left_menu);
        //设置Toolbar标题
        toolbar.setTitle("Toolbar");
        //设置标题颜色
        toolbar.setTitleTextColor(Color.parseColor("#f0f0f0"));
        setSupportActionBar(toolbar);
        //设置返回键可用
        getSupportActionBar().setHomeButtonEnabled(true);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        //创建返回键,并实现打开关/闭监听
        mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, toolbar, R.string.app_name, R.string.app_name) {
            @Override
            public void onDrawerOpened(View drawerView) {
                super.onDrawerOpened(drawerView);
                Toast.makeText(getApplicationContext(), "onDrawerOpened", Toast.LENGTH_SHORT).show();
                iv_main.setVisibility(View.INVISIBLE);
            }

            @Override
            public void onDrawerClosed(View drawerView) {
                super.onDrawerClosed(drawerView);
                Toast.makeText(getApplicationContext(), "onDrawerClosed", Toast.LENGTH_SHORT).show();
                iv_main.setVisibility(View.VISIBLE);

            }
        };
        mDrawerToggle.syncState();
        mDrawerLayout.setDrawerListener(mDrawerToggle);
        //设置菜单列表
        arrayAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, lvs);
        lvLeftMenu.setAdapter(arrayAdapter);
        lvLeftMenu.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Intent intent = new Intent(MainActivity.this, DrawerLayoutActivity.class);
                startActivity(intent);
            }
        });
    }
}

DrawerLayout 和 NavigationView 一起使用

在build.gradle中加入 compile 'com.android.support:design:23.1.1'来添加NavigationView 

这里写图片描述

布局文件中
<?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:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="drawerlayout.com.drawerlayout.NavigationViewActivity">
    <android.support.v7.widget.Toolbar
        android:id="@+id/nv_toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?attr/colorPrimary"
        android:minHeight="?attr/actionBarSize"
        android:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

    <android.support.v4.widget.DrawerLayout
        android:id="@+id/nv_drawerlayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <!--主布局-->
        <ImageView
            android:id="@+id/nv_iv_main"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
        <!--侧滑菜单-->
        <android.support.design.widget.NavigationView
            android:id="@+id/navigationView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            android:background="#ffffff"
            app:itemIconTint="@null"
            app:itemTextColor="#666666"
            app:menu="@menu/activity_nv_drawer" />
    </android.support.v4.widget.DrawerLayout>
</LinearLayout>
    其中的menu

这里写图片描述

这里写图片描述

    其中的内容

这里写图片描述

    在Activity中
public class NavigationViewActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {

    private Toolbar nv_toolbar;
    private DrawerLayout nv_drawerlayout;
    private ImageView nv_iv_main;
    private NavigationView navigationView;
    private View headerLayout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_navigation_view);
        init();
    }

    private void init() {
        nv_toolbar = (Toolbar) findViewById(R.id.nv_toolbar);
        nv_drawerlayout = (DrawerLayout) findViewById(R.id.nv_drawerlayout);
        nv_iv_main = (ImageView) findViewById(R.id.nv_iv_main);
        navigationView = (NavigationView) findViewById(R.id.navigationView);
        //给添加头标题
        headerLayout = navigationView.inflateHeaderView(R.layout.nav_header_main);
        nv_toolbar.setTitle("NavigationViewActivity的Toolbar");
        nv_toolbar.setTitleTextColor(Color.parseColor("#f0f0f0"));
        nv_toolbar.setNavigationIcon(R.mipmap.un_confirm);
        nv_toolbar.setSubtitle("nv副标题");
        navigationView.setNavigationItemSelectedListener(this);
        navigationView.setItemIconTintList(null);//设置菜单图标恢复本来的颜色,不然图标是灰色
        setSupportActionBar(nv_toolbar);
        //设置返回键可用--在setSupportActionBar()之后,不然报空指针
        getSupportActionBar().setHomeButtonEnabled(true);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, nv_drawerlayout, nv_toolbar, R.string.app_name, R.string.app_name){
            @Override
            public void onDrawerOpened(View drawerView) {
                super.onDrawerOpened(drawerView);
                Toast.makeText(getApplicationContext(), "onDrawerOpened", Toast.LENGTH_SHORT).show();
                nv_iv_main.setBackground(getResources().getDrawable(R.mipmap.notice));
            }

            @Override
            public void onDrawerClosed(View drawerView) {
                super.onDrawerClosed(drawerView);
                Toast.makeText(getApplicationContext(), "onDrawerClosed", Toast.LENGTH_SHORT).show();
                nv_iv_main.setBackground(getResources().getDrawable(R.mipmap.home));
            }
        };
        toggle.syncState();
        nv_drawerlayout.setDrawerListener(toggle);

    }

    @Override
    public boolean onNavigationItemSelected(MenuItem item) {
        String msg = "";
        switch (item.getItemId()) {
            case R.id.home_checked:
                msg = "home_checked";
                break;
            case R.id.order_checked:
                msg = "order_checked";
                break;
            case R.id.discovery_checked:
                msg = "discovery_checked";
                break;
            case R.id.user_checked:
                msg = "user_checked";
                break;
            case R.id.confirm:
                msg = "confirm";
                break;
        }
        Toast.makeText(getApplicationContext(), "msg--" + msg, Toast.LENGTH_SHORT).show();
        return true;
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_nv_drawer, menu);
        return true;
    }
}
    添加头标题
     headerLayout = navigationView.inflateHeaderView(R.layout.nav_header_main);

这里写图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值