image

由于这个模块内容较多,篇幅较长,请耐心阅读。

“我”的模块分为四个部分

一、“我”的界面

1、底部导航栏

(1)、导入界面图片

将底部导航栏所需图片main_course_icon.png、main_course_icon_selected.png、main_exercises_icon.png、main_exercises_icon_selected.png、main_my_icon.png、main_my_icon_selected.png导入到drawable文件夹中。

(2)、底部导航栏界面代码——activity_main.xml

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:orientation="vertical">

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:background="@android:color/white"

android:orientation="vertical">

android:id="@+id/main_body"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="@android:color/white"/>

android:id="@+id/main_bottom_bar"

android:layout_width="match_parent"

android:layout_height="55dp"

android:layout_alignParentBottom="true"

android:background="#F2F2F2"

android:orientation="horizontal">

android:id="@+id/bottom_bar_course_btn"

android:layout_width="0dp"

android:layout_height="fill_parent"

android:layout_weight="1">

android:id="@+id/bottom_bar_text_course"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_alignParentBottom="true"

android:layout_centerHorizontal="true"

android:layout_marginBottom="3dp"

android:gravity="center"

android:singleLine="true"

android:text="课程"

android:textColor="#666666"

android:textSize="14sp"/>

android:id="@+id/bottom_bar_image_course"

android:layout_width="27dp"

android:layout_height="27dp"

android:layout_above="@id/bottom_bar_text_course"

android:layout_alignParentTop="true"

android:layout_centerHorizontal="true"

android:layout_marginTop="3dp"

android:src="@drawable/main_course_icon"/>

android:id="@+id/bottom_bar_exercises_btn"

android:layout_width="0dp"

android:layout_height="fill_parent"

android:layout_weight="1">

android:id="@+id/bottom_bar_text_exercises"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_alignParentBottom="true"

android:layout_centerHorizontal="true"

android:layout_marginBottom="3dp"

android:gravity="center"

android:singleLine="true"

android:text="习题"

android:textColor="#666666"

android:textSize="14sp"/>

android:id="@+id/bottom_bar_image_exercises"

android:layout_width="27dp"

android:layout_height="27dp"

android:layout_above="@id/bottom_bar_text_exercises"

android:layout_alignParentTop="true"

android:layout_centerHorizontal="true"

android:layout_marginTop="3dp"

android:src="@drawable/main_exercises_icon"/>

android:id="@+id/bottom_bar_myinfo_btn"

android:layout_width="0dp"

android:layout_height="fill_parent"

android:layout_weight="1">

android:id="@+id/bottom_bar_text_myinfo"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_alignParentBottom="true"

android:layout_centerHorizontal="true"

android:layout_marginBottom="3dp"

android:gravity="center"

android:singleLine="true"

android:text="我"

android:textColor="#666666"

android:textSize="14sp"/>

android:id="@+id/bottom_bar_image_myinfo"

android:layout_width="27dp"

android:layout_height="27dp"

android:layout_above="@id/bottom_bar_text_myinfo"

android:layout_alignParentTop="true"

android:layout_centerHorizontal="true"

android:layout_marginTop="3dp"

android:src="@drawable/main_my_icon"/>

(3)、底部导航栏逻辑代码——MainActivity.java

package com.boxuegu.activity;

import android.content.Context;

import android.content.Intent;

import android.content.SharedPreferences;

import android.content.pm.ActivityInfo;

import android.graphics.Color;

import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;

import android.view.KeyEvent;

import android.view.View;

import android.widget.FrameLayout;

import android.widget.ImageView;

import android.widget.LinearLayout;

import android.widget.RelativeLayout;

import android.widget.TextView;

import android.widget.Toast;

import com. boxuegu. R;

import com.boxuegu.view.MyInfoView;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

//中间内容栏

private FrameLayout mBodyLayout;

//底部导航栏按钮

private LinearLayout mBottomLayout;

//底部按钮

private View mCourseBtn;

private View mExercisesBtn;

private View mMyInfoBtn;

private TextView tv_course;

private TextView tv_exercises;

private TextView tv_myInfo;

private ImageView iv_course;

private ImageView iv_exercises;

private ImageView iv_myInfo;

private TextView tv_back;

private TextView tv_main_title;

private RelativeLayout rl_title_bar;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

//设置界面布局

setContentView(R.layout.activity_main);

//设置界面为竖屏

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

init();

initBottomBar();

setListener();

setInitStatus();

}

/*

* 获取界面上的UI控件

*/

private void init() {

tv_back = (TextView)findViewById(R.id.tv_back);

tv_main_title = (TextView) findViewById(R.id.tv_main_title);

tv_main_title.setText("WordPress课程");

rl_title_bar = (RelativeLayout)findViewById(R.id.title_bar);

rl_title_bar.setBackgroundColor(Color.parseColor("#FF9900"));

tv_back.setVisibility(View.GONE);

initBodyLayout();

}

/*

* 获取底部导航栏上的控件

*/

private void initBottomBar() {

mBottomLayout = (LinearLayout) findViewById(R.id.main_bottom_bar);

mCourseBtn=findViewById(R.id.bottom_bar_course_btn);

mExercisesBtn= findViewById(R.id.bottom_bar_exercises_btn);

mMyInfoBtn = findViewById(R.id.bottom_bar_myinfo_btn);

tv_course=(TextView)findViewById(R.id.bottom_bar_text_course);

tv_exercises=(TextView)findViewById(R.id.bottom_bar_text_exercises);

tv_myInfo = (TextView)findViewById(R.id.bottom_bar_text_myinfo);

iv_course =(ImageView)findViewById(R.id.bottom_bar_image_course);

iv_exercises= (ImageView)findViewById(R.id.bottom_bar_image_exercises);

iv_myInfo= (ImageView)findViewById(R.id.bottom_bar_image_myinfo);

}

private void initBodyLayout() {

mBodyLayout = (FrameLayout) findViewById(R.id.main_body);

}

/*

* 控件的点击事件

*/

@Override

public void onClick(View v){

switch (v.getId()){

//课程的点击事件

case R.id.bottom_bar_course_btn:

clearBottomImageState();

selectDisplayView(0);

break;

//习题的点击事件

case R.id.bottom_bar_exercises_btn:

clearBottomImageState();

selectDisplayView(1);

break;

//我的点击事件

case R.id.bottom_bar_myinfo_btn:

clearBottomImageState();

selectDisplayView(2);

break;

default:

break;

}

}

/*

* 设置底部三个按钮的点击监听事件

*/

private void setListener() {

for (int i = 0; i < mBottomLayout.getChildCount();i++){

mBottomLayout.getChildAt(i).setOnClickListener(this);

}

}

/*

* 清除底部按钮的选中状态

*/

private void clearBottomImageState() {

tv_course.setTextColor(Color.parseColor("#666666"));

tv_exercises.setTextColor(Color.parseColor("#666666"));

tv_myInfo.setTextColor(Color.parseColor("#666666"));

iv_course.setImageResource(R.drawable.main_course_icon);

iv_exercises.setImageResource(R.drawable.main_exercises_icon);

iv_myInfo.setImageResource(R.drawable.main_my_icon);

for (int i=0;i

mBottomLayout.getChildAt(i).setSelected(false);

}

}

/*

* 设置底部按钮的选中状态

*/

public void setSelectedStatus(int index){

switch (index){

case 0:

mCourseBtn.setSelected(true);

iv_course.setImageResource(R.drawable.main_course_icon_selected);

tv_course.setTextColor(Color.parseColor("#0097F7"));

rl_title_bar.setVisibility(View.VISIBLE);

tv_main_title.setText("WordPress课程");

break;

case 1:

mExercisesBtn.setSelected(true);

iv_exercises.setImageResource(R.drawable.main_exercises_icon_selected);

tv_exercises.setTextColor(Color.parseColor("#0097F7"));

rl_title_bar.setVisibility(View.VISIBLE);

tv_main_title.setText("WordPress习题");

break;

case 2:

mMyInfoBtn.setSelected(true);

iv_myInfo.setImageResource(R.drawable.main_my_icon_selected);

tv_myInfo.setTextColor(Color.parseColor("#0097F7"));

rl_title_bar.setVisibility(View.GONE);

}

}

/*

* 移除不需要的视图

*/

private void removeAllView(){

for (int i = 0;i

mBodyLayout.getChildAt(i).setVisibility(View.GONE);

}

}

/*

* 设置界面view的初始化状态

*/

private void setInitStatus() {

clearBottomImageState();

setSelectedStatus(0);

createView(0);

}

/*

* 显示对应的页面

*/

private void selectDisplayView(int index) {

removeAllView();

createView(index);

setSelectedStatus(index);

}

/*

* 选中视图

*/

private void createView(int viewIndex) {

switch (viewIndex){

case 0:

//课程界面

break;

case 1:

//习题界面

break;

case 2:

//我的界面

break;

}

}

protected long exitTime; //记录第一次点击的时间

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){

if ((System.currentTimeMillis()-exitTime)>2000){

Toast.makeText(MainActivity.this,"再按一次退出WordPress",Toast.LENGTH_SHORT).show();

exitTime = System.currentTimeMillis();

}else{

MainActivity.this.finish();

if (readLoginStatus()){

clearLoginStatus();

}

System.exit(0);

}

return true;

}

return super.onKeyDown(keyCode, event);

}

//获取SharedPreferences中的登录状态

private boolean readLoginStatus() {

SharedPreferences sp = getSharedPreferences("loginInfo", Context.MODE_PRIVATE);

boolean isLogin = sp.getBoolean("isLogin",false);

return isLogin;

}

//清除SharedPreferences中的登录状态

private void clearLoginStatus() {

SharedPreferences sp = getSharedPreferences("loginInfo",Context.MODE_PRIVATE);

SharedPreferences.Editor editor = sp.edit(); //读取编辑器

editor.putBoolean("isLogin",false); //清除登录状态

editor.putString("loginUserName",""); //清除登录时的用户名

editor.commit(); //提交修改

}

}

2、我的界面

(1)、创建我的界面

在res/layout文件夹中,创建布局文件main_view_myinfo.xml。

(2)、导入界面图片

将所需图片 myinfo_login_bg.png、coures_history_icon.png、myinfo_setting_icon.png、iv_right_arrow.png导入drawable文件夹中。

(3)、我的界面代码——main_view_myinfo.xml

android:orientation="vertical"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="@android:color/white">

android:id="@+id/ll_head"

android:layout_width="fill_parent"

android:layout_height="240dp"

android:background="@drawable/myinfo_login_bg"

android:orientation="vertical">

android:id="@+id/iv_head_icon"

android:layout_width="70dp"

android:layout_height="70dp"

android:src="@drawable/default_icon"

android:layout_gravity="center_horizontal"

android:layout_marginTop="75dp"/>

android:id="@+id/tv_user_name"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center_horizontal"

android:layout_marginTop="10dp"

android:text="点击登录"

android:textColor="@android:color/white"

android:textSize="16sp"/>

android:layout_width="fill_parent"

android:layout_height="1dp"

android:background="#E3E3E3"

android:layout_marginTop="20dp">

android:id="@+id/rl_course_history"

android:background="#F7F8F8"

android:gravity="center_vertical"

android:layout_marginLeft="10dp"

android:layout_marginRight="10dp"

android:layout_width="fill_parent"

android:layout_height="50dp">

android:id="@+id/iv_course_historyicon"

android:src="@drawable/course_history_icon"

android:layout_marginLeft="20dp"

android:layout_width="20dp"

android:layout_height="20dp"

android:layout_centerVertical="true"/>

android:id="@+id/tv_course_history"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="播放记录"

android:textColor="#a3a3a3"

android:layout_toRightOf="@+id/iv_course_historyicon"

android:layout_centerVertical="true"

android:layout_marginLeft="25dp"

android:textSize="16sp"/>

android:src="@drawable/iv_right_arrow"

android:layout_marginRight="25dp"

android:layout_centerVertical="true"

android:layout_alignParentRight="true"

android:layout_width="15dp"

android:layout_height="15dp" />

android:layout_width="fill_parent"

android:layout_height="1dp"

android:background="#E3E3E3">

android:id="@+id/rl_setting"

android:background="#F7F8F8"

android:gravity="center_vertical"

android:layout_marginLeft="10dp"

android:layout_marginRight="10dp"

android:layout_width="fill_parent"

android:layout_height="50dp">

android:id="@+id/iv_userinfo_icon"

android:src="@drawable/myinfo_setting_icon"

android:layout_marginLeft="20dp"

android:layout_width="20dp"

android:layout_height="20dp"

android:layout_centerVertical="true"/>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="设置"

android:textColor="#a3a3a3"

android:layout_toRightOf="@+id/iv_userinfo_icon"

android:layout_centerVertical="true"

android:layout_marginLeft="25dp"

android:textSize="16sp"/>

android:src="@drawable/iv_right_arrow"

android:layout_marginRight="25dp"

android:layout_centerVertical="true"

android:layout_alignParentRight="true"

android:layout_width="15dp"

android:layout_height="15dp" />

android:layout_width="fill_parent"

android:layout_height="1dp"

android:background="#E3E3E3">

(4)、创建AnalysisUtils工具类

在utils包中创建一个java类,命名为AnalysisUtils,代码如下

package com.boxuegu.utils;

import android.content.Context;

import android.content.SharedPreferences;

public class AnalysisUtils {

/*

* 从SharedPreferences中读取用户名

*/

public static String readLoginUserName(Context context){

SharedPreferences sp = context.getSharedPreferences("loginInfo",Context.MODE_PRIVATE);

String userName = sp.getString("loginUserName","");

return userName;

}

}

(5)、我的界面逻辑代码

选中com.boxuegu包,创建一个view包,在view包中创建一个java类,命名为MyInfoView。代码如下

package com.boxuegu.view;

import android.app.Activity;

import android.content.Context;

import android.content.Intent;

import android.content.SharedPreferences;

import android.view.LayoutInflater;

import android.view.View;

import android.widget.ImageView;

import android.widget.LinearLayout;

import android.widget.RelativeLayout;

import android.widget.TextView;

import android.widget.Toast;

import com.boxuegu.R;

import com.boxuegu.activity.LoginActivity;

import com.boxuegu.activity.SettingActivity;

import com.boxuegu.utils.AnalysisUtils;

public class MyInfoView {

public ImageView iv_head_icon;

private LinearLayout ll_head;

private RelativeLayout rl_course_history,rl_setting;

private TextView tv_user_name;

private Activity mContext;

private LayoutInflater mInflater;

private View mCurrentView;

public MyInfoView(Activity context){

//为之后将layout转化为view时用

mContext= context;

mInflater= LayoutInflater.from(mContext);

}

private void createView(){

initView();

}

/*

* 获取界面控件

*/

private void initView() {

//设置布局文件

mCurrentView = mInflater.inflate(R.layout.main_view_myinfo,null);

ll_head = (LinearLayout)mCurrentView.findViewById(R.id.ll_head);

iv_head_icon = (ImageView) mCurrentView.findViewById(R.id.iv_head_icon);

rl_course_history = (RelativeLayout) mCurrentView.findViewById(R.id.rl_course_history);

rl_setting = (RelativeLayout) mCurrentView.findViewById(R.id.rl_setting);

tv_user_name = (TextView) mCurrentView.findViewById(R.id.tv_user_name);

mCurrentView.setVisibility(View.VISIBLE);

setLoginParams(readLoginStatus());

ll_head.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

//判断是否登录

if (readLoginStatus()){

//已登录跳转到个人资料界面

}else{

//未登录跳转到登录界面

Intent intent = new Intent(mContext, LoginActivity.class);

mContext.startActivityForResult(intent,1);

}

}

});

rl_course_history.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

if (readLoginStatus()){

//跳转到播放记录界面

}else{

Toast.makeText(mContext,"您还未登录,请先登录",Toast.LENGTH_SHORT).show();

}

}

});

rl_setting.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

if (readLoginStatus()){

//跳转到设置界面

}else{

Toast.makeText(mContext,"您还未登录,请先登录",Toast.LENGTH_SHORT).show();

}

}

});

}

/*

* 登录成功后设置我的界面

*/

public void setLoginParams(boolean isLogin){

if (isLogin){

tv_user_name.setText(AnalysisUtils.readLoginUserName(mContext));

}

else{

tv_user_name.setText("点击登录");

}

}

/*

* 获取当前在导航栏上方对应的view

*/

public View getView(){

if (mCurrentView==null){

createView();

}return mCurrentView;

}

/*

* 显示当前导航栏上方所对应的view界面

*/

public void showView(){

if (mCurrentView==null){

createView();

}

mCurrentView.setVisibility(View.VISIBLE);

}

/*

* 从SharedPreferences中读取登录状态

*/

private boolean readLoginStatus(){

SharedPreferences sp = mContext.getSharedPreferences("loginInfo", Context.MODE_PRIVATE);

boolean isLogin = sp.getBoolean("isLogin",false);

return isLogin;

}

}

(6)、修改MainActivity.java

在文件中的40行代码下面加入如下代码,导入相应的包

private MyInfoView mMyInfoView;

找到MainActivity.java的createView方法,当case为2时,在注释//我的界面下方添加如下代码

if (mMyInfoView == null){

mMyInfoView = new MyInfoView(this);

mBodyLayout.addView(mMyInfoView.getView());

}else {

mMyInfoView.getView();

}

mMyInfoView.showView();

修改登录成功时的代码,在MainActivity.java中加入以下代码

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

super.onActivityResult(requestCode, resultCode, data);

if (data!=null){

//从设置界面或登录界面传递过来的登录状态

boolean isLogin = data.getBooleanExtra("isLogin",false);

if (isLogin){ //登录成功时显示课程界面

clearBottomImageState();

selectDisplayView(0);

}

if (mMyInfoView != null){ //登录成功或退出登录时根据islogin设置我的界面

mMyInfoView.setLoginParams(isLogin);

}

}

}

二、设置界面

1、创建设置界面

在com.boxuegu.activity包中新建一个类,命名为SettingActivity。在res/layout文件夹下新建布局文件,命名为activity_setting。

2、设置界面代码activity_setting.xml

android:orientation="vertical"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="@android:color/white">

android:layout_width="fill_parent"

android:layout_height="1dp"

android:layout_marginTop="15dp"

android:background="#E3E3E3"/>

android:id="@+id/rl_modify_psw"

android:layout_width="fill_parent"

android:layout_height="50dp"

android:background="#F7F8F8"

android:gravity="center_vertical"

android:paddingLeft="10dp"

android:paddingRight="10dp">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerVertical="true"

android:layout_marginLeft="25dp"

android:text="修改密码"

android:textColor="#A3A3A3"

android:textSize="16sp"/>

android:layout_width="15dp"

android:layout_height="15dp"

android:layout_alignParentRight="true"

android:layout_centerVertical="true"

android:layout_marginRight="25dp"

android:src="@drawable/iv_right_arrow"/>

android:layout_width="fill_parent"

android:layout_height="1dp"

android:background="#E3E3E3"/>

android:id="@+id/rl_security_setting"

android:layout_width="fill_parent"

android:layout_height="50dp"

android:background="#F7F8F8"

android:gravity="center_vertical"

android:paddingLeft="10dp"

android:paddingRight="10dp">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerVertical="true"

android:layout_marginLeft="25dp"

android:text="设置密保"

android:textColor="#A3A3A3"

android:textSize="16sp"/>

android:layout_width="15dp"

android:layout_height="15dp"

android:layout_alignParentRight="true"

android:layout_centerVertical="true"

android:layout_marginRight="25dp"

android:src="@drawable/iv_right_arrow"/>

android:layout_width="fill_parent"

android:layout_height="1dp"

android:layout_marginTop="15dp"

android:background="#E3E3E3"/>

android:id="@+id/rl_exit_login"

android:layout_width="fill_parent"

android:layout_height="50dp"

android:background="#F7F8F8"

android:gravity="center_vertical"

android:paddingLeft="10dp"

android:paddingRight="10dp">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerVertical="true"

android:layout_marginLeft="25dp"

android:text="退出登录"

android:textColor="#A3A3A3"

android:textSize="16sp"/>

android:layout_width="15dp"

android:layout_height="15dp"

android:layout_alignParentRight="true"

android:layout_centerVertical="true"

android:layout_marginRight="25dp"

android:src="@drawable/iv_right_arrow"/>

android:layout_width="fill_parent"

android:layout_height="1dp"

android:background="#E3E3E3"/>

3、设置界面逻辑代码——SettingActivity.java

package com.boxuegu.activity;

import android.content.Context;

import android.content.Intent;

import android.content.SharedPreferences;

import android.content.pm.ActivityInfo;

import android.graphics.Color;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.View;

import android.widget.RelativeLayout;

import android.widget.TextView;

import android.widget.Toast;

import com.boxuegu.R;

public class SettingActivity extends AppCompatActivity {

public static SettingActivity instance = null;

private TextView tv_main_title;

private TextView tv_back;

private RelativeLayout rl_title_bar;

private RelativeLayout rl_modify_psw;

private RelativeLayout rl_security_setting;

private RelativeLayout rl_exit_login;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

//设置界面布局

setContentView(R.layout.activity_setting);

//设置界面为竖屏

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

instance = this;

init();

}

//获取界面控件

private void init() {

tv_main_title = (TextView) findViewById(R.id.tv_main_title);

tv_main_title.setText("设置");

tv_back = (TextView) findViewById(R.id.tv_back);

rl_title_bar = (RelativeLayout) findViewById(R.id.title_bar);

rl_title_bar.setBackgroundColor(Color.parseColor("#FF9900"));

rl_modify_psw = (RelativeLayout) findViewById(R.id.rl_modify_psw);

rl_security_setting = (RelativeLayout) findViewById(R.id.rl_security_setting);

rl_exit_login = (RelativeLayout) findViewById(R.id.rl_exit_login);

tv_back.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view) {

SettingActivity.this.finish();

}

});

//修改密码的点击事件

rl_modify_psw.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

//跳转到修改密码界面

}

});

//设置密保的点击事件

rl_security_setting.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

//跳转到设置密保界面

}

});

//退出登录的点击事件

rl_exit_login.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Toast.makeText(SettingActivity.this,"退出登录成功",Toast.LENGTH_SHORT).show();

clearLoginStatus(); //清除登录状态和登录的用户名

//退出成功后把退出成功的状态传递到MainActivity中

Intent data = new Intent();

data.putExtra("isLogin",false);

setResult(RESULT_OK,data);

SettingActivity.this.finish();

}

});

}

//清除SharedPreferences中的登录状态和登录时的用户名

private void clearLoginStatus(){

SharedPreferences sp = getSharedPreferences("loginInfo", Context.MODE_PRIVATE);

SharedPreferences.Editor editor = sp.edit(); //获取编辑器

editor.putBoolean("isLogin",false); //清除登录状态

editor.putString("loginUserName",""); //清除用户名

editor.commit(); //提交修改

}

}

4、修改我的界面代码

在MyInfoView.java文件中的initView方法,找到注释//跳转到设置界面下方添加如下代码

Intent intent = new Intent(mContext, SettingActivity.class);

mContext.startActivityForResult(intent,1);

三、运行效果

image

Android项目实战系列—基于博学谷 开源地址

image

android博学谷实验报告,Android项目实战系列—基于博学谷(四)我的模块(上)...相关推荐

  1. android中私有方法 继承,Android项目实战系列—基于博学谷(五)个人资料

    由于这个模块内容较多,篇幅较长,请耐心阅读. 个人资料模块分为两个部分 [x] [个人资料]() [x] [资料修改]() 一.个人资料 1.个人资料界面 (1).创建个人资料界面 在com.buxu ...

  2. android注册文件打开,Android项目实战系列—基于博学谷(三)注册与登录模块

    由于这个模块内容较多,篇幅较长,请耐心阅读. 注册与登录模块分为三个部分 [x] [欢迎界面]() [x] [注册界面]() [x] [登录界面]() 一.欢迎界面 1.创建工程,命名为BoXueGu ...

  3. Android项目实战系列—基于博学谷(四)我的模块(上)

    由于这个模块内容较多,篇幅较长,请耐心阅读. "我"的模块分为四个部分 我的界面 设置界面 修改密码界面 设置密保和找回密码 一."我"的界面 1.底部导航栏 ...

  4. android博学谷布局,Android项目实战系列—基于博学谷(四)我的模块(下)

    image 由于这个模块内容较多,篇幅较长,请耐心阅读. "我"的模块分为四个部分 一.修改密码 1.创建修改密码界面 在com.boxuegu.activity包中,创建一个ja ...

  5. android项目实战博学谷百度云,Android项目实战系列—基于博学谷(七)课程模块(下)...

    由于这个模块内容较多,分为上.中.下 三篇博客分别来讲述,请耐心阅读. 课程模块分为四个部分 [ ] [课程列表]() [ ] [课程详情]() [x] [视频播放]() [x] [播放记录]() 课 ...

  6. android博学谷我的代码,Android项目实战系列—基于博学谷(四)我的模块(下)...

    由于这个模块内容较多,篇幅较长,请耐心阅读. "我"的模块分为四个部分 [ ] [我的界面]() [ ] [设置界面]() [x] [修改密码界面]() [x] [设置密保和找回密 ...

  7. Android项目实战系列—基于博学谷(六)习题模块

    由于这个模块内容较多,篇幅较长,请耐心阅读. 习题模块分为两个部分 习题列表界面 习题详情界面 一.习题列表界面 1.习题界面 (1).创建习题界面 在res/layout文件夹中,新建一个布局文件, ...

  8. Android项目实战系列—基于博学谷(七)课程模块(上)

    由于这个模块内容较多,分为上.中.下 三篇博客分别来讲述,请耐心阅读. 课程模块分为四个部分 课程列表 课程详情 视频播放 播放记录 课程模块(上)主要讲述课程列表部分 一.水平滑动广告栏界面 1.创 ...

  9. Android项目实战系列—基于博学谷(五)个人资料

    由于这个模块内容较多,篇幅较长,请耐心阅读. 个人资料模块分为两个部分 个人资料 资料修改 一.个人资料 1.个人资料界面 (1).创建个人资料界面 在com.buxuegu.activity包中创建 ...

最新文章

  1. 聚焦与发散——浅谈编程的发展方向
  2. 160个Crackme025之巧去Neg
  3. python - 配置文件
  4. jQuery插件开发教程
  5. .NET Core开发实战(第10课:环境变量配置提供程序)--学习笔记
  6. java obix_obix协议在java中的配置和使用详解
  7. 92款jQuery图片展示/幻灯插件开源软件
  8. 梯度下降和导数的作用
  9. 关于php开发中用户请求数据的安全问题的一点想法
  10. python双色球代码_python实现双色球随机选号
  11. Diygw拖拽自动生成App
  12. Linux cat命令
  13. cbrt c语音,多态性(C语言)
  14. ansys经典界面分析工字钢_ansys工字钢实例分析.doc
  15. C/C++ MessageBox() 弹窗的用法
  16. 命令之 dirname
  17. 每日一句_《定风波·暮春漫兴》
  18. sql中的coalesce
  19. 互联网不再适合创业 移动互联网不再制造马化腾
  20. 小扎、马斯克宣战ChatGPT!Meta和推特组建顶级AI团队,硅谷硝烟四起

热门文章

  1. 敬业签苹果ios手机便签里的完成记录如何筛选查看
  2. linux错误码分析
  3. 以太坊Go-ethereum源码分析之启动流程
  4. 尚品汇_第3章_平台属性管理
  5. 【原创】常用元器件(电阻)选型之阻值有多少-cayden20220910
  6. 谈分答商业模式中的收入模式
  7. C#手机号码段生成 前7位补全后4位
  8. Hashcat使用指南
  9. 最新友盟微信,QQ与微博分享集成方案
  10. 2022-2027年中国稀有金属矿产行业发展监测及投资战略研究报告