Android UI之DrawerLayout

来源:互联网 发布:vb程序设计视频教程 编辑:程序博客网 时间:2024/05/17 18:43

1 抽屉式控件

DrawerLayout是Support Library包中实现了侧滑菜单效果的控件,可以说DrawerLayout是因为第三方控件如MenuDrawer等的出现之后,google借鉴而出现的产物。DrawerLayout分为侧边菜单和主内容区两部分,侧边菜单可以根据手势展开与隐藏(DrawerLayout自身特性),主内容区的内容可以随着菜单的点击而变化(这需要使用者自己实现)。

2 使用流程

2.1 main.xml

<?xml version="1.0" encoding="utf-8"?><android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    android:id="@+id/drawerHolder"    android:layout_width="match_parent"    android:layout_height="match_parent">    <RelativeLayout        android:id="@+id/content_frame"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:orientation="vertical">        <include layout="@layout/view_titlebar" />        <android.support.design.widget.TabLayout            android:id="@+id/tabLayout"            android:layout_width="match_parent"            android:layout_height="40dp"            android:background="@color/black"/>        <android.support.v4.view.ViewPager            android:id="@+id/pageContent"            android:layout_width="match_parent"            android:layout_height="match_parent"            android:layout_below="@id/tabLayout" />    </RelativeLayout>    //左边菜单起始位置设置为android:layout_gravity="start"    <FrameLayout        android:id="@+id/leftDrawer"        android:layout_width="240dp"        android:layout_height="match_parent"        android:layout_gravity="start"        android:background="@color/grey">    </FrameLayout></android.support.v4.widget.DrawerLayout>

2.2 MainActivity.java

/** * 主Activity */public class MainActivity extends BaseActivity {    private DrawerLayout mDrawerHolder;//抽屉菜单根布局    private View mLeftDrawer;//左侧菜单    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        initView();        init();        initEvent();    }    @Override    protected void initView() {        setContentView(R.layout.fragment_main);        initTitleBar();        mDrawerHolder = (DrawerLayout) findViewById(R.id.drawerHolder);        mLeftDrawer = findViewById(R.id.leftDrawer);    }    @Override    protected void initTitleBar() {        super.initTitleBar();    }    @Override    protected void init() {        doubleClickExit = new DoubleClickExitUtil(this);        /**         * 使用DrawerFragment实现抽屉页面         */        DrawerFragment drawerFragment = new DrawerFragment();//抽屉页面        getSupportFragmentManager().beginTransaction()                .add(R.id.leftDrawer, drawerFragment).commit();    }    @Override    protected void initEvent() {        super.initEvent();        mLeftDrawer.setOnClickListener(this);    }    @Override    public void onClick(View v) {        switch (v.getId()) {            case R.id.backView:                if (mDrawerHolder.isDrawerOpen(mLeftDrawer)) {                    mDrawerHolder.closeDrawer(mLeftDrawer);                } else {                    mDrawerHolder.openDrawer(mLeftDrawer);                }                     break;        }    }    @Override    public void onBackPressed() {        if (mDrawerHolder.isDrawerOpen(mLeftDrawer)) {            mDrawerHolder.closeDrawer(mLeftDrawer);        } else {            doubleClickExit.onKeyDown(KeyEvent.KEYCODE_BACK);        }    }}

2.3 DrawerFragment.java

/** * 主页抽屉页面 */public class DrawerFragment extends BaseFragment {    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {        if (rootView == null) {            rootView = inflater.inflate(R.layout.fragment_left_drawer, null);            initView();            init();            initEvent();        } else {            ViewGroup parent = (ViewGroup) rootView.getParent();            if (parent != null) {                parent.removeView(rootView);            }        }        return rootView;    }    @Override    protected void initView() {    }    @Override    protected void init() {    }    @Override    protected void initEvent() {    }    @Override    public void onClick(View v) {        switch (v.getId()) {            case R.id.....:                break;            default:                break;        }    }}

2.4 fragment_left_drawer.xml

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"></RelativeLayout>
0 0
原创粉丝点击