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);
}
});
}
}