一直想侧滑来着,今天终于开始了,。
先上几张截图:
1.首先要在project structure的dependence中导入v4.design包,导入后可以在build.grade下看到如下信息:
implementation 'com.android.support:design:26.1.0'
2.使用NavigationView
首先在主布局文件中使用DrawerLayout作为外包装,里面包含一个主页面和侧滑的菜单页面,而侧滑菜单页面用NavigationView实现:
上代码了:
activity布局:一个DrawerLayout+NavigationView
<?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/drawerlayout" tools:openDrawer="start" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.NavigationView android:id="@+id/navigationview" android:layout_gravity="left" android:layout_width="wrap_content" android:layout_height="match_parent" android:fitsSystemWindows="true" xmlns:app="http://schemas.android.com/apk/res-auto" app:headerLayout="@layout/activity_handerlayout" app:menu="@menu/mymenu"> </android.support.design.widget.NavigationView> </android.support.v4.widget.DrawerLayout>
然后我们可以看到
3.我们需要写一个头部布局和menu布局
首先mynenu布局:有四个item,item里面有ID+图片+名字
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/page" android:icon="@drawable/radio_button_pic1" android:title=" 首页"/> <item android:id="@+id/read" android:icon="@drawable/radio_button_pic2" android:title=" 订阅"/> <item android:id="@+id/found" android:icon="@drawable/radio_button_pic3" android:title=" 发现"/> <item android:id="@+id/myself" android:icon="@drawable/radio_button_pic4" android:title=" 我的"/> </menu>
接着头部布局:头布局内容很简单,只包含一张图片和两个textview
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:background="#f7e8e7" android:layout_height="match_parent"> <ImageView android:id="@+id/person" android:layout_width="72dp" android:layout_height="72dp" android:layout_gravity="center" android:layout_marginTop="42dp" android:src="@drawable/back1"/> <TextView android:id="@+id/tv_username" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" android:layout_gravity="center" android:layout_marginTop="24dp" android:textColor="#ffffff" android:textStyle="bold" android:text="坏小子"/> <TextView android:id="@+id/tv_lable" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="16sp" android:layout_gravity="center" android:layout_marginTop="12dp" android:textColor="#ffffff" android:textStyle="bold" android:layout_marginBottom="18dp" android:text="人生像一场没有尽头的旅行"/> </LinearLayout>
menu里包含了各个菜单项,每个菜单项可以设置icon和title以及点击状态,。
现在我们写activity的实现及跳转,。
public class DrawelayoutActivity extends AppCompatActivity { private DrawerLayout drawerlayout; private NavigationView navigationview; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_drawerlayout); drawerlayout=findViewById(R.id.drawerlayout); navigationview=findViewById(R.id.navigationview); navigationview.setItemIconTintList(null); View headerView = navigationview.getHeaderView(0);//获取头布局 navigationview.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { switch (item.getItemId()){ case R.id.page: IntentUtils.SetIntent(DrawelayoutActivity.this,FirstActivity.class); break; case R.id.read: IntentUtils.SetIntent(DrawelayoutActivity.this,FiveActivity.class); break; case R.id.found: IntentUtils.SetIntent(DrawelayoutActivity.this,fourthActivity.class); break; case R.id.myself: IntentUtils.SetIntent(DrawelayoutActivity.this,CenterActivity.class); break; } return true; } }); } }
import android.support.v4.widget.DrawerLayout; import android.support.v7.app.AppCompatActivity;DrawerLayou是V4包,NavigationView是V7包,。到这里就基本实现了,。
下面我贴一个跳转的工具类:
public class IntentUtils { public static void SetIntent(Context context,Class<?>mClass){ Intent intent = new Intent(); intent.setClass(context, mClass); context.startActivity(intent); } public static void SetIntentandfinish(Context context,Class<?>mClass,boolean isclose){ Intent intent = new Intent(); intent.setClass(context, mClass); context.startActivity(intent); if (isclose){ ((Activity)context).finish(); } } public static void SetIntentBundle(Context context, Class<?>mClass, Bundle bundle){ Intent intent = new Intent(); intent.setClass(context, mClass); intent.putExtra("bundle",bundle); context.startActivity(intent); } }
有四个跳转页面,这里只贴出一个,也只实现一个跳转页面的点击事件,。
activity_first布局:很简单,只有一个TextView
<?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:background="#ffffff" android:orientation="vertical" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <TextView android:id="@+id/dialog1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="10dp" android:padding="10dp" android:gravity="center" android:text="普通ialog" /> </LinearLayout>
写实现跳转页面的点击事件:
public class FirstActivity extends AppCompatActivity { private TextView textView; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_first); textView=findViewById(R.id.dialog1); textView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { new android.app.AlertDialog.Builder(FirstActivity.this) .setTitle("系统提示") .setMessage("这是一个普通的对话框") .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { Toast.makeText(FirstActivity.this, "确定", Toast.LENGTH_SHORT).show(); } }).setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { Toast.makeText(FirstActivity.this, "取消", Toast.LENGTH_SHORT).show(); } }).show(); } }); } }
好了,其他具体功能可以根据需要自己添加,。
源码下载地址:https://download.csdn.net/download/weixin_42267745/10443483