日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

抽屉效果的实现(DrawerLayout和SlidingMenu的对比)

發布時間:2025/6/15 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 抽屉效果的实现(DrawerLayout和SlidingMenu的对比) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ? ? 在做谷歌電子市場的時候用的是DrawerLayout實現的抽屜效果,在新聞客戶端的時候用的是開源框架SlidingMenu來實現的,總的來說,各有個的優點,側滑(開源框架)實現的效果更好,但是DrawerLayout直接寫布局文件就好了,不過我還是比較喜歡用開源框架的這個。下面分別來說說如何實現:

1、SlidingMenu

?首先要引入SlidingMenu的庫文件的類庫,不能直接導入jar包。然后 Activity繼承SlidingFragmentActivity。其次,將onCreate方法改為public。

在主界面中添加如下代碼:

//調用apisetBehindContentView(R.layout.left_menu);// 設置側邊欄布局SlidingMenu slidingMenu = getSlidingMenu();// 獲取側邊欄對象slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);// 設置全屏觸摸slidingMenu.setSecondaryMenu(R.layout.right_menu);// 設置右側邊欄slidingMenu.setMode(SlidingMenu.LEFT_RIGHT);// 設置展現模式slidingMenu.setBehindOffset(100);// 設置預留屏幕的寬度


在BasePager.java中添加如下代碼。

/*** 切換SlidingMenu的狀態* * @param b*/protected void toggleSlidingMenu() {MainActivity mainUi = (MainActivity) mActivity;SlidingMenu slidingMenu = mainUi.getSlidingMenu();slidingMenu.toggle();// 切換狀態, 顯示時隱藏, 隱藏時顯示}/*** 初始化數據*/public void initData() {}/*** 設置側邊欄開啟或關閉* * @param enable*/public void setSlidingMenuEnable(boolean enable) {MainActivity mainUi = (MainActivity) mActivity;SlidingMenu slidingMenu = mainUi.getSlidingMenu();if (enable) {slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);} else {slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_NONE);}}每個子界面都可以用到如下的代碼:

public class SettingPager extends BasePager {public SettingPager(Activity activity) {super(activity);}@Overridepublic void initData() {//System.out.println("初始化設置數據....");tvTitle.setText("設置");btnMenu.setVisibility(View.GONE);// 隱藏菜單按鈕setSlidingMenuEnable(false);// 關閉側邊欄TextView text = new TextView(mActivity);text.setText("設置");text.setTextColor(Color.RED);text.setTextSize(25);text.setGravity(Gravity.CENTER);// 向FrameLayout中動態添加布局flContent.addView(text);}}




二、DrawerLayout

直接在布局文件中這樣寫:

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity" android:id="@+id/dl"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_centerHorizontal="true"android:layout_centerVertical="true"/><FrameLayout android:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/bg_tab"android:layout_gravity="left"></FrameLayout></android.support.v4.widget.DrawerLayout>然后再主頁面中添加:

控制抽屜的開關, 顯示在actionBar 上面?

public class MainActivity extends BaseActivity implementsOnQueryTextListener {private DrawerLayout mDrawerLayout;private ActionBarDrawerToggle drawerToggle;private ViewPager mViewPager;private PagerTabStrip pager_tab_strip;private String[] tab_names; // 標簽的名字@Overrideprotected void initActionBar() {ActionBar actionBar = getSupportActionBar();actionBar.setDisplayHomeAsUpEnabled(true);actionBar.setHomeButtonEnabled(true);/** 1)顯示Navigation Drawer的 Activity 對象2) DrawerLayout 對象3)一個用來指示Navigation Drawer的 drawable資源4)一個用來描述打開Navigation Drawer的文本 (用于支持可訪問性)。5)一個用來描述關閉Navigation Drawer的文本(用于支持可訪問性). */drawerToggle = new ActionBarDrawerToggle(this,mDrawerLayout, R.drawable.ic_drawer_am, R.string.open_drawer,R.string.close_drawer){@Overridepublic void onDrawerClosed(View drawerView) {super.onDrawerClosed(drawerView);Toast.makeText(getApplicationContext(), "抽屜關閉了", 0).show();}@Overridepublic void onDrawerOpened(View drawerView) {super.onDrawerOpened(drawerView);Toast.makeText(getApplicationContext(), "抽屜打開了", 0).show();}};mDrawerLayout.setDrawerListener(drawerToggle);// 讓開關和actionbar建立關系 drawerToggle.syncState();} }




《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的抽屉效果的实现(DrawerLayout和SlidingMenu的对比)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。