日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

十天冲刺之四

發布時間:2025/3/18 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 十天冲刺之四 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

?

?

?

?

延續昨天的學習進度,將登陸界面的注冊功能以及注冊界面進行了編寫,

?如圖布局:

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!--register_icon_normal.png為按鈕不點擊的樣式,點擊顯示灰色圖片register_icon_selected.png--><item android:drawable="@drawable/register_icon_selected" android:state_pressed="true"/><item android:drawable="@drawable/register_icon_normal"/> </selector>

  

<?xml version="1.0" encoding="utf-8"?> <!--注冊界面--> <!--這里的布局是放置 1 個 ImageView 控件,用于顯示用戶頭像;3 個 EditText 控件,用于輸入用戶名、密碼、再次輸入密碼;1 個 Button 控件作為注冊按鈕--> <!--修改 activity_register.xml 為 LinearLayout 布局--> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/activity_register"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/register_bg"android:orientation="vertical"><include layout="@layout/main_title_bar"></include><!--引入標題欄--><ImageViewandroid:layout_width="70dp"android:layout_height="70dp"android:layout_gravity="center_horizontal"android:layout_marginTop="25dp"android:src="@drawable/default_icon"/><!--三個編輯框--><EditTextandroid:id="@+id/et_user_name"android:layout_width="fill_parent"android:layout_height="48dp"android:layout_gravity="center_horizontal"android:layout_marginLeft="35dp"android:layout_marginRight="35dp"android:layout_marginTop="35dp"android:background="@drawable/register_user_name_bg"android:drawableLeft="@drawable/user_name_icon"android:drawablePadding="10dp"android:gravity="center_vertical"android:hint="請輸入用戶名"android:paddingLeft="8dp"android:singleLine="true"android:textColor="#000000"android:textColorHint="#a3a3a3"android:textSize="14sp"/><EditTextandroid:id="@+id/et_psw"android:layout_width="fill_parent"android:layout_gravity="center_horizontal"android:layout_height="48dp"android:layout_marginLeft="35dp"android:layout_marginRight="35dp"android:background="@drawable/register_psw_bg"android:drawableLeft="@drawable/psw_icon"android:drawablePadding="10dp"android:hint="請輸入密碼"android:inputType="textPassword"android:paddingLeft="8dp"android:singleLine="true"android:textColor="#000000"android:textColorHint="#a3a3a3"android:textSize="14sp"/><EditTextandroid:id="@+id/et_psw_again"android:layout_width="fill_parent"android:layout_height="48dp"android:layout_gravity="center_horizontal"android:layout_marginLeft="35dp"android:layout_marginRight="35dp"android:background="@drawable/register_psw_again_bg"android:drawableLeft="@drawable/psw_icon"android:drawablePadding="10dp"android:hint="請再次輸入密碼"android:inputType="textPassword"android:paddingLeft="8dp"android:singleLine="true"android:textColor="#000000"android:textColorHint="#a3a3a3"android:textSize="14sp"/><Buttonandroid:id="@+id/btn_register"android:layout_width="fill_parent"android:layout_height="40dp"android:layout_gravity="center_horizontal"android:layout_marginLeft="35dp"android:layout_marginRight="35dp"android:layout_marginTop="15dp"android:background="@drawable/register_selector"android:text="注 冊"android:textColor="@android:color/white"android:textSize="18sp"/> </LinearLayout>

  

?在實現注冊功能上,出現了一些問題,通過網上資料的查詢,確定了使用MD5加密算法,簡單來說就是吧任意長度的字符串變成固定長度(通常是128位)的十六進制字符串。

public static String md5(String text){MessageDigest digest = null;try {//獲取數據指紋對象digest = MessageDigest.getInstance("md5");//字節數組byte[] result = digest.digest(text.getBytes());//16進制轉換StringBuffer sb = new StringBuffer();//獲取所有字節進行轉換for (byte b: result){//使用『與算法』,java使用unicode字符,所以每個字符占位兩個// 需要與兩位16進制最大值進行與運算,獲取number值int number = b & 0xff;//number值轉換字符串String hex = Integer.toHexString(number);if (hex.length() == 1){//若轉換后的字符長度等于1則進行字符串拼接sb.append("0"+hex);}else {sb.append(hex);}}return sb.toString();} catch (NoSuchAlgorithmException e) {e.printStackTrace();//發送異常return空字符串return "";}}

  

聲明相應的控件屬性,如:標題和一些按鈕的屬性

//標題 private TextView tv_main_title; //返回按鈕 private TextView tv_back; //注冊按鈕 private Button btn_register; //用戶名,密碼,再次輸入的密碼的控件 private EditText et_user_name,et_psw,et_psw_again; //用戶名,密碼,再次輸入的密碼的控件的獲取值 private String userName,psw,pswAgain; //標題布局 private RelativeLayout rl_title_bar;

在RegisterAcitivity中創建界面控件的初始化方法init(),用于獲取注冊界面鎖要用到的控件以及實現控件的點擊事件。注意有兩個私有類方法getEditString()和isExistUserName(String userName)寫在init()后面的。

private void init() {//從main_title_bar.xml 頁面布局中獲取對應的UI控件tv_main_title=findViewById(R.id.tv_main_title);tv_main_title.setText("注冊");tv_back=findViewById(R.id.tv_back);//布局根元素rl_title_bar=findViewById(R.id.title_bar);rl_title_bar.setBackgroundColor(Color.TRANSPARENT);//從activity_register.xml 頁面中獲取對應的UI控件btn_register=findViewById(R.id.btn_register);et_user_name=findViewById(R.id.et_user_name);et_psw=findViewById(R.id.et_psw);et_psw_again=findViewById(R.id.et_psw_again);tv_back.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//返回鍵RegisterActivity.this.finish();}});//注冊按鈕btn_register.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//獲取輸入在相應控件中的字符串getEditString();//判斷輸入框內容if(TextUtils.isEmpty(userName)){Toast.makeText(RegisterActivity.this, "請輸入用戶名", Toast.LENGTH_SHORT).show();return;}else if(TextUtils.isEmpty(psw)){Toast.makeText(RegisterActivity.this, "請輸入密碼", Toast.LENGTH_SHORT).show();return;}else if(TextUtils.isEmpty(pswAgain)){Toast.makeText(RegisterActivity.this, "請再次輸入密碼", Toast.LENGTH_SHORT).show();return;}else if(!psw.equals(pswAgain)){Toast.makeText(RegisterActivity.this, "輸入兩次的密碼不一樣", Toast.LENGTH_SHORT).show();return;/***從SharedPreferences中讀取輸入的用戶名,判斷SharedPreferences中是否有此用戶名*/}else if(isExistUserName(userName)){Toast.makeText(RegisterActivity.this, "此賬戶名已經存在", Toast.LENGTH_SHORT).show();return;}else{Toast.makeText(RegisterActivity.this, "注冊成功", Toast.LENGTH_SHORT).show();//把賬號、密碼和賬號標識保存到sp里面/*** 保存賬號和密碼到SharedPreferences中*/saveRegisterInfo(userName, psw);//注冊成功后把賬號傳遞到LoginActivity.java中// 返回值到loginActivity顯示Intent data = new Intent();data.putExtra("userName", userName);setResult(RESULT_OK, data);//RESULT_OK為Activity系統常量,狀態碼為-1,//表示此頁面下的內容操作成功將data返回到上一頁面,如果是用back返回過去的則不存在用setResult傳遞data值RegisterActivity.this.finish();}}});}/*** 獲取控件中的字符串*/private void getEditString(){userName=et_user_name.getText().toString().trim();psw=et_psw.getText().toString().trim();pswAgain=et_psw_again.getText().toString().trim();}/*** 從SharedPreferences中讀取輸入的用戶名,判斷SharedPreferences中是否有此用戶名*/private boolean isExistUserName(String userName){boolean has_userName=false;//mode_private SharedPreferences sp = getSharedPreferences( );// "loginInfo", MODE_PRIVATESharedPreferences sp=getSharedPreferences("loginInfo", MODE_PRIVATE);//獲取密碼String spPsw=sp.getString(userName, "");//傳入用戶名獲取密碼//如果密碼不為空則確實保存過這個用戶名if(!TextUtils.isEmpty(spPsw)) {has_userName=true;}return has_userName;}

  

?

轉載于:https://www.cnblogs.com/fly1234/p/10873060.html

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的十天冲刺之四的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。