摘要:我的模塊界面思路由于此界面只是主界面中的一部分,所以無需創(chuàng)建一個新的,只需要在目錄下新建一個布局即可,同理導(dǎo)入圖片至目錄下具體代碼如下點(diǎn)擊登錄分割線效果播放記錄設(shè)置工具類思路由于本項(xiàng)目在保存和獲取數(shù)據(jù)時會多次用到用戶名,因此創(chuàng)建一
我的模塊界面 思路
由于此界面只是主界面中的一部分,所以無需創(chuàng)建一個新的 Activity ,只需要在 layout 目錄下新建一個布局即可,同理導(dǎo)入圖片至 drawable 目錄下
具體代碼如下:
main_view_myinfo.xmlAnalysis工具類 思路
由于本項(xiàng)目在保存和獲取數(shù)據(jù)時會多次用到用戶名,因此創(chuàng)建一個工具類 AnalysisUtils 用于獲取用戶名,以便后續(xù)調(diào)用
具體代碼如下:
AnalysisUtilspackage cn.edu.lt.android.boxueguapp.utils; import android.content.Context; import android.content.SharedPreferences; /** * Created by lt on 2018/1/2. */ public class AnalysisUtils { /** * 從SharedPreferences中讀取登錄用戶名 * @param context * @return */ public static String readLoginUserName(Context context){ SharedPreferences sp=context.getSharedPreferences("loginInfo", Context.MODE_PRIVATE); String userName=sp.getString("loginUserName", ""); return userName; } }我的模塊邏輯 思路
在此界面中需要判斷用戶是否登錄,若已登錄則顯示用戶名,若未登錄則顯示“點(diǎn)擊登錄”,若用戶已登錄,當(dāng)點(diǎn)擊用戶頭像時跳轉(zhuǎn)到個人資料界面,點(diǎn)擊播放記錄跳轉(zhuǎn)到播放記錄界面,點(diǎn)擊設(shè)置時跳轉(zhuǎn)到設(shè)置界面。首先需要新建一個包 view ,在其下新建一個類 MyInfoView ,
MyInfoViewpackage cn.edu.lt.android.boxueguapp.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 cn.edu.lt.android.boxueguapp.R; import cn.edu.lt.android.boxueguapp.activity.LoginActivity; import cn.edu.lt.android.boxueguapp.utils.AnalysisUtils; /** * Created by lt on 2018/1/2. */ public class MyInfoView { private Context mContext; private final LayoutInflater mInflater; private View mCurrentView; private LinearLayout ll_head; private ImageView iv_head_icon; private RelativeLayout rl_course_history; private RelativeLayout rl_setting; private TextView tv_user_name; /** * 由于SharedPreferences是通過context讀取的,所以從構(gòu)造方法中傳遞一個context * @param mContext */ public MyInfoView(Context mContext){ this.mContext = mContext; mInflater = LayoutInflater.from(mContext); } /** * 獲取當(dāng)前在導(dǎo)航欄上方顯示對應(yīng)的View */ public View getView(){ if (mCurrentView == null) { createView();//調(diào)用initView() } return mCurrentView; } private void createView() { initView(); } /** * 獲取控件填充布局 * inflater布局填充器 */ 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); //用戶名需要根據(jù)不同的登錄狀態(tài)進(jìn)行不同的展示 setLoginParams(readLoginStatus());//拿到登錄狀態(tài)作為參數(shù)傳遞進(jìn)去 //處理控件交互 ll_head.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //判斷是否已經(jīng)登錄 if(readLoginStatus()){ //已登錄跳轉(zhuǎn)到個人資料界面 }else{ //未登錄跳轉(zhuǎn)到登錄界面 Intent intent=new Intent(mContext,LoginActivity.class); ((Activity)mContext).startActivityForResult(intent,1); } } }); rl_course_history.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(readLoginStatus()){ //跳轉(zhuǎn)到播放記錄界面 }else{ Toast.makeText(mContext, "您還未登錄,請先登錄", Toast.LENGTH_SHORT).show(); } } }); rl_setting.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(readLoginStatus()){ //跳轉(zhuǎn)到設(shè)置界面 }else{ Toast.makeText(mContext, "您還未登錄,請先登錄", Toast.LENGTH_SHORT).show(); } } }); } /** * 登錄成功后設(shè)置我的界面 */ public void setLoginParams(boolean isLogin) { if(isLogin){ tv_user_name.setText(AnalysisUtils.readLoginUserName(mContext)); }else{ tv_user_name.setText("點(diǎn)擊登錄"); } } /** * 從SharedPreferences中讀取登錄狀態(tài) * @return */ private boolean readLoginStatus(){ SharedPreferences sp=mContext.getSharedPreferences("loginInfo", Context.MODE_PRIVATE); boolean isLogin=sp.getBoolean("isLogin", false); return isLogin; } /** * 顯示當(dāng)前導(dǎo)航欄上方所對應(yīng)的view界面 */ public void showView() { if (mCurrentView == null){ createView(); } mCurrentView.setVisibility(View.VISIBLE); } }
然后需要在 MainActivity 傳遞登錄成功的信息,覆寫一個 onActivityResult 方法
MainActivity@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (data != null){ //從設(shè)置界面或登錄界面?zhèn)鬟f過來的登錄狀態(tài) boolean isLogin = data.getBooleanExtra("isLogin", false); if (isLogin){//登錄成功時顯示課程界面 clearBottomImageState(); selectDisplayView(0); } if (mMyInfoView != null) {//登錄成功或退出登錄時根據(jù)isLogin設(shè)置我的界面 mMyInfoView.setLoginParams(isLogin); } } }
再修改之前為了測試效果所修改的 SplashActivity 和 LoginActivity
SplashActivityIntent intent = new Intent(SplashActivity.this, LoginActivity.class); 改為 Intent intent = new Intent(SplashActivity.this, MainActivity.class);LoginActivity
Intent data=new Intent(); data.putExtra("isLogin",true); setResult(RESULT_OK,data); LoginActivity.this.finish(); //startActivity(new Intent(LoginActivity.this, MainActivity.class));刪除此行 return;運(yùn)行效果
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/68114.html
摘要:底部導(dǎo)航欄布局思路本項(xiàng)目的主界面設(shè)計(jì)了底部導(dǎo)航欄,為了方便后續(xù)布局的搭建,創(chuàng)建一個底部導(dǎo)航欄的框架,修改主界面布局為,利用包裹標(biāo)題欄與界面內(nèi)容,將各界面內(nèi)容設(shè)置為,再用一個包裹底部導(dǎo)航欄,在內(nèi)部用三個來顯示三個按鈕具體代碼如下限定大小 底部導(dǎo)航欄布局 思路 本項(xiàng)目的主界面設(shè)計(jì)了底部導(dǎo)航欄,為了方便后續(xù)布局的搭建,創(chuàng)建一個底部導(dǎo)航欄UI的框架,修改主界面布局為 RelativeLayou...
摘要:修改密碼界面思路完成了設(shè)置部分接著完成設(shè)置中的第一個模塊修改密碼,創(chuàng)建,修改布局為具體代碼如下請輸入原始密碼請輸入新密碼請?jiān)俅屋斎胄旅艽a保存改密邏輯思路首先輸入的原始密碼與從中讀取的原始密碼必須一致,輸入的新密碼與原始密碼不能相同,再次輸 修改密碼界面 思路 完成了設(shè)置部分接著完成設(shè)置中的第一個模塊修改密碼,創(chuàng)建 ModifyPswActivity ,修改布局為 LinearLayou...
閱讀 604·2023-04-26 02:58
閱讀 2339·2021-09-27 14:01
閱讀 3644·2021-09-22 15:57
閱讀 1208·2019-08-30 15:56
閱讀 1072·2019-08-30 15:53
閱讀 824·2019-08-30 15:52
閱讀 695·2019-08-26 14:01
閱讀 2193·2019-08-26 13:41