侧边栏的简单实现(使用drawerLayout)

来源:互联网 发布:网络趣味哲理小事 编辑:程序博客网 时间:2024/05/20 07:32

不能算真正意义上的侧边栏

首先root 布局使用android.support.v4.widget.DrawerLayout

布局文件:

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/main_layout"    android:layout_width="match_parent"    android:layout_height="match_parent" >    <!-- main layout must be the first one layout -->    <!-- using background to devide -->    <RelativeLayout        android:id="@+id/content_layout"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:background="#000" />    <!-- drawer layout -->    <!-- layout_gravity="start": means to show it from left to main position -->    <!-- 240dp is lower than all phones width -->    <!-- using background to devide -->    <RelativeLayout        android:id="@+id/drawer_layout"        android:layout_gravity="start"        android:layout_width="240dp"        android:layout_height="match_parent"        android:background="#fff" /></android.support.v4.widget.DrawerLayout>

java代码:

package com.drawerlayoutdemo;import android.os.Bundle;import android.app.Activity;import android.support.v4.widget.DrawerLayout;import android.support.v4.widget.DrawerLayout.DrawerListener;import android.util.Log;import android.view.KeyEvent;import android.view.View;import android.widget.RelativeLayout;public class MainActivity extends Activity implements DrawerListener {private DrawerLayout mainLayout;private RelativeLayout contentLayout, drawerLayout;private String tag = "MainActivity";//用该变量标示抽屉是否被打开private boolean drawIsOpened = false;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mainLayout = (DrawerLayout) findViewById(R.id.main_layout);mainLayout.setDrawerListener(this);//获取主布局contentLayout = (RelativeLayout) findViewById(R.id.content_layout);//获取左侧布局drawerLayout = (RelativeLayout) findViewById(R.id.drawer_layout);}//如果要使用菜单键来(打开||关闭)抽屉,则重写onKeyDown方法//根据drawIsOpened来决定是(打开||关闭)@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_MENU) {if (drawIsOpened) {mainLayout.closeDrawer(drawerLayout);} else {mainLayout.openDrawer(drawerLayout);}}return super.onKeyDown(keyCode, event);}/* 覆写DrawerListener里的方法 */@Overridepublic void onDrawerClosed(View arg0) {Log.i(tag, "drawer close");drawIsOpened = false;}@Overridepublic void onDrawerOpened(View arg0) {// TODO Auto-generated method stubLog.i(tag, "drawer open");drawIsOpened = true;}@Overridepublic void onDrawerSlide(View arg0, float delta) {Log.i(tag, "draw slide");Log.i(tag, delta + "");}@Overridepublic void onDrawerStateChanged(int state) {Log.i(tag, "draw state change to " + state);}/* 覆写DrawerListener里的方法 */}


1 0
原创粉丝点击