例:
侧滑,侧拉,菜单DrawerLayout
点击按钮 打开,关闭 侧边框(可以拉动)
MainActivity 主方法:
public class MainActivity extends AppCompatActivity { private List<String> data=new ArrayList<>(); private DrawerLayout drawerLayout; private RelativeLayout menu; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); drawerLayout = findViewById(R.id.drawer); menu = findViewById(R.id.menu);//菜单 //点击按钮,打开菜单 Button b=findViewById(R.id.btnOpen); b.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { drawerLayout.openDrawer(menu);//打开菜单 } }); //侧拉菜单的列表 ListView listView=findViewById(R.id.lv); for(int i=0;i<20;i++){ data.add("item"+i); } ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,data); listView.setAdapter(adapter); //添加监听事件 drawerLayout.setDrawerListener(new DrawerLayout.DrawerListener() { @Override public void onDrawerSlide(View drawerView, float slideOffset) { Log.d("zzz","--"+slideOffset); } // @Override public void onDrawerOpened(View drawerView) { Toast.makeText(MainActivity.this,"打开了!",Toast.LENGTH_SHORT).show(); } @Override public void onDrawerClosed(View drawerView) { Toast.makeText(MainActivity.this,"关闭了!",Toast.LENGTH_SHORT).show(); } /** * 当抽屉滑动状态改变的时候被调用 * 状态值是STATE_IDLE(闲置--0), STATE_DRAGGING(拖拽的--1), STATE_SETTLING(固定--2)中之一。 * 抽屉打开的时候,点击抽屉,drawer的状态就会变成STATE_DRAGGING,然后变成STATE_IDLE */ @Override public void onDrawerStateChanged(int newState) { } }); } }
activity_main 布局:
<?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout android:id="@+id/drawer" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity"> <!--主页面的内容 ctrl+alt+l 格式化代码--> <LinearLayout android:orientation="vertical" android:layout_height="match_parent" android:layout_width="match_parent"> <Button android:id="@+id/btnOpen" android:layout_height="wrap_content" android:layout_width="match_parent" android:text="Hello!"/> <!--用来放置 碎片的容器 --> <TextView android:text="gggggggg" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> <!---菜单内容 android:layout_gravity="start":菜单在左边 end 菜单在右边 侧滑菜单一般不要超过 320dp --> <RelativeLayout android:id="@+id/menu" android:layout_height="match_parent" android:layout_width="170dp" android:background="#f00" android:layout_gravity="start"> <ImageView android:id="@+id/img" android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@mipmap/ic_launcher"/> <ListView android:id="@+id/lv" android:layout_height="match_parent" android:layout_width="match_parent" android:layout_below="@+id/img"/> </RelativeLayout> </android.support.v4.widget.DrawerLayout>