Android5.0:Toolbar + DrawerLayout 实现侧滑效果

来源:互联网 发布:奥威软件 编辑:程序博客网 时间:2024/06/01 07:56

效果图:
这里写图片描述

相关介绍及用法

有关的类:

  1. DrawerLayout: v4 侧滑效果
  2. ToolBar: v7 标题
  3. ActionBarDrawerToggle:v7 侧滑开关(源码已经实现了侧滑监听)

步骤:

  1. 获取DrawerLayout + ToolBar
  2. 设置ToolBar
  3. 创建ActionBarDrawerToggle对象并同步
  4. 给DrawerLayout 添加监听:

代码

MainActivity.java

package com.cqc.app2;import android.support.v4.widget.DrawerLayout;import android.support.v7.app.ActionBarDrawerToggle;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.Toolbar;public class MainActivity extends AppCompatActivity {    private DrawerLayout drawerLayout;    private Toolbar toolbar;    private ActionBarDrawerToggle toggle;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        drawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);        toolbar = (Toolbar) findViewById(R.id.toolbar);        initToolbar();    }    private void initToolbar() {        //导航图标默认自带        toolbar.setLogo(R.mipmap.ic_launcher);        toolbar.setTitle(R.string.app_name);        //实现了监听的开关 ,最后2个参数可以写0        toggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.open, R.string.close);        toggle.syncState();//同步drawerLayout        //给drawerlayout添加监听        //方法一:        drawerLayout.addDrawerListener(toggle);        //方法二://        drawerLayout.addDrawerListener(new DrawerLayout.DrawerListener() {//            @Override//            public void onDrawerSlide(View drawerView, float slideOffset) {//                toggle.onDrawerSlide(drawerView, slideOffset);//            }////            @Override//            public void onDrawerOpened(View drawerView) {//                toggle.onDrawerOpened(drawerView);//            }////            @Override//            public void onDrawerClosed(View drawerView) {//                toggle.onDrawerClosed(drawerView);//            }////            @Override//            public void onDrawerStateChanged(int newState) {//                toggle.onDrawerStateChanged(newState);//            }//        });    }}//drawerlayout实现侧拉还要添加下面这行代码@Overridepublic boolean onOptionsItemSelected(MenuItem item) {    toggle.onOptionsItemSelected(item);    return super.onOptionsItemSelected(item);}//如果是下面这种,就不需要设置toggle.onOptionsItemSelected(item);toggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.open, R.string.close){    @Override    public void onDrawerOpened(View drawerView) {        super.onDrawerOpened(drawerView);    }    @Override    public void onDrawerClosed(View drawerView) {        super.onDrawerClosed(drawerView);    }};

activity_main.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">    <!--Toolbar-->    <include layout="@layout/toolbar"/>    <!--DrawerLayout-->    <include layout="@layout/drawer_layout"/></LinearLayout>

toolbar.xml

<?xml version="1.0" encoding="utf-8"?><android.support.v7.widget.Toolbar    android:id="@+id/toolbar"    xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:background="#64B5F6"    android:gravity="center_vertical"/>

drawerLayout .xml

<?xml version="1.0" encoding="utf-8"?><android.support.v4.widget.DrawerLayout    android:id="@+id/drawerLayout"    xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent">    <!--内容页 要放在上面-->    <LinearLayout        android:layout_width="match_parent"        android:layout_height="match_parent">        <TextView            android:layout_width="match_parent"            android:layout_height="50dp"            android:text="内容页"            android:textSize="25sp"/>    </LinearLayout>    <!--不加背景色透明-->    <LinearLayout        android:layout_width="match_parent"        android:layout_height="match_parent"        android:layout_gravity="start"        android:background="#ffffff">        <TextView            android:layout_width="match_parent"            android:layout_height="50dp"            android:text="侧拉页"            android:textSize="25sp"/>    </LinearLayout></android.support.v4.widget.DrawerLayout>

注意事项

1.侧拉页透明:原因:没有加背景色(如白色#FFFFFF)
2.怎么去掉actionbar:style.xml:改为:Theme.AppCompat.Light.NoActionBar

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 华为手机拨打电话时黑屏怎么办 小米6x拨电话黑屏怎么办 魅族手机打电话黑屏怎么办 三星手机拨打电话时黑屏怎么办 华为畅享5打电话黑屏怎么办 小米note通话声音小怎么办 金立m5黑屏开不了机怎么办 金立手机光感器坏了怎么办 红掌根部烂了怎么办 魅族相册闪退怎么办 魅族手机闪退怎么办 苹果6手机主页面打不开怎么办 手机中病毒闪退怎么办 酷派手机开机黑屏怎么办啊 酷派手机黑屏打不开怎么办 酷派手机不开机怎么办 乐视手机开不了机怎么办 vivo手机拨号键盘不见了怎么办 华为手机拨号键盘不见了怎么办 金立手机拨号键盘不见了怎么办 酷派手机home键失灵怎么办 r11屏碎一半黑屏怎么办 金立手机黑屏打不开怎么办 小米8se自动跳出广告怎么办 小米手机总跳出广告怎么办 小米手机总是出现广告怎么办 红米1s开机黑屏怎么办 红米手机打电话黑屏怎么办 小米4c打游戏卡怎么办 电脑总出现拨号连接怎么办 win10电脑没有拨号连接怎么办 红米手机黑屏了怎么办 小米4s黑屏了怎么办 鼠标的左键失灵怎么办 小米5左键失灵怎么办 小米4左键失灵怎么办 小米5s左键失灵怎么办 单击鼠标左键就会自动删除?怎么办 华为五s开不开机怎么办 荣耀8关不了机怎么办 三星s7左键失灵怎么办