最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android中DrawerLayout實現(xiàn)側(cè)滑菜單效果

 更新時間:2017年10月25日 15:09:44   作者:肖旺銀  
這篇文章主要為大家詳細(xì)介紹了Android中DrawerLayout實現(xiàn)側(cè)滑菜單效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下

眾所周知,android里面我們很熟悉的一個功能,側(cè)滑菜單效果在以前我們大部分都是用的slidingmenu這個開源框架,自從谷歌官方新出的一個DrawerLayout控件之后,越來越多的應(yīng)用開始使用谷歌的官方的控件寫這個效果了。
話不多說,先來發(fā)圖以表我滴誠意:

開始寫代碼

DrawerLayout 是v4包里面的,所以項目里面需要添加v4包,具體怎么添加就不多說了,
NavigationView需要在build.gradle里面添加compile ‘com.android.support:design:25.1.0'

activity_main.xml

<android.support.v4.widget.DrawerLayout 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:id="@+id/drawer_layout"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:fitsSystemWindows="true"
 tools:openDrawer="start">

 <!-- 右邊視圖 -->
 <include
 layout="@layout/app_bar_main"
 android:layout_width="match_parent"
 android:layout_height="match_parent" />

 <!-- 左邊菜單 -->
 <android.support.design.widget.NavigationView
 android:id="@+id/nav_view"
 android:layout_width="wrap_content"
 android:layout_height="match_parent"
 android:layout_gravity="start"
 android:fitsSystemWindows="true"
 app:headerLayout="@layout/nav_header_main"
 app:menu="@menu/activity_main_drawer" />

</android.support.v4.widget.DrawerLayout>

然后在res文件夾里面添加一個menu菜單文件夾,已經(jīng)添加的就不用添加了

上面的代碼里面NavigationView里面有個 app:menu=”@menu/activity_main_drawer”對應(yīng)如下:
添加一個菜單文件,名字隨意,我的是activity_main_drawer.xml

activity_main_drawer.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

 <group android:checkableBehavior="single">
 <item
  android:id="@+id/nav_camera"
  android:icon="@drawable/ic_menu_camera"
  android:title="第一行" />
 <item
  android:id="@+id/nav_gallery"
  android:icon="@drawable/ic_menu_gallery"
  android:title="第二行" />
 <item
  android:id="@+id/nav_slideshow"
  android:icon="@drawable/ic_menu_slideshow"
  android:title="第三行" />
 <item
  android:id="@+id/nav_manage"
  android:icon="@drawable/ic_menu_manage"
  android:title="第四行" />
 </group>

 <item android:title="Communicate">
 <menu>
  <item
  android:id="@+id/nav_share"
  android:icon="@drawable/ic_menu_share"
  android:title="第五行" />
  <item
  android:id="@+id/nav_send"
  android:icon="@drawable/ic_menu_send"
  android:title="第六行" />
 </menu>
 </item>

</menu>

再添加一個布局

上面的代碼里面app:headerLayout=”@layout/nav_header_main”對應(yīng)如下:
添加一個布局,名字是nav_header_main.xml

nav_header_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"
 android:layout_width="match_parent"
 android:layout_height="@dimen/nav_header_height"
 android:background="@drawable/side_nav_bar"
 android:gravity="bottom"
 android:orientation="vertical"
 android:paddingBottom="@dimen/activity_vertical_margin"
 android:paddingLeft="@dimen/activity_horizontal_margin"
 android:paddingRight="@dimen/activity_horizontal_margin"
 android:paddingTop="@dimen/activity_vertical_margin"
 android:theme="@style/ThemeOverlay.AppCompat.Dark">

 <ImageView
 android:id="@+id/imageView"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:paddingTop="@dimen/nav_header_vertical_spacing"
 app:srcCompat="@android:drawable/sym_def_app_icon" />

 <TextView
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:paddingTop="@dimen/nav_header_vertical_spacing"
 android:text="哈哈哈"
 android:textAppearance="@style/TextAppearance.AppCompat.Body1" />

 <TextView
 android:id="@+id/textView"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="123456789@qq.com" />

</LinearLayout>

MainActivity:

public class MainActivity extends BaseActivity implements NavigationView.OnNavigationItemSelectedListener {

 private LinearLayout right;
 private NavigationView left;
 private boolean isDrawer=false;
 private DrawerLayout drawer;



 @Override
 public int getLayoutId() {
 return R.layout.activity_main;
 }

 @Override
 public void initPresenter() {

 }

 @Override
 public void initView() {
 drawer = (DrawerLayout) findViewById(R.id.drawer_layout);


 right = (LinearLayout) findViewById(R.id.right);
 left = (NavigationView) findViewById(R.id.nav_view);

 NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
 navigationView.setNavigationItemSelectedListener(this);

 right.setOnTouchListener(new View.OnTouchListener() {
  @Override
  public boolean onTouch(View view, MotionEvent motionEvent) {
  if(isDrawer){
   return left.dispatchTouchEvent(motionEvent);
  }else{
   return false;
  }
  }
 });
 drawer.setDrawerListener(new DrawerLayout.DrawerListener() {
  @Override
  public void onDrawerSlide(View drawerView, float slideOffset) {
  isDrawer=true;
  //獲取屏幕的寬高
  WindowManager manager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
  Display display = manager.getDefaultDisplay();
  //設(shè)置右面的布局位置 根據(jù)左面菜單的right作為右面布局的left 左面的right+屏幕的寬度(或者right的寬度這里是相等的)為右面布局的right
  right.layout(left.getRight(), 0, left.getRight() + display.getWidth(), display.getHeight());
  }
  @Override
  public void onDrawerOpened(View drawerView) {}
  @Override
  public void onDrawerClosed(View drawerView) {
  isDrawer=false;
  }
  @Override
  public void onDrawerStateChanged(int newState) {}
 });


 }



 @Override
 public void onBackPressed() {
 if (drawer.isDrawerOpen(GravityCompat.START)) {
  drawer.closeDrawer(GravityCompat.START);
 } else {
  super.onBackPressed();
 }
 }




 @SuppressWarnings("StatementWithEmptyBody")
 @Override
 public boolean onNavigationItemSelected(MenuItem item) {
 // Handle navigation view item clicks here.
 int id = item.getItemId();

 if (id == R.id.nav_camera) {
  // Handle the camera action
 } else if (id == R.id.nav_gallery) {

 } else if (id == R.id.nav_slideshow) {

 } else if (id == R.id.nav_manage) {

 } else if (id == R.id.nav_share) {

 } else if (id == R.id.nav_send) {

 }

 DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
 drawer.closeDrawer(GravityCompat.START);
 return true;
 }


drawer.openDrawer(GravityCompat.START);//打開滑動菜單

drawer.closeDrawer(GravityCompat.START);//關(guān)閉滑動菜單

drawer.isDrawerOpen(GravityCompat.START);//判斷滑動菜單是否打開

具體源碼demo下載地址

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android獲取手機(jī)通話記錄的方法

    Android獲取手機(jī)通話記錄的方法

    這篇文章主要為大家詳細(xì)介紹了Android獲取手機(jī)通話記錄的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • Android判斷是否有拍照權(quán)限的實例代碼

    Android判斷是否有拍照權(quán)限的實例代碼

    android在開發(fā)中有時候要判斷應(yīng)用中是否有某項權(quán)限,下面通過本文給大家分享Android判斷是否有拍照權(quán)限的實例代碼,需要的的朋友參考下吧
    2017-07-07
  • 從源碼分析Android的Volley庫的工作流程

    從源碼分析Android的Volley庫的工作流程

    這篇文章主要介紹了從源碼分析Android的Volley應(yīng)用開發(fā)框架的工作流程,文中對Volley的請求處理和緩存部分介紹得比較詳細(xì),需要的朋友可以參考下
    2016-02-02
  • Android那兩個你碰不到但是很重要的類之ActivityThread

    Android那兩個你碰不到但是很重要的類之ActivityThread

    上篇文章我們聊了些Android里那些我們平時碰不到但很重要的類ViewRootImpl,這一篇我們就來看看另外那個類ActivityThread,文中有相關(guān)的代碼示例,感興趣的同學(xué)可以跟著小編一起來學(xué)習(xí)
    2023-05-05
  • Android巧用ActionBar實現(xiàn)tab導(dǎo)航效果

    Android巧用ActionBar實現(xiàn)tab導(dǎo)航效果

    這篇文章主要為大家詳細(xì)介紹了Android巧用ActionBar實現(xiàn)tab導(dǎo)航效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-05-05
  • android實現(xiàn)簡單左滑刪除控件

    android實現(xiàn)簡單左滑刪除控件

    這篇文章主要為大家詳細(xì)介紹了android實現(xiàn)一個簡單左滑刪除控件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • Android 去掉自定義dialog的白色邊框的簡單方法

    Android 去掉自定義dialog的白色邊框的簡單方法

    這篇文章介紹了Android 去掉自定義dialog的白色邊框,有需要的朋友可以參考一下
    2013-09-09
  • 詳解Android啟動第一幀

    詳解Android啟動第一幀

    這篇文章我們就來介紹Android啟動第一幀,至于Android第一幀什么時候開始調(diào)度,具體內(nèi)容我們就來看下面文章內(nèi)容吧,感興趣得小伙伴可以和小編一起來學(xué)習(xí)奧
    2021-10-10
  • Flutter改變狀態(tài)變量是否必須寫在setState回調(diào)詳解

    Flutter改變狀態(tài)變量是否必須寫在setState回調(diào)詳解

    這篇文章主要為大家介紹了Flutter改變狀態(tài)變量是否必須寫在setState回調(diào)里的原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • 去掉activity默認(rèn)動畫效果的簡單方法

    去掉activity默認(rèn)動畫效果的簡單方法

    下面小編就為大家?guī)硪黄サ鬭ctivity默認(rèn)動畫效果的簡單方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12

最新評論

昔阳县| 城步| 扎兰屯市| 合作市| 永泰县| 闽清县| 云安县| 宜君县| 阿瓦提县| 漾濞| 和静县| 陆丰市| 闽清县| 土默特左旗| 荔波县| 县级市| 黄陵县| 遵义县| 万年县| 蛟河市| 旬邑县| 新昌县| 时尚| 英山县| 游戏| 辉县市| 靖远县| 平塘县| 门头沟区| 涪陵区| 新平| 奉化市| 镇坪县| 寿阳县| 将乐县| 华池县| 吉林市| 平和县| 株洲县| 兴文县| 陇西县|