侧滑菜单的实现DrawerLayout

如今手机App大多都会有侧滑菜单设计,先对Menu功能更加美观实用。可以将比较多的功能放入该区域,实现系统管理,也可作为App功能导航。

如知乎Android客户端:

侧滑菜单的实现DrawerLayout_第1张图片

那么这个功能如何实现的呢?

其实Google最初就提供了SlidingDrawer的类,可以实现部分功能,但是在较新的版本中,Google不推荐实用该类;在这种情况下我们其实有多种选择的,在github上有开源项目SlidingMenu,可以实现此功能,使用液很多;另外一种就是使用Google的另外一个布局控件android.support.v4.widget.DrawerLayout,废话不多说,上马:

<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"
    tools:context=".DrawerActivity" >

    <android.support.v4.widget.DrawerLayout
        android:id="@+id/drawer_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <!-- The main content view -->

        <FrameLayout
            android:id="@+id/content_frame"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

        <!-- The navigation drawer -->

        <ScrollView
            android:id="@+id/left_drawer"
            android:layout_width="240dp"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            android:background="@color/drawer_bg"
            android:choiceMode="singleChoice"
            android:divider="@android:color/transparent"
            android:dividerHeight="0dp" >

            <include layout="@layout/drawer_layout"/>
        </ScrollView>
        
    </android.support.v4.widget.DrawerLayout>

</RelativeLayout>

在布局文件中引入类DrawerLayout类,在其子节点中有两个控件,第一个子节点为主界面的布局,本君使用一个FrameLayout;第二个子节点为侧滑界面的布局,本君使用一个ScrollView,然后为其引入一个子布局作为详细的布局样式。

Android系统会自动将其第一个子节点设为主界面控件,第二个为侧滑界面的控件。


在界面Java程序中,本君继承自一个FragmentActivity,将fragment放入FrameLayout中就可以实现功能。

package com.fhd.paidlist;

import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.PixelFormat;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.widget.DrawerLayout;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.view.WindowManager.LayoutParams;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

@SuppressLint("ResourceAsColor")
public class HomeActivity extends FragmentActivity{
	
	private DrawerLayout mDrawerLayout = null;
	private FragmentTransaction transaction;
	private Fragment mFragmentMain;
	
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_home);
    
        mDrawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout);
  
        FragmentManager fm = getSupportFragmentManager();
		transaction = fm.beginTransaction();
		mFragmentMain = new fragment_main(mHandler);
		transaction.add(R.id.content_frame, mFragmentMain);
		transaction.commit();
    }
}

实现效果图如下:

侧滑菜单的实现DrawerLayout_第2张图片

你可能感兴趣的:(侧滑菜单的实现DrawerLayout)