
由于这个模块内容较多,篇幅较长,请耐心阅读。
“我”的模块分为四个部分
- [x] 我的界面
- [x] 设置界面
- [ ] 修改密码界面
- [ ] 设置密保和找回密码
一、“我”的界面
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
1<?xml version="1.0" encoding="utf-8"?> 2<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="match_parent" 4 android:layout_height="wrap_content" 5 android:orientation="vertical"> 6 <LinearLayout 7 android:layout_width="fill_parent" 8 android:layout_height="fill_parent" 9 android:background="@android:color/white" 10 android:orientation="vertical"> 11 12 <!-- 导入标题栏——main_title_bar.xml文件 --> 13 <include layout="@layout/main_title_bar"/> 14 15 <!-- 主界面背景 --> 16 <FrameLayout 17 android:id="@+id/main_body" 18 android:layout_width="match_parent" 19 android:layout_height="match_parent" 20 android:background="@android:color/white"/> 21 </LinearLayout> 22 23 <!-- 底部导航栏界面设置 --> 24 <LinearLayout 25 android:id="@+id/main_bottom_bar" 26 android:layout_width="match_parent" 27 android:layout_height="55dp" 28 android:layout_alignParentBottom="true" 29 android:background="#F2F2F2" 30 android:orientation="horizontal"> 31 32 <!-- 底部导航栏课程 --> 33 <RelativeLayout 34 android:id="@+id/bottom_bar_course_btn" 35 android:layout_width="0dp" 36 android:layout_height="fill_parent" 37 android:layout_weight="1"> 38 <TextView 39 android:id="@+id/bottom_bar_text_course" 40 android:layout_width="fill_parent" 41 android:layout_height="wrap_content" 42 android:layout_alignParentBottom="true" 43 android:layout_centerHorizontal="true" 44 android:layout_marginBottom="3dp" 45 android:gravity="center" 46 android:singleLine="true" 47 android:text="课程" 48 android:textColor="#666666" 49 android:textSize="14sp"/> 50 <ImageView 51 android:id="@+id/bottom_bar_image_course" 52 android:layout_width="27dp" 53 android:layout_height="27dp" 54 android:layout_above="@id/bottom_bar_text_course" 55 android:layout_alignParentTop="true" 56 android:layout_centerHorizontal="true" 57 android:layout_marginTop="3dp" 58 android:src="@drawable/main_course_icon"/> 59 </RelativeLayout> 60 61 <!-- 底部导航栏习题 --> 62 <RelativeLayout 63 android:id="@+id/bottom_bar_exercises_btn" 64 android:layout_width="0dp" 65 android:layout_height="fill_parent" 66 android:layout_weight="1"> 67 <TextView 68 android:id="@+id/bottom_bar_text_exercises" 69 android:layout_width="fill_parent" 70 android:layout_height="wrap_content" 71 android:layout_alignParentBottom="true" 72 android:layout_centerHorizontal="true" 73 android:layout_marginBottom="3dp" 74 android:gravity="center" 75 android:singleLine="true" 76 android:text="习题" 77 android:textColor="#666666" 78 android:textSize="14sp"/> 79 <ImageView 80 android:id="@+id/bottom_bar_image_exercises" 81 android:layout_width="27dp" 82 android:layout_height="27dp" 83 android:layout_above="@id/bottom_bar_text_exercises" 84 android:layout_alignParentTop="true" 85 android:layout_centerHorizontal="true" 86 android:layout_marginTop="3dp" 87 android:src="@drawable/main_exercises_icon"/> 88 </RelativeLayout> 89 90 <!-- 底部导航栏我 --> 91 <RelativeLayout 92 android:id="@+id/bottom_bar_myinfo_btn" 93 android:layout_width="0dp" 94 android:layout_height="fill_parent" 95 android:layout_weight="1"> 96 <TextView 97 android:id="@+id/bottom_bar_text_myinfo" 98 android:layout_width="fill_parent" 99 android:layout_height="wrap_content" 100 android:layout_alignParentBottom="true" 101 android:layout_centerHorizontal="true" 102 android:layout_marginBottom="3dp" 103 android:gravity="center" 104 android:singleLine="true" 105 android:text="我" 106 android:textColor="#666666" 107 android:textSize="14sp"/> 108 <ImageView 109 android:id="@+id/bottom_bar_image_myinfo" 110 android:layout_width="27dp" 111 android:layout_height="27dp" 112 android:layout_above="@id/bottom_bar_text_myinfo" 113 android:layout_alignParentTop="true" 114 android:layout_centerHorizontal="true" 115 android:layout_marginTop="3dp" 116 android:src="@drawable/main_my_icon"/> 117 </RelativeLayout> 118 </LinearLayout> 119</RelativeLayout>
(3)、底部导航栏逻辑代码——MainActivity.java
1package com.boxuegu.activity; 2 3import android.content.Context; 4import android.content.Intent; 5import android.content.SharedPreferences; 6import android.content.pm.ActivityInfo; 7import android.graphics.Color; 8import android.os.Bundle; 9import android.support.v7.app.AppCompatActivity; 10import android.view.KeyEvent; 11import android.view.View; 12import android.widget.FrameLayout; 13import android.widget.ImageView; 14import android.widget.LinearLayout; 15import android.widget.RelativeLayout; 16import android.widget.TextView; 17import android.widget.Toast; 18 19import com. boxuegu. R; 20import com.boxuegu.view.MyInfoView; 21public class MainActivity extends AppCompatActivity implements View.OnClickListener{ 22 23 //中间内容栏 24 private FrameLayout mBodyLayout; 25 //底部导航栏按钮 26 private LinearLayout mBottomLayout; 27 28 //底部按钮 29 private View mCourseBtn; 30 private View mExercisesBtn; 31 private View mMyInfoBtn; 32 private TextView tv_course; 33 private TextView tv_exercises; 34 private TextView tv_myInfo; 35 private ImageView iv_course; 36 private ImageView iv_exercises; 37 private ImageView iv_myInfo; 38 private TextView tv_back; 39 private TextView tv_main_title; 40 private RelativeLayout rl_title_bar; 41 42 @Override 43 protected void onCreate(Bundle savedInstanceState) { 44 super.onCreate(savedInstanceState); 45 //设置界面布局 46 setContentView(R.layout.activity_main); 47 //设置界面为竖屏 48 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 49 init(); 50 initBottomBar(); 51 setListener(); 52 setInitStatus(); 53 } 54 55 /* 56 * 获取界面上的UI控件 57 */ 58 private void init() { 59 tv_back = (TextView)findViewById(R.id.tv_back); 60 tv_main_title = (TextView) findViewById(R.id.tv_main_title); 61 tv_main_title.setText("WordPress课程"); 62 rl_title_bar = (RelativeLayout)findViewById(R.id.title_bar); 63 rl_title_bar.setBackgroundColor(Color.parseColor("#FF9900")); 64 tv_back.setVisibility(View.GONE); 65 initBodyLayout(); 66 } 67 68 /* 69 * 获取底部导航栏上的控件 70 */ 71 private void initBottomBar() { 72 mBottomLayout = (LinearLayout) findViewById(R.id.main_bottom_bar); 73 mCourseBtn=findViewById(R.id.bottom_bar_course_btn); 74 mExercisesBtn= findViewById(R.id.bottom_bar_exercises_btn); 75 mMyInfoBtn = findViewById(R.id.bottom_bar_myinfo_btn); 76 tv_course=(TextView)findViewById(R.id.bottom_bar_text_course); 77 tv_exercises=(TextView)findViewById(R.id.bottom_bar_text_exercises); 78 tv_myInfo = (TextView)findViewById(R.id.bottom_bar_text_myinfo); 79 iv_course =(ImageView)findViewById(R.id.bottom_bar_image_course); 80 iv_exercises= (ImageView)findViewById(R.id.bottom_bar_image_exercises); 81 iv_myInfo= (ImageView)findViewById(R.id.bottom_bar_image_myinfo); 82 83 } 84 private void initBodyLayout() { 85 mBodyLayout = (FrameLayout) findViewById(R.id.main_body); 86 } 87 88 /* 89 * 控件的点击事件 90 */ 91 @Override 92 public void onClick(View v){ 93 switch (v.getId()){ 94 //课程的点击事件 95 case R.id.bottom_bar_course_btn: 96 clearBottomImageState(); 97 selectDisplayView(0); 98 break; 99 100 //习题的点击事件 101 case R.id.bottom_bar_exercises_btn: 102 clearBottomImageState(); 103 selectDisplayView(1); 104 break; 105 106 //我的点击事件 107 case R.id.bottom_bar_myinfo_btn: 108 clearBottomImageState(); 109 selectDisplayView(2); 110 break; 111 default: 112 break; 113 } 114 } 115 116 /* 117 * 设置底部三个按钮的点击监听事件 118 */ 119 private void setListener() { 120 for (int i = 0; i < mBottomLayout.getChildCount();i++){ 121 mBottomLayout.getChildAt(i).setOnClickListener(this); 122 } 123 } 124 125 /* 126 * 清除底部按钮的选中状态 127 */ 128 private void clearBottomImageState() { 129 tv_course.setTextColor(Color.parseColor("#666666")); 130 tv_exercises.setTextColor(Color.parseColor("#666666")); 131 tv_myInfo.setTextColor(Color.parseColor("#666666")); 132 iv_course.setImageResource(R.drawable.main_course_icon); 133 iv_exercises.setImageResource(R.drawable.main_exercises_icon); 134 iv_myInfo.setImageResource(R.drawable.main_my_icon); 135 for (int i=0;i<mBottomLayout.getChildCount();i++){ 136 mBottomLayout.getChildAt(i).setSelected(false); 137 } 138 } 139 140 /* 141 * 设置底部按钮的选中状态 142 */ 143 public void setSelectedStatus(int index){ 144 switch (index){ 145 case 0: 146 mCourseBtn.setSelected(true); 147 iv_course.setImageResource(R.drawable.main_course_icon_selected); 148 tv_course.setTextColor(Color.parseColor("#0097F7")); 149 rl_title_bar.setVisibility(View.VISIBLE); 150 tv_main_title.setText("WordPress课程"); 151 break; 152 case 1: 153 mExercisesBtn.setSelected(true); 154 iv_exercises.setImageResource(R.drawable.main_exercises_icon_selected); 155 tv_exercises.setTextColor(Color.parseColor("#0097F7")); 156 rl_title_bar.setVisibility(View.VISIBLE); 157 tv_main_title.setText("WordPress习题"); 158 break; 159 case 2: 160 mMyInfoBtn.setSelected(true); 161 iv_myInfo.setImageResource(R.drawable.main_my_icon_selected); 162 tv_myInfo.setTextColor(Color.parseColor("#0097F7")); 163 rl_title_bar.setVisibility(View.GONE); 164 } 165 } 166 167 /* 168 * 移除不需要的视图 169 */ 170 private void removeAllView(){ 171 for (int i = 0;i<mBodyLayout.getChildCount();i++){ 172 mBodyLayout.getChildAt(i).setVisibility(View.GONE); 173 } 174 } 175 176 /* 177 * 设置界面view的初始化状态 178 */ 179 private void setInitStatus() { 180 clearBottomImageState(); 181 setSelectedStatus(0); 182 createView(0); 183 184 } 185 186 /* 187 * 显示对应的页面 188 */ 189 private void selectDisplayView(int index) { 190 removeAllView(); 191 createView(index); 192 setSelectedStatus(index); 193 } 194 195 /* 196 * 选中视图 197 */ 198 private void createView(int viewIndex) { 199 switch (viewIndex){ 200 case 0: 201 //课程界面 202 break; 203 case 1: 204 //习题界面 205 break; 206 case 2: 207 //我的界面 208 break; 209 } 210 } 211 212 protected long exitTime; //记录第一次点击的时间 213 214 @Override 215 public boolean onKeyDown(int keyCode, KeyEvent event) { 216 if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){ 217 if ((System.currentTimeMillis()-exitTime)>2000){ 218 Toast.makeText(MainActivity.this,"再按一次退出WordPress",Toast.LENGTH_SHORT).show(); 219 exitTime = System.currentTimeMillis(); 220 }else{ 221 MainActivity.this.finish(); 222 if (readLoginStatus()){ 223 clearLoginStatus(); 224 } 225 System.exit(0); 226 } 227 return true; 228 } 229 return super.onKeyDown(keyCode, event); 230 231 } 232 233 //获取SharedPreferences中的登录状态 234 private boolean readLoginStatus() { 235 SharedPreferences sp = getSharedPreferences("loginInfo", Context.MODE_PRIVATE); 236 boolean isLogin = sp.getBoolean("isLogin",false); 237 return isLogin; 238 } 239 240 //清除SharedPreferences中的登录状态 241 private void clearLoginStatus() { 242 SharedPreferences sp = getSharedPreferences("loginInfo",Context.MODE_PRIVATE); 243 SharedPreferences.Editor editor = sp.edit(); //读取编辑器 244 editor.putBoolean("isLogin",false); //清除登录状态 245 editor.putString("loginUserName",""); //清除登录时的用户名 246 editor.commit(); //提交修改 247 } 248 249}
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
1<?xml version="1.0" encoding="utf-8"?> 2<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:orientation="vertical" 4 android:layout_width="match_parent" 5 android:layout_height="match_parent" 6 android:background="@android:color/white"> 7 8 <LinearLayout 9 android:id="@+id/ll_head" 10 android:layout_width="fill_parent" 11 android:layout_height="240dp" 12 android:background="@drawable/myinfo_login_bg" 13 android:orientation="vertical"> 14 15 <!-- 用户默认头像 --> 16 <ImageView 17 android:id="@+id/iv_head_icon" 18 android:layout_width="70dp" 19 android:layout_height="70dp" 20 android:src="@drawable/default_icon" 21 android:layout_gravity="center_horizontal" 22 android:layout_marginTop="75dp"/> 23 24 <TextView 25 android:id="@+id/tv_user_name" 26 android:layout_width="wrap_content" 27 android:layout_height="wrap_content" 28 android:layout_gravity="center_horizontal" 29 android:layout_marginTop="10dp" 30 android:text="点击登录" 31 android:textColor="@android:color/white" 32 android:textSize="16sp"/> 33 </LinearLayout> 34 35 <View 36 android:layout_width="fill_parent" 37 android:layout_height="1dp" 38 android:background="#E3E3E3" 39 android:layout_marginTop="20dp"></View> 40 41 <RelativeLayout 42 android:id="@+id/rl_course_history" 43 android:background="#F7F8F8" 44 android:gravity="center_vertical" 45 android:layout_marginLeft="10dp" 46 android:layout_marginRight="10dp" 47 android:layout_width="fill_parent" 48 android:layout_height="50dp"> 49 <ImageView 50 android:id="@+id/iv_course_historyicon" 51 android:src="@drawable/course_history_icon" 52 android:layout_marginLeft="20dp" 53 android:layout_width="20dp" 54 android:layout_height="20dp" 55 android:layout_centerVertical="true"/> 56 <TextView 57 android:id="@+id/tv_course_history" 58 android:layout_width="wrap_content" 59 android:layout_height="wrap_content" 60 android:text="播放记录" 61 android:textColor="#a3a3a3" 62 android:layout_toRightOf="@+id/iv_course_historyicon" 63 android:layout_centerVertical="true" 64 android:layout_marginLeft="25dp" 65 android:textSize="16sp"/> 66 <ImageView 67 android:src="@drawable/iv_right_arrow" 68 android:layout_marginRight="25dp" 69 android:layout_centerVertical="true" 70 android:layout_alignParentRight="true" 71 android:layout_width="15dp" 72 android:layout_height="15dp" /> 73 </RelativeLayout> 74 75 <View 76 android:layout_width="fill_parent" 77 android:layout_height="1dp" 78 android:background="#E3E3E3"></View> 79 <RelativeLayout 80 android:id="@+id/rl_setting" 81 android:background="#F7F8F8" 82 android:gravity="center_vertical" 83 android:layout_marginLeft="10dp" 84 android:layout_marginRight="10dp" 85 android:layout_width="fill_parent" 86 android:layout_height="50dp"> 87 <ImageView 88 android:id="@+id/iv_userinfo_icon" 89 android:src="@drawable/myinfo_setting_icon" 90 android:layout_marginLeft="20dp" 91 android:layout_width="20dp" 92 android:layout_height="20dp" 93 android:layout_centerVertical="true"/> 94 <TextView 95 android:layout_width="wrap_content" 96 android:layout_height="wrap_content" 97 android:text="设置" 98 android:textColor="#a3a3a3" 99 android:layout_toRightOf="@+id/iv_userinfo_icon" 100 android:layout_centerVertical="true" 101 android:layout_marginLeft="25dp" 102 android:textSize="16sp"/> 103 <ImageView 104 android:src="@drawable/iv_right_arrow" 105 android:layout_marginRight="25dp" 106 android:layout_centerVertical="true" 107 android:layout_alignParentRight="true" 108 android:layout_width="15dp" 109 android:layout_height="15dp" /> 110 </RelativeLayout> 111 <View 112 android:layout_width="fill_parent" 113 android:layout_height="1dp" 114 android:background="#E3E3E3"></View> 115</LinearLayout> 116
(4)、创建AnalysisUtils工具类
在utils包中创建一个java类,命名为AnalysisUtils,代码如下
1package com.boxuegu.utils; 2 3import android.content.Context; 4import android.content.SharedPreferences; 5 6public class AnalysisUtils { 7 /* 8 * 从SharedPreferences中读取用户名 9 */ 10 public static String readLoginUserName(Context context){ 11 SharedPreferences sp = context.getSharedPreferences("loginInfo",Context.MODE_PRIVATE); 12 String userName = sp.getString("loginUserName",""); 13 return userName; 14 } 15}
(5)、我的界面逻辑代码
选中com.boxuegu包,创建一个view包,在view包中创建一个java类,命名为MyInfoView。代码如下
1package com.boxuegu.view; 2 3import android.app.Activity; 4import android.content.Context; 5import android.content.Intent; 6import android.content.SharedPreferences; 7import android.view.LayoutInflater; 8import android.view.View; 9import android.widget.ImageView; 10import android.widget.LinearLayout; 11import android.widget.RelativeLayout; 12import android.widget.TextView; 13import android.widget.Toast; 14import com.boxuegu.R; 15import com.boxuegu.activity.LoginActivity; 16import com.boxuegu.activity.SettingActivity; 17import com.boxuegu.utils.AnalysisUtils; 18 19 20 21public class MyInfoView { 22 public ImageView iv_head_icon; 23 private LinearLayout ll_head; 24 private RelativeLayout rl_course_history,rl_setting; 25 private TextView tv_user_name; 26 private Activity mContext; 27 private LayoutInflater mInflater; 28 private View mCurrentView; 29 public MyInfoView(Activity context){ 30 //为之后将layout转化为view时用 31 mContext= context; 32 mInflater= LayoutInflater.from(mContext); 33 } 34 private void createView(){ 35 initView(); 36 } 37 38 /* 39 * 获取界面控件 40 */ 41 private void initView() { 42 //设置布局文件 43 mCurrentView = mInflater.inflate(R.layout.main_view_myinfo,null); 44 ll_head = (LinearLayout)mCurrentView.findViewById(R.id.ll_head); 45 iv_head_icon = (ImageView) mCurrentView.findViewById(R.id.iv_head_icon); 46 rl_course_history = (RelativeLayout) mCurrentView.findViewById(R.id.rl_course_history); 47 rl_setting = (RelativeLayout) mCurrentView.findViewById(R.id.rl_setting); 48 tv_user_name = (TextView) mCurrentView.findViewById(R.id.tv_user_name); 49 mCurrentView.setVisibility(View.VISIBLE); 50 setLoginParams(readLoginStatus()); 51 ll_head.setOnClickListener(new View.OnClickListener() { 52 @Override 53 public void onClick(View v) { 54 //判断是否登录 55 if (readLoginStatus()){ 56 //已登录跳转到个人资料界面 57 }else{ 58 //未登录跳转到登录界面 59 Intent intent = new Intent(mContext, LoginActivity.class); 60 mContext.startActivityForResult(intent,1); 61 } 62 } 63 }); 64 rl_course_history.setOnClickListener(new View.OnClickListener() { 65 @Override 66 public void onClick(View view) { 67 if (readLoginStatus()){ 68 //跳转到播放记录界面 69 }else{ 70 Toast.makeText(mContext,"您还未登录,请先登录",Toast.LENGTH_SHORT).show(); 71 } 72 } 73 }); 74 rl_setting.setOnClickListener(new View.OnClickListener() { 75 @Override 76 public void onClick(View v) { 77 if (readLoginStatus()){ 78 //跳转到设置界面 79 }else{ 80 Toast.makeText(mContext,"您还未登录,请先登录",Toast.LENGTH_SHORT).show(); 81 } 82 } 83 }); 84 85 } 86 87 /* 88 * 登录成功后设置我的界面 89 */ 90 public void setLoginParams(boolean isLogin){ 91 if (isLogin){ 92 tv_user_name.setText(AnalysisUtils.readLoginUserName(mContext)); 93 } 94 else{ 95 tv_user_name.setText("点击登录"); 96 } 97 } 98 99 /* 100 * 获取当前在导航栏上方对应的view 101 */ 102 public View getView(){ 103 if (mCurrentView==null){ 104 createView(); 105 }return mCurrentView; 106 } 107 108 /* 109 * 显示当前导航栏上方所对应的view界面 110 */ 111 public void showView(){ 112 if (mCurrentView==null){ 113 createView(); 114 } 115 mCurrentView.setVisibility(View.VISIBLE); 116 } 117 118 /* 119 * 从SharedPreferences中读取登录状态 120 */ 121 private boolean readLoginStatus(){ 122 SharedPreferences sp = mContext.getSharedPreferences("loginInfo", Context.MODE_PRIVATE); 123 boolean isLogin = sp.getBoolean("isLogin",false); 124 return isLogin; 125 } 126 127} 128
(6)、修改MainActivity.java
在文件中的40行代码下面加入如下代码,导入相应的包
private MyInfoView mMyInfoView;
找到MainActivity.java的createView方法,当case为2时,在注释//我的界面下方添加如下代码
1if (mMyInfoView == null){ 2 mMyInfoView = new MyInfoView(this); 3 mBodyLayout.addView(mMyInfoView.getView()); 4 }else { 5 mMyInfoView.getView(); 6 } 7 mMyInfoView.showView();
修改登录成功时的代码,在MainActivity.java中加入以下代码
1@Override 2 protected void onActivityResult(int requestCode, int resultCode, Intent data) { 3 super.onActivityResult(requestCode, resultCode, data); 4 if (data!=null){ 5 //从设置界面或登录界面传递过来的登录状态 6 boolean isLogin = data.getBooleanExtra("isLogin",false); 7 if (isLogin){ //登录成功时显示课程界面 8 clearBottomImageState(); 9 selectDisplayView(0); 10 } 11 if (mMyInfoView != null){ //登录成功或退出登录时根据islogin设置我的界面 12 mMyInfoView.setLoginParams(isLogin); 13 } 14 } 15 }
二、设置界面
1、创建设置界面
在com.boxuegu.activity包中新建一个类,命名为SettingActivity。在res/layout文件夹下新建布局文件,命名为activity_setting。
2、设置界面代码activity_setting.xml
1<?xml version="1.0" encoding="utf-8"?> 2<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3android:orientation="vertical" 4 android:layout_width="match_parent" 5 android:layout_height="match_parent" 6 android:background="@android:color/white"> 7 <include layout="@layout/main_title_bar"/> 8 <View 9 android:layout_width="fill_parent" 10 android:layout_height="1dp" 11 android:layout_marginTop="15dp" 12 android:background="#E3E3E3"/> 13 <RelativeLayout 14 android:id="@+id/rl_modify_psw" 15 android:layout_width="fill_parent" 16 android:layout_height="50dp" 17 android:background="#F7F8F8" 18 android:gravity="center_vertical" 19 android:paddingLeft="10dp" 20 android:paddingRight="10dp"> 21 <TextView 22 android:layout_width="wrap_content" 23 android:layout_height="wrap_content" 24 android:layout_centerVertical="true" 25 android:layout_marginLeft="25dp" 26 android:text="修改密码" 27 android:textColor="#A3A3A3" 28 android:textSize="16sp"/> 29 <ImageView 30 android:layout_width="15dp" 31 android:layout_height="15dp" 32 android:layout_alignParentRight="true" 33 android:layout_centerVertical="true" 34 android:layout_marginRight="25dp" 35 android:src="@drawable/iv_right_arrow"/> 36 </RelativeLayout> 37 <View 38 android:layout_width="fill_parent" 39 android:layout_height="1dp" 40 android:background="#E3E3E3"/> 41 <RelativeLayout 42 android:id="@+id/rl_security_setting" 43 android:layout_width="fill_parent" 44 android:layout_height="50dp" 45 android:background="#F7F8F8" 46 android:gravity="center_vertical" 47 android:paddingLeft="10dp" 48 android:paddingRight="10dp"> 49 <TextView 50 android:layout_width="wrap_content" 51 android:layout_height="wrap_content" 52 android:layout_centerVertical="true" 53 android:layout_marginLeft="25dp" 54 android:text="设置密保" 55 android:textColor="#A3A3A3" 56 android:textSize="16sp"/> 57 <ImageView 58 android:layout_width="15dp" 59 android:layout_height="15dp" 60 android:layout_alignParentRight="true" 61 android:layout_centerVertical="true" 62 android:layout_marginRight="25dp" 63 android:src="@drawable/iv_right_arrow"/> 64 </RelativeLayout> 65 <View 66 android:layout_width="fill_parent" 67 android:layout_height="1dp" 68 android:layout_marginTop="15dp" 69 android:background="#E3E3E3"/> 70 <RelativeLayout 71 android:id="@+id/rl_exit_login" 72 android:layout_width="fill_parent" 73 android:layout_height="50dp" 74 android:background="#F7F8F8" 75 android:gravity="center_vertical" 76 android:paddingLeft="10dp" 77 android:paddingRight="10dp"> 78 <TextView 79 android:layout_width="wrap_content" 80 android:layout_height="wrap_content" 81 android:layout_centerVertical="true" 82 android:layout_marginLeft="25dp" 83 android:text="退出登录" 84 android:textColor="#A3A3A3" 85 android:textSize="16sp"/> 86 <ImageView 87 android:layout_width="15dp" 88 android:layout_height="15dp" 89 android:layout_alignParentRight="true" 90 android:layout_centerVertical="true" 91 android:layout_marginRight="25dp" 92 android:src="@drawable/iv_right_arrow"/> 93 </RelativeLayout> 94 <View 95 android:layout_width="fill_parent" 96 android:layout_height="1dp" 97 android:background="#E3E3E3"/> 98</LinearLayout> 99
3、设置界面逻辑代码——SettingActivity.java
1package com.boxuegu.activity; 2 3import android.content.Context; 4import android.content.Intent; 5import android.content.SharedPreferences; 6import android.content.pm.ActivityInfo; 7import android.graphics.Color; 8import android.support.v7.app.AppCompatActivity; 9import android.os.Bundle; 10import android.view.View; 11import android.widget.RelativeLayout; 12import android.widget.TextView; 13import android.widget.Toast; 14 15import com.boxuegu.R; 16 17public class SettingActivity extends AppCompatActivity { 18 public static SettingActivity instance = null; 19 private TextView tv_main_title; 20 private TextView tv_back; 21 private RelativeLayout rl_title_bar; 22 private RelativeLayout rl_modify_psw; 23 private RelativeLayout rl_security_setting; 24 private RelativeLayout rl_exit_login; 25 26 @Override 27 protected void onCreate(Bundle savedInstanceState) { 28 super.onCreate(savedInstanceState); 29 //设置界面布局 30 setContentView(R.layout.activity_setting); 31 //设置界面为竖屏 32 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 33 instance = this; 34 init(); 35 } 36 37 //获取界面控件 38 private void init() { 39 tv_main_title = (TextView) findViewById(R.id.tv_main_title); 40 tv_main_title.setText("设置"); 41 tv_back = (TextView) findViewById(R.id.tv_back); 42 rl_title_bar = (RelativeLayout) findViewById(R.id.title_bar); 43 rl_title_bar.setBackgroundColor(Color.parseColor("#FF9900")); 44 rl_modify_psw = (RelativeLayout) findViewById(R.id.rl_modify_psw); 45 rl_security_setting = (RelativeLayout) findViewById(R.id.rl_security_setting); 46 rl_exit_login = (RelativeLayout) findViewById(R.id.rl_exit_login); 47 tv_back.setOnClickListener(new View.OnClickListener() { 48 @Override 49 public void onClick(View view) { 50 SettingActivity.this.finish(); 51 } 52 }); 53 54 //修改密码的点击事件 55 rl_modify_psw.setOnClickListener(new View.OnClickListener() { 56 @Override 57 public void onClick(View v) { 58 //跳转到修改密码界面 59 } 60 }); 61 62 //设置密保的点击事件 63 rl_security_setting.setOnClickListener(new View.OnClickListener() { 64 @Override 65 public void onClick(View v) { 66 //跳转到设置密保界面 67 } 68 }); 69 70 //退出登录的点击事件 71 rl_exit_login.setOnClickListener(new View.OnClickListener() { 72 @Override 73 public void onClick(View v) { 74 Toast.makeText(SettingActivity.this,"退出登录成功",Toast.LENGTH_SHORT).show(); 75 clearLoginStatus(); //清除登录状态和登录的用户名 76 //退出成功后把退出成功的状态传递到MainActivity中 77 Intent data = new Intent(); 78 data.putExtra("isLogin",false); 79 setResult(RESULT_OK,data); 80 SettingActivity.this.finish(); 81 } 82 }); 83 } 84 85 //清除SharedPreferences中的登录状态和登录时的用户名 86 private void clearLoginStatus(){ 87 SharedPreferences sp = getSharedPreferences("loginInfo", Context.MODE_PRIVATE); 88 SharedPreferences.Editor editor = sp.edit(); //获取编辑器 89 editor.putBoolean("isLogin",false); //清除登录状态 90 editor.putString("loginUserName",""); //清除用户名 91 editor.commit(); //提交修改 92 } 93} 94
4、修改我的界面代码
在MyInfoView.java文件中的initView方法,找到注释//跳转到设置界面下方添加如下代码
1 Intent intent = new Intent(mContext, SettingActivity.class); 2 mContext.startActivityForResult(intent,1);
三、运行效果


