利用DrawerLayout實現簡單的抽屜效果,drawerlayout抽屜

來源:互聯網
上載者:User

利用DrawerLayout實現簡單的抽屜效果,drawerlayout抽屜

前言,本篇文章是最基礎的利用DrawerLayout實現抽屜效果,我也是盡量精簡到了最高效的代碼,後面我會貼出其他比較複雜的功能。

先看


標題列中的文字,會根據點擊item的不同,而顯示不同的樣式。

直接上代碼。

下面是activity_main的代碼

<RelativeLayout 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" >    <android.support.v4.widget.DrawerLayout        xmlns:android="http://schemas.android.com/apk/res/android"        android:id="@+id/drawer_layout"        android:layout_width="match_parent"        android:layout_height="match_parent" >        <!-- 當前主介面顯示內容視圖 -->        <!-- 主內容必須是DrawerLayout的第一個元素,因為它將第一個顯示,並且抽屜必須在內容之上 -->        <FrameLayout            android:id="@+id/content_frame"            android:layout_width="match_parent"            android:layout_height="match_parent" />        <!-- 隱藏式瀏覽選單視圖 -->        <ListView            android:id="@+id/left_drawer"            android:layout_width="240dp"            android:layout_height="match_parent"            android:layout_gravity="left"            android:background="@android:color/holo_red_dark"            android:choiceMode="singleChoice"            android:divider="@android:color/transparent"            android:dividerHeight="5dp" />    </android.support.v4.widget.DrawerLayout></RelativeLayout>


  • 抽屜菜單的寬度為 dp 單位而高度和父View一樣。抽屜菜單的寬度應該不超過320dp,這樣使用者可以在菜單開啟的時候看到部分內容介面。
接下來是MainActivity代碼
package com.example.chouti;import android.os.Bundle;import android.app.Activity;import android.content.res.Configuration;import android.view.MenuItem;import android.view.View;import android.view.Window;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.ArrayAdapter;import android.widget.ListView;import android.support.v4.app.ActionBarDrawerToggle;import android.support.v4.view.GravityCompat;import android.support.v4.widget.DrawerLayout;public class MainActivity extends Activity {private String[] mPlanetTitles = { "hahhooo", "jdahldfj", "這是真的嗎","這應該是真的", "4", "jdahldfj", "這是真的嗎", "這應該是真的", "jdahldfj", "這是真的嗎","這應該是真的" };private DrawerLayout mDrawerLayout;private ActionBarDrawerToggle mDrawerToggle;private ListView mDrawerList;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);// 初始化ListView和適配資料initListView(); //mDrawerLayout.setDrawerShadow(R.drawable.ic_launcher, GravityCompat.START);  //初始化ActionBarDrawerTogglemDrawerToggle = new ActionBarDrawerToggle(this,//顯示抽屜的Activity對象mDrawerLayout,//DrawerLayout 對象R.drawable.ic_launcher, //一個用來指示抽屜的 drawable資源(如果想顯示這個表徵圖的話,必須重寫onPostCreate(Bundle savedInstanceState))R.string.hello_world,//一個用來描述開啟抽屜的文本 (用於支援可訪問性)R.string.hello_world);//一個用來描述關閉抽屜的文本(用於支援可訪問性)// 將ActionBarDrawerToggle設定為DrawerListenermDrawerLayout.setDrawerListener(mDrawerToggle);// ActionBar操作模式開啟(調用這個方法,點擊表徵圖才會有響應)getActionBar().setDisplayHomeAsUpEnabled(true);getActionBar().setHomeButtonEnabled(true);// 注意: getActionBar() 添加是在 API level 11}//這裡就是onPostCreate(Bundle savedInstanceState)方法//@Override//protected void onPostCreate(Bundle savedInstanceState) {////super.onPostCreate(savedInstanceState);//mDrawerToggle.syncState();//}private void initListView() {mDrawerList = (ListView) findViewById(R.id.left_drawer);// 適配資料mDrawerList.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,mPlanetTitles));// 為listView設定監聽事件mDrawerList.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {// 更新標題,並關閉抽屜setTitle(mPlanetTitles[position]);mDrawerLayout.closeDrawer(mDrawerList);}});}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {//傳遞事件給ActionBarDrawerToggle,如果返回true,它將處理表徵圖響應事件if (mDrawerToggle.onOptionsItemSelected(item)) {return true;}//處理其他動作點擊條目return super.onOptionsItemSelected(item);}}


關於ActionBar相關知識,如果你想進一步瞭解,請點擊這裡http://blog.csdn.net/harryweasley/article/details/42027521關於DrawerLayout更詳細的解說,你可以點擊這裡http://blog.csdn.net/harryweasley/article/details/42027487
或者http://blog.csdn.net/harryweasley/article/details/42027563

以上三個文章都是我轉載的,協助我完成上面項目的。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.