实现一个与QQ左侧抽屉栏类似的功能

1 定义抽屉菜单的显示 

 activity_main.xml  activity_main_drawer.xml  activity_main_drawer_listener.xml
   
     

activity_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"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/id_drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.senior0401_test.MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <TextView
            android:id="@+id/textView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="TextView"/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="#fff"
        android:choiceMode="singleChoice"
        android:divider="@android:color/transparent"
        android:dividerHeight="0dp"
        android:orientation="vertical">

        <include layout="@layout/activity_main_drawer"/>

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

activity_main_drawer.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:app="http://schemas.android.com/apk/res-auto"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical">

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="match_parent"
        android:layout_height="106dp"
        android:scaleType="fitXY"
        app:srcCompat="@drawable/im_drawer_top"/>

    <ListView
        android:id="@+id/id_drawer_menu"
        android:layout_width="match_parent"
        android:layout_weight="1"
        android:layout_height="match_parent"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/textView7"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="设置"
            android:textAlignment="center"
            android:textSize="18sp"/>

        <TextView
            android:id="@+id/textView6"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="夜间"
            android:textAlignment="center"
            android:textSize="18sp"/>

        <TextView
            android:id="@+id/textView5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="北京"
            android:textAlignment="center"
            android:textSize="18sp"/>
    </LinearLayout>

</LinearLayout>

 activity_main_drawer_listener.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent">

    <TextView
        android:id="@+id/id_textview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:padding="10dp"
        android:text="TextView"
        android:textSize="18sp"/>
</LinearLayout>

MainActivity.java

package com.example.senior0401_test;

import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

    ArrayList<Item>listData=new ArrayList<>();
    DrawerLayout drawerLayout;
    MyDrawerListAdapter myDrawerListAdapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        listData.add(new Item("了解会员特权","vip"));
        listData.add(new Item("QQ钱包","money"));
        listData.add(new Item("个性装扮","style"));
        listData.add(new Item("我的收藏","my"));
        listData.add(new Item("我的相册","image"));
        listData.add(new Item("我的文件","file"));
    
      //初始化DrawerLayout drawerLayout
=(DrawerLayout)findViewById(R.id.id_drawer_layout);
      //拉开抽屉时 ContentView的颜色标称灰色 drawerLayout.setScrimColor(
0xAACCCCCC); myDrawerListAdapter=new MyDrawerListAdapter(); ListView listView=(ListView)findViewById(R.id.id_drawer_menu); listView.setAdapter(myDrawerListAdapter);
    //当点击菜单中的一项时 执行相应的功能 未写 listView.setOnItemClickListener(
new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { Item item= (Item) myDrawerListAdapter.getItem(i); if(item.value.equals("vip")) { Log.d("TAG","点击了会员选项"); } else if(item.value.equals("money")) { Log.d("TAG","点击了我的钱包"); } } }); } public class Item { public String label; public String value; public Item(String label,String value) { this.label=label; this.value=value; } } public class MyDrawerListAdapter extends BaseAdapter { @Override public int getCount() { return listData.size(); } @Override public Object getItem(int position) { return listData.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View corverView, ViewGroup parent) { if(corverView==null) { corverView=getLayoutInflater().inflate(R.layout.activity_main_drawer_listitem,parent,false); } Item it= (Item) getItem(position); TextView textView=(TextView)corverView.findViewById(R.id.id_textview); textView.setText(it.label); return corverView; } } }

猜你喜欢

转载自www.cnblogs.com/Doaoao/p/9427250.html