Android DrawerLayout demo(抽屉菜单)

Android DrawerLayout(抽屉菜单)

DrawerLayout中,第一个子View是显示内容的View,第二个子View是抽屉菜单View,在第二个子View中设置属性layout_gravity="left|right",表示抽屉菜单是从左边还是右边滑出。

至于DrawerLayout跟SlidingMenu有什么区别,可以看我的上一篇博文。

demo下载地址:http://download.csdn.net/download/shenyuanqing/9190447

最终效果动画:


MainActivity

package com.example.shen.drawerlayoutdemo.activity;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;

import com.example.shen.drawerlayoutdemo.R;
import com.example.shen.drawerlayoutdemo.adapter.MyFragmentPagerAdapter;
import com.example.shen.drawerlayoutdemo.fragment.ContactsFragment;
import com.example.shen.drawerlayoutdemo.fragment.DiscoveryFragment;
import com.example.shen.drawerlayoutdemo.fragment.MessageFragment;

import java.util.ArrayList;


public class MainActivity extends FragmentActivity implements View.OnClickListener{
    private ViewPager viewPager;
    private RadioGroup radioGroup;
    private RadioButton rbMessage,rbContacts,rbDiscovery;
    private ArrayList<Fragment> fragmentList;
    private MyFragmentPagerAdapter adapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //初始化界面组件
        initView();
        //初始化ViewPager
        initViewPager();
    }

    private void initView(){
        viewPager=(ViewPager)findViewById(R.id.view_pager);
        radioGroup=(RadioGroup)findViewById(R.id.radio_group);
        rbMessage=(RadioButton)findViewById(R.id.rb_message);
        rbContacts=(RadioButton)findViewById(R.id.rb_contacts);
        rbDiscovery=(RadioButton)findViewById(R.id.rb_discovery);
        rbMessage.setOnClickListener(this);
        rbContacts.setOnClickListener(this);
        rbDiscovery.setOnClickListener(this);
    }

    private void initViewPager(){
        MessageFragment messageFragment=new MessageFragment();
        ContactsFragment contactsFragment=new ContactsFragment();
        DiscoveryFragment discoveryFragment=new DiscoveryFragment();

        fragmentList=new ArrayList<Fragment>();
        fragmentList.add(messageFragment);
        fragmentList.add(contactsFragment);
        fragmentList.add(discoveryFragment);
        adapter=new MyFragmentPagerAdapter(getSupportFragmentManager(),fragmentList);
        //ViewPager设置适配器
        viewPager.setAdapter(adapter);
        //ViewPager显示第一个Fragment
        viewPager.setCurrentItem(0);
        //ViewPager页面切换监听
        viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                switch (position){
                    case 0:
                        radioGroup.check(R.id.rb_message);
                        break;
                    case 1:
                        radioGroup.check(R.id.rb_contacts);
                        break;
                    case 2:
                        radioGroup.check(R.id.rb_discovery);
                        break;
                }
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });

        //菜单中控件点击事件
        findViewById(R.id.rl_menu).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this,getString(R.string.setting),Toast.LENGTH_SHORT).show();
            }
        });
    }

    @Override
    public void onClick(View v) {
        switch(v.getId()){
            case R.id.rb_message:
                viewPager.setCurrentItem(0,false);
                break;
            case R.id.rb_contacts:
                viewPager.setCurrentItem(1,false);
                break;
            case R.id.rb_discovery:
                viewPager.setCurrentItem(2,false);
                break;
        }
    }
}
activity_main.xml

<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">
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
           <RadioGroup
            android:id="@+id/radio_group"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_alignParentBottom="true"
            android:background="@color/white">
            <RadioButton
                android:id="@+id/rb_message"
                android:drawableTop="@drawable/rb_message_selector"
                android:text="@string/message"
                android:checked="true"
                style="@style/radio_button_main"/>
            <RadioButton
                android:id="@+id/rb_contacts"
                android:drawableTop="@drawable/rb_contacts_selector"
                android:text="@string/contacts"
                style="@style/radio_button_main"/>
            <RadioButton
                android:id="@+id/rb_discovery"
                android:drawableTop="@drawable/rb_discovery_selector"
                android:text="@string/discovery"
                style="@style/radio_button_main"/>
        </RadioGroup>
        <android.support.v4.view.ViewPager
            android:id="@+id/view_pager"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_above="@id/radio_group"
            />
    </RelativeLayout>
    <RelativeLayout
        android:id="@+id/rl_menu"
        android:layout_width="200dp"
        android:layout_height="match_parent"
        android:background="@color/blue_light"
        android:layout_gravity="left">
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:layout_centerInParent="true">
            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@mipmap/ic_launcher"
                android:layout_gravity="center"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/setting"
                android:layout_gravity="center"/>
        </LinearLayout>
    </RelativeLayout>
</android.support.v4.widget.DrawerLayout>



Android Studio抽屉侧边栏Demo是一个基于Android Studio的示例应用程序,它演示了如何在Android应用程序中实现抽屉侧边栏。抽屉侧边栏是一个常见的UI模式,它允许用户通过从屏幕边缘滑动来访问应用程序的导航菜单和其他功能。 在这个Demo中,抽屉侧边栏是通过使用DrawerLayout和NavigationView实现的。DrawerLayout是一个布局容器,它允许您将一个或多个视图放在一个可滑动的抽屉中。NavigationView是一个用于显示导航菜单的视图,它可以轻松地与DrawerLayout一起使用。 在代码中,您可以看到以下几个关键点: 1.在布局文件中定义DrawerLayout和NavigationView。 2.在Activity中设置ActionBarDrawerToggle,它是一个用于处理抽屉侧边栏打开和关闭事件的类。 3.在Activity中设置DrawerLayout的监听器,以便在抽屉侧边栏打开和关闭时执行相应的操作。 下面是一个简单的代码示例,演示如何在Android Studio中实现抽屉侧边栏: ``` // 在布局文件中定义DrawerLayout和NavigationView <android.support.v4.widget.DrawerLayout android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <FrameLayout android:id="@+id/content_frame" android:layout_width="match_parent" android:layout_height="match_parent" /> <android.support.design.widget.NavigationView android:id="@+id/navigation_view" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" app:menu="@menu/navigation_menu" /> </android.support.v4.widget.DrawerLayout> // 在Activity中设置ActionBarDrawerToggle mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.drawer_open, R.string.drawer_close); mDrawerLayout.addDrawerListener(mDrawerToggle); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); // 在Activity中设置DrawerLayout的监听器 mDrawerLayout.setDrawerListener(new DrawerLayout.SimpleDrawerListener() { @Override public void onDrawerOpened(View drawerView) { super.onDrawerOpened(drawerView); // 打开抽屉侧边栏时执行的操作 } @Override public void onDrawerClosed(View drawerView) { super.onDrawerClosed(drawerView); // 关闭抽屉侧边栏时执行的操作 } }); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值