摘要:我的模塊界面思路由于此界面只是主界面中的一部分,所以無需創建一個新的,只需要在目錄下新建一個布局即可,同理導入圖片至目錄下具體代碼如下點擊登錄分割線效果播放記錄設置工具類思路由于本項目在保存和獲取數據時會多次用到用戶名,因此創建一
我的模塊界面 思路
由于此界面只是主界面中的一部分,所以無需創建一個新的 Activity ,只需要在 layout 目錄下新建一個布局即可,同理導入圖片至 drawable 目錄下
具體代碼如下:
main_view_myinfo.xmlAnalysis工具類 思路
由于本項目在保存和獲取數據時會多次用到用戶名,因此創建一個工具類 AnalysisUtils 用于獲取用戶名,以便后續調用
具體代碼如下:
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; } }我的模塊邏輯 思路
在此界面中需要判斷用戶是否登錄,若已登錄則顯示用戶名,若未登錄則顯示“點擊登錄”,若用戶已登錄,當點擊用戶頭像時跳轉到個人資料界面,點擊播放記錄跳轉到播放記錄界面,點擊設置時跳轉到設置界面。首先需要新建一個包 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讀取的,所以從構造方法中傳遞一個context * @param mContext */ public MyInfoView(Context mContext){ this.mContext = mContext; mInflater = LayoutInflater.from(mContext); } /** * 獲取當前在導航欄上方顯示對應的View */ public View getView(){ if (mCurrentView == null) { createView();//調用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); //用戶名需要根據不同的登錄狀態進行不同的展示 setLoginParams(readLoginStatus());//拿到登錄狀態作為參數傳遞進去 //處理控件交互 ll_head.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //判斷是否已經登錄 if(readLoginStatus()){ //已登錄跳轉到個人資料界面 }else{ //未登錄跳轉到登錄界面 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()){ //跳轉到播放記錄界面 }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("點擊登錄"); } } /** * 從SharedPreferences中讀取登錄狀態 * @return */ private boolean readLoginStatus(){ SharedPreferences sp=mContext.getSharedPreferences("loginInfo", Context.MODE_PRIVATE); boolean isLogin=sp.getBoolean("isLogin", false); return isLogin; } /** * 顯示當前導航欄上方所對應的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){ //從設置界面或登錄界面傳遞過來的登錄狀態 boolean isLogin = data.getBooleanExtra("isLogin", false); if (isLogin){//登錄成功時顯示課程界面 clearBottomImageState(); selectDisplayView(0); } if (mMyInfoView != null) {//登錄成功或退出登錄時根據isLogin設置我的界面 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;運行效果
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/68114.html
摘要:底部導航欄布局思路本項目的主界面設計了底部導航欄,為了方便后續布局的搭建,創建一個底部導航欄的框架,修改主界面布局為,利用包裹標題欄與界面內容,將各界面內容設置為,再用一個包裹底部導航欄,在內部用三個來顯示三個按鈕具體代碼如下限定大小 底部導航欄布局 思路 本項目的主界面設計了底部導航欄,為了方便后續布局的搭建,創建一個底部導航欄UI的框架,修改主界面布局為 RelativeLayou...
摘要:修改密碼界面思路完成了設置部分接著完成設置中的第一個模塊修改密碼,創建,修改布局為具體代碼如下請輸入原始密碼請輸入新密碼請再次輸入新密碼保存改密邏輯思路首先輸入的原始密碼與從中讀取的原始密碼必須一致,輸入的新密碼與原始密碼不能相同,再次輸 修改密碼界面 思路 完成了設置部分接著完成設置中的第一個模塊修改密碼,創建 ModifyPswActivity ,修改布局為 LinearLayou...
閱讀 568·2023-04-26 02:58
閱讀 2308·2021-09-27 14:01
閱讀 3608·2021-09-22 15:57
閱讀 1172·2019-08-30 15:56
閱讀 1047·2019-08-30 15:53
閱讀 792·2019-08-30 15:52
閱讀 649·2019-08-26 14:01
閱讀 2165·2019-08-26 13:41