侧滑菜单

Android 侧滑菜单

2017/10/14 10:14:03


效果

实现

  • 使用DrawerLayout布局
  • DrawerLayout中添加RelativeLayout布局
  • RelativeLayout中加如ImageView控件和ListView控件
  • 设置DrawerLayout的监听事件
  • 设置ListView的监听事件

布局文件代码

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.maohuawei.skatemenu.MainActivity">


    <RelativeLayout
        android:id="@+id/relative_layout"
        android:layout_width="200dp"
        android:layout_height="match_parent"
        android:layout_gravity="left"
        android:background="#fff">

        <ImageView
            android:id="@+id/imageView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@mipmap/qq" />


        <ListView
            android:id="@+id/listView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/imageView">

        </ListView>


    </RelativeLayout>

</android.support.v4.widget.DrawerLayout>

代码

public class MainActivity extends AppCompatActivity {

    //定义控件
    private DrawerLayout drawerLayout;
    private ImageView imageView;
    private ListView listView;
    private RelativeLayout relativeLayout;
    //ListView适配器数据源
    private List<String> list;


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

        //初始化控件
        drawerLayout = findViewById(R.id.drawer_layout);
        imageView = findViewById(R.id.imageView);
        listView = findViewById(R.id.listView);
        relativeLayout = findViewById(R.id.relative_layout);

        //实例化集合
        list = new ArrayList<>();

        //添加数据
        list.add("头条");
        list.add("娱乐");
        list.add("汽车");
        list.add("出行");
        list.add("国际");

        //设置适配器
        listView.setAdapter(new ArrayAdapter<String>(MainActivity.this, R.layout.support_simple_spinner_dropdown_item, list));

        //抽屉监听事件
        drawerLayout.setDrawerListener(new DrawerLayout.DrawerListener() {

            //表示的抽屉拖出来的宽度,,像素值
            @Override
            public void onDrawerSlide(View drawerView, float slideOffset) {

            }


            //打开抽屉
            @Override
            public void onDrawerOpened(View drawerView) {

            }

            //抽屉关闭
            @Override
            public void onDrawerClosed(View drawerView) {

            }

            //抽屉的状态改变
            //idle -- 表示与导航视图没有交互,静止
            //dragging -- 表示目前有与导航视图的交互,拖拽的状态
            //settling -- 表示有与导航视图的交互,并且导航视图正在关闭或打开
            @Override
            public void onDrawerStateChanged(int newState) {

            }
        });


        //ListView 设置监听事件
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                //点击条目隐藏侧滑菜单
                drawerLayout.closeDrawer(relativeLayout);

            }
        });

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值