2018年7月

implementation 'de.hdodenhof:circleimageview:2.1.0'
implementation 'com.android.support:design:26.1.0'
  • xml布局文件导入menu的头部和功能选项(注销)

    //activity对应的xml文件
      <android.support.design.widget.NavigationView
          android:id="@+id/nav_view"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:layout_gravity="start"
          app:headerLayout="@layout/nav_header"
          app:menu="@menu/nav_menu" />
    //新建一个menu目录,建nav_menu.xml文件
    右键res-->Android Resource Direction-->在Resource type下拉框选menu...-->end
    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android">
      <group android:checkableBehavior="single">
          <item
              android:id="@+id/nav_logout"
              android:title="注销" />
      </group>
    </menu>
    //layout中新建nav_header.xml文件,ic_done图片顺便找一张
    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="match_parent"
      android:layout_height="180dp"
      android:background="?attr/colorPrimary"
      android:padding="10dp">
      <de.hdodenhof.circleimageview.CircleImageView
          android:id="@+id/icon_image"
          android:layout_width="70dp"
          android:layout_height="70dp"
          android:layout_centerInParent="true"
          android:src="@drawable/ic_done" />
      <TextView
          android:id="@+id/username"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignParentBottom="true"
          android:textColor="#FFF"
          android:textSize="14sp" />
    </RelativeLayout>

    效果:

activity实现功能

private NavigationView navigationView;
//从application中获取用户信息(在head中显示用户名--忽略)
private MyApplication myApplication = MyApplication.getInstance();
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_index);
        。。。。。。
        //菜单栏设置点击事件
        menu();
    }
private void menu(){
        navigationView = findViewById(R.id.nav_view);
        //获取头布局文件
        View headerView = navigationView.getHeaderView(0);
        TextView textview = (TextView)headerView.findViewById(R.id.username);
        textview.setText(myApplication.getLoginUser().getUsername());
        navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(MenuItem item) {
//注销功能--忽略
                switch (item.getItemId()){
                    case R.id.nav_logout:
                        myApplication.userLogout();
                        Intent intent=new Intent(IndexActivity.this,MainActivity.class);
                  intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK);
                        startActivity(intent);
                        break;
                }
                return false;
            }
        });
    }

ref:使用NaviGationView来配置SlidingMenu的左侧菜单——学习笔记

安卓和之前的j2ee大作业差不多就完结--这几天要做个总结||||||||||

  • 1.FLAG_ACTIVITY_CLEAR_TASK :如果在调用Context.startActivity时传递这个标记,将会导致任何用来放置该activity的已经存在的task里面的已经存在的activity先清空,然后该activity再在该task中启动,也就是说,这个新启动的activity变为了这个空tas的根activity.所有老的activity都结束掉。该标志必须和FLAG_ACTIVITY_NEW_TASK一起使用.
  • 2.FLAG_ACTIVITY_NEW_TASK: 首先会查找是否存在和被启动的Activity具有相同的亲和性的任务栈(即taskAffinity,注意同一个应用程序中的activity的亲和性一样,所以下面的a情况会在同一个栈中,前面这句话有点拗口,请多读几遍),如果有,刚直接把这个栈整体移动到前台,并保持栈中的状态不变,即栈中的activity顺序不变,如果没有,则新建一个栈来存放被启动的activity.

注销实现代码

//注销前用户本地数据删除等等操作
Intent intent=new Intent(IndexActivity.this,MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

refandroid如何实现账号注销功能