教你用DrawLayout 实现Android 侧滑菜单

现在的APP越来越注重用户体验,百度视频客户端有一个特效还是挺吸引人的,在主界面手指向右滑动,就可以将菜单展示出来,而主界面会被隐藏大部分,但是仍有左侧的一小部分同菜单一起展示。类似的还有天天动听,人人的客户端。

这个侧滑菜单的实现网上也有很多方法,比如最常用的是开源的SlidingMenu . 还有一种实现方式是在一个Activity的布局中分两部分,一个是菜单(menu)的布局,一个是内容(content)的布局。两个布局横向排列,菜单布局在左,内容布局在右。初始化的时候将菜单布局向左偏移,以至于能够完全隐藏,这样内容布局就会完全显示在Activity中。然后通过监听手指滑动事件,来改变菜单布局的左偏移距离,从而控制菜单布局的显示和隐藏。

但是这两种方法都相对比较繁琐,今天给大家介绍一种更为简单的方法。就是直接采用DrawLayout。有关DrawLayout更详细的介绍可以参考API文档:http://developer.android.com/reference/android/support/v4/widget/DrawerLayout.html

首先New一个Android工程,依次实现几个布局。先来看两个子布局。

android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

android:id="@+id/listview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:cacheColorHint="#00000000"
        android:divider="@android:color/transparent"/>

android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

android:id="@+id/scrollView1"
      android:layout_width="match_parent"
      android:layout_height="wrap_content" >

android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="每日一文"
        android:textAppearance="?android:attr/textAppearanceLarge" >

主界面布局,注释掉的是右边的侧滑,现在实现的是左边的侧滑。

xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_layout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

android:id="@+id/fragment_layout"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >

android:id="@+id/menu_layout_left"
        android:layout_width="150dp"
        android:layout_height="match_parent"
        android:layout_gravity="left"
        android:background="#FFFFFF" >

android:id="@+id/menu_listView_l"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >

然后创建两个类继承Fragment,把两个子布局塞进去。
public class FirstFragment extends Fragment {

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        return inflater.inflate(R.layout.first, null);
    }
}

再来看看主类:
public class MainActivity extends FragmentActivity {

public static final String[] TITLES = {"first", "second"};
    private DrawerLayout mDrawerLayout;
    private RelativeLayout mLeftLayout;
    private ListView mLeftListView;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

findViewById();
        mLeftListView.setAdapter(new ArrayAdapter(this,
                android.R.layout.simple_expandable_list_item_1, TITLES));

// 监听菜单
        mLeftListView.setOnItemClickListener(new DrawerItemClickListenerLeft());
    }

private void findViewById() {
        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        mLeftLayout = (RelativeLayout) findViewById(R.id.menu_layout_left);
        mLeftListView = (ListView) findViewById(R.id.menu_listView_l);
    }

public class DrawerItemClickListenerLeft implements OnItemClickListener {

@Override
        public void onItemClick(AdapterView

时间: 2024-10-11 06:04:20

教你用DrawLayout 实现Android 侧滑菜单的相关文章

Android侧滑菜单

1.使用Android Support Library实现 Android目前提供了很方便的侧滑集成,效果如下图所示 具体实现如下: 如果你使用Android Studio,在你的build.gradle文件中添加 dependencies { ... compile 'com.android.support:design:22.2.0' } 如果使用Eclipse(其实Android官方已经不推荐使用,如果要使用的话,可以参考http://developer.android.com/tools

Android 侧滑菜单的实现

Android 侧滑菜单的实现,参考网上的代码,实现侧滑菜单.最重要的是这个动画类UgcAnimations,如何使用动画类来侧滑的封装FlipperLayout. 本文项目源码:点击 1.实现效果 2.动画类UgcAnimations package com.mmsx.base; import android.content.Context; import android.view.View; import android.view.ViewGroup.MarginLayoutParams;

Android侧滑菜单DrawerLayout(抽屉布局)实现

应用场景: 由于侧滑菜单有更好的用户体验效果,所以更多的App使用侧滑抽屉式菜单列表,如网易客户端.百度影音.爱奇艺等等.至此,侧滑菜单有了更多的使用需求. 知识点介绍: 实现侧滑菜单功能的方法有很多,如果开源的项目SlidingMenu,下载地址为https://github.com/jfeinstein10/SlidingMenu.该开源项目依赖于另一个开源项目ActionBarSherlock,下载地址为https://github.com/JakeWharton/ActionBarShe

Android 侧滑菜单与ActionBar和ShareActionProvider演示

用于 AppCompatActivity XML配置: for menu: xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"tools:context=".MainActivity" for items:app:actionProviderClass="android.support.v7.w

Android 侧滑菜单的简单实现(SlidingMenu)二

在上一篇博文中已经简单的实现了侧滑菜单,代码也很简单,就几行代码. 这篇文章依然讲侧滑菜单,与前一篇文章不同的是,这篇文章用不同的代码方式来实现侧滑菜单. 在前面的文章中已经用了在Activity中通过SlidingMenu构造方法直接设置侧滑菜单,这里换成通过Activity继承SlidingActivity来实现侧滑. 代码如下: public class MainActivity extends SlidingActivity 重写onCreate()方法: @Override publi

Android侧滑菜单完整详细示例(精装版)

MainActivity如下: package cn.patience7; import android.os.AsyncTask; import android.os.Bundle; import android.view.GestureDetector; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.view

Android侧滑菜单完整详细示例(改进版)

MainActivity如下: package cc.cd; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter;

Android侧滑菜单完整详细示例(基础版)

MainActivity如下: package cc.cd; import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; import android.view.MotionEvent; import android.view.VelocityTracker; import android.view.View; import android.view.View.OnTouchListener; i

Android侧滑菜单DrawerLayout的使用

现在侧滑菜单使用很多,大都是通过SlidingMenu实现.现在也可以通过DrawerLayout 创建抽屉布局 frament_content.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="