溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Android開發(fā)——記賬App開發(fā)項目分享(一)之用戶登錄

發(fā)布時間:2020-06-13 10:16:48 來源:網(wǎng)絡(luò) 閱讀:8559 作者:孤月2012 欄目:移動開發(fā)

一、題外話:

本人java基礎(chǔ)很一般,學(xué)java的時候就寫了個notepad的demo,為了順應(yīng)時代的發(fā)展在去年10月份開始學(xué)習(xí)android,到現(xiàn)在中間漸漸續(xù)續(xù)的持續(xù)了將近5個月,剛開始我也是下了一堆android的視頻,很可惜只看了前2章老羅的視頻,工作的人了沒那么大的耐心和時間慢慢看下去,依照視頻和網(wǎng)上資料把android的開發(fā)環(huán)境搭起來了,android SDK+eclipse ,中間也嘗試了使用android studio ,但是一旦出了問題,查找的資料相對Eclipse要少很多,所以對于初學(xué)者建議還是用Eclipse~沒有多少基礎(chǔ),也不想慢慢看視頻,直接就進入實操,期間困難在所難免,但堅持下來收獲也是非常明顯的了,現(xiàn)在我就分享下整個開發(fā)過程,當(dāng)然也會包括代碼分享~讓其他正在步入android門檻的童鞋可以有個借鑒,減少彎路~

二、進入正題:

記賬應(yīng)用的開發(fā)涉及絕大多數(shù)android的UI和sqlite數(shù)據(jù)庫等操作,很適合作為初學(xué)者練手,下面是我最開始的設(shè)計思路:

Android開發(fā)——記賬App開發(fā)項目分享(一)之用戶登錄

后面在開發(fā)過程中有修改,還是直接來干貨,我就按照我的開發(fā)順序來依次介紹,首先是登錄界面的功能:UI中運用了LinearLayout+RelativeLayout組合布局的使用,期間有各種屬性的使用,寫一個這樣的界面就可以了解很多UI的屬性了。

效果如下圖:

Android開發(fā)——記賬App開發(fā)項目分享(一)之用戶登錄

xml源碼:

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" 
    android:background="#FFFFFF">
    <ImageView
        android:layout_width="120dp"
        android:layout_height="120dp"
        android:layout_gravity="center"
        android:background="@drawable/logo1" >
    </ImageView>
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="8dp"
            android:gravity="center"
            android:text="歡迎登錄記賬星"
            android:textColor="#57647D"
            android:textSize="20sp"
            android:textStyle="bold" >
        </TextView>
    </LinearLayout>
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >
        <LinearLayout
            android:layout_width="260dp"
            android:layout_height="100dp"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="8dp"
            android:background="@drawable/userinfo_border"
            android:orientation="vertical" >
            <AutoCompleteTextView
                android:id="@+id/username"
                android:layout_width="250dp"
                android:layout_height="45dp"
                android:layout_gravity="center_horizontal"
                android:layout_marginTop="1dp"
                android:background="#FFFFFF"
                android:drawableLeft="@drawable/user"
                android:drawablePadding="10dp"
                android:hint="請輸入您的用戶名"
                android:textColor="#3D3D3D"
                android:textColorHint="#A3B1CA"
                android:textSize="15sp" >
            </AutoCompleteTextView>
            <View
                android:layout_width="match_parent"
                android:layout_height="0.2dp"
                android:layout_marginTop="4dp"
                android:background="#F2F2F2" >
            </View>
            <EditText
                android:id="@+id/pwd"
                android:layout_width="250dp"
                android:layout_height="45dp"
                android:layout_gravity="center_horizontal"
                android:background="#FFFFFF"
                android:drawableLeft="@drawable/password"
                android:drawablePadding="10dp"
                android:hint="請輸入您的密碼  "
                android:inputType="textPassword"
                android:textColorHint="#A3B1CA"
                android:textSize="15sp" >
            </EditText>
        </LinearLayout>
        <Button
            android:id="@+id/btnLogin"
            android:layout_width="260dp"
            android:layout_height="48dp"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="20dp"
            android:background="@drawable/normalbtnstyle"
            android:gravity="center"
            android:text="登  錄"
            android:textColor="#FFFFFF"
            android:textSize="20sp"
            android:textStyle="bold" >
        </Button>
  <LinearLayout
         android:layout_width="260dp"
         android:layout_height="wrap_content"
         android:orientation="horizontal"
         android:layout_gravity="center"
         android:gravity="center"
         android:layout_marginTop="10dp">"
        <CheckBox
            android:id="@+id/cbRememberPwd"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_weight="1"
            android:checked="false"
            android:text="記住密碼"
            android:textColor="#5E6A81"
            android:textSize="15sp" />
            
        <Button
            android:id="@+id/btnForgetPwd"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="#FFFFFF"
            android:gravity="right"
            android:layout_weight="1"
            android:textColor="@drawable/btn_forgetpwd_color"
            android:textSize="15sp" 
            android:text="忘記密碼?"/>
        </LinearLayout>
    </LinearLayout>
    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="40dp"
        android:gravity="center"
        android:orientation="vertical" >
        <TextView
            android:id="@+id/zhucexinxi"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_marginBottom="5dp"
            android:gravity="center"
            android:text="啊,還沒有賬戶?馬上點擊 "
            android:textColor="#5E6A81"
            android:textSize="14sp" >
"
        </TextView>
        <TextView
            android:id="@+id/txtRegisterLink"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_marginBottom="5dp"
            android:layout_toRightOf="@+id/zhucexinxi"
            android:textSize="15sp"
            android:textStyle="bold" >
        </TextView>
    </RelativeLayout>
</LinearLayout>

程序代碼:

由于這里面程序代碼無非就是一些判斷控制,這里就只上傳保存按鈕的代碼……

btnlogin.setOnClickListener(new OnClickListener() {
   
   @Override
   public void onClick(View v) {
    if (uname!="" && uname!=null) {
     if (rememberPwd.equals("true")) {
      if (evUsername.getText().toString().trim().length()>0) {
       if (evUsername.getText().toString().trim().equals(uname)) {
        Toast.makeText(Login.this,"登錄成功",Toast.LENGTH_SHORT).show();
        Intent intent =new Intent(Login.this,MainActivity.class);
        startActivity(intent);
        intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
        finish();
        ((NotifyApplication)getApplication()).intLoginStatus=1;//登錄激活
        ((NotifyApplication)getApplication()).strUsername = uname;
       }else {
        Toast.makeText(Login.this,"用戶名不正確",Toast.LENGTH_SHORT).show();
        evUsername.setText("");
        evUsername.requestFocus();
       }
      }else {
       Toast.makeText(Login.this,"用戶名不能為空",Toast.LENGTH_SHORT).show();
       evUsername.requestFocus();
      }
     }else {
      if (evUsername.getText().toString().trim().length()>0) {
       if (evPwd.getText().toString().trim().length()>5) {
        if (evUsername.getText().toString().trim().equals(uname)) {
         if (evPwd.getText().toString().equals(pwd)) {
          Toast.makeText(Login.this,"登錄成功",Toast.LENGTH_SHORT).show();
          Intent intent =new Intent(Login.this,MainActivity.class);
          startActivity(intent);
          intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
          finish();
          ((NotifyApplication)getApplication()).intLoginStatus=1;//登錄激活
          ((NotifyApplication)getApplication()).strUsername = uname;
         }else {
          Toast.makeText(Login.this,"密碼不正確",Toast.LENGTH_SHORT).show();
          evPwd.setText("");
          evPwd.requestFocus();
         }
        }else {
         Toast.makeText(Login.this,"用戶名不正確",Toast.LENGTH_SHORT).show();
         evUsername.setText("");
         evUsername.requestFocus();
        }
       }else {
        Toast.makeText(Login.this,"密碼長度至少為6",Toast.LENGTH_SHORT).show();
        evPwd.setText("");
        evPwd.requestFocus();
       }
      }else {
       Toast.makeText(Login.this,"用戶名不能為空",Toast.LENGTH_SHORT).show();
       evUsername.requestFocus();
      }
     }
    }else {
     Toast.makeText(Login.this,"您還未注冊,請點擊下方注冊",Toast.LENGTH_SHORT).show();
    }
    
   }
  });

在現(xiàn)在看來這個頁面有難度的地方,就是“注冊”標(biāo)簽的點擊鏈接功能的實現(xiàn),需要用到SpannableString 這個類,實現(xiàn)該處具體源碼如下:

txtRegisterLink=(TextView)findViewById(R.id.txtRegisterLink);
  
  String str2="注冊";
  SpannableString spans = new SpannableString(str2); 
  //點擊文本鏈接事件
  spans.setSpan(new ClickableSpan() {
   @Override  
   public void onClick(View widget) {
       if (uname==null || uname=="") {
        Intent intent = new Intent(Login.this, Register.class);
                 startActivity(intent);
                 finish();
       }else{
        Toast.makeText(Login.this,"您已注冊,不能重復(fù)注冊",Toast.LENGTH_SHORT).show();
       } 
              }
           }, 0, str2.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
  
  txtRegisterLink.setText(spans);

 

接著寫~~~

有用戶登錄界面,當(dāng)然就需要用戶注冊界面了,上面也有貼出在用戶登錄界面通過link調(diào)轉(zhuǎn)到注冊界面的代碼,下面就直接說注冊界面的功能點:

效果圖:

Android開發(fā)——記賬App開發(fā)項目分享(一)之用戶登錄

注冊界面的xml代碼:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#FFFFFF"
    android:layout_gravity="center_horizontal"    
    android:orientation="vertical" >
    <LinearLayout
        android:layout_width="260dp"
        android:layout_height="220dp"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="40dp"
        android:background="@drawable/userinfo_border"
        android:orientation="vertical" >
        <EditText
            android:id="@+id/username"
            android:layout_width="250dp"
            android:layout_height="45dp"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="1dp"
            android:background="#FFFFFF"
            android:drawableLeft="@drawable/user"
            android:drawablePadding="6sp"
            android:hint="請輸入您的用戶名"
            android:textColor="#3D3D3D"
            android:textColorHint="#A3B1CA"
            android:textSize="15sp" >
        </EditText>
        <View
            android:layout_width="match_parent"
            android:layout_height="0.2dp"
            android:layout_marginTop="4dp"
            android:background="#F2F2F2" >
        </View>
        <EditText
            android:id="@+id/RegPwd"
            android:layout_width="250dp"
            android:layout_height="45dp"
            android:layout_gravity="center_horizontal"
            android:background="#FFFFFF"
            android:drawableLeft="@drawable/password"
            android:drawablePadding="6sp"
            android:hint="請輸入您的密碼  "
            android:inputType="textPassword"
            android:textColorHint="#A3B1CA"
            android:textSize="15sp" >
        </EditText>
        <View
            android:layout_width="match_parent"
            android:layout_height="0.2dp"
            android:layout_marginTop="4dp"
            android:background="#F2F2F2" >
        </View>
        <EditText
            android:id="@+id/RegPwdAgain"
            android:layout_width="250dp"
            android:layout_height="45dp"
            android:layout_gravity="center_horizontal"
            android:background="#FFFFFF"
            android:drawableLeft="@drawable/password"
            android:drawablePadding="6sp"
            android:hint="請再次輸入您的密碼"
            android:inputType="textPassword"
            android:textColorHint="#A3B1CA"
            android:textSize="15sp" >
        </EditText>
        <View
            android:layout_width="match_parent"
            android:layout_height="0.2dp"
            android:layout_marginTop="2dp"
            android:background="#F2F2F2" >
        </View>
        <TextView
            android:layout_width="match_parent"
            android:layout_height="16dp"
            android:layout_gravity="center_horizontal"
            android:text=" 請輸入常用郵箱,便于找回密碼"
            android:textColor="#108AC6"
            android:textSize="13sp" >
        </TextView>
        <View
            android:layout_width="match_parent"
            android:layout_height="0.2dp"
            android:layout_marginTop="2dp"
            android:background="#F2F2F2" >
        </View>
        <EditText
            android:id="@+id/RegMail"
            android:layout_width="250dp"
            android:layout_height="45dp"
            android:layout_gravity="center_horizontal"
            android:background="#FFFFFF"
            android:drawableLeft="@drawable/mail"
            android:drawablePadding="6sp"
            android:hint="請輸入您的郵箱賬號"
            android:inputType="textWebEmailAddress"
            android:textColorHint="#A3B1CA"
            android:textSize="15sp" >
        </EditText>
    </LinearLayout>
    <Button
        android:id="@+id/btnRegister"
        android:layout_width="260dp"
        android:layout_height="48dp"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="20dp"
        android:background="@drawable/normalbtnstyle"
        android:gravity="center"
        android:text="注  冊"
        android:textColor="#FFFFFF"
        android:textSize="20sp"
        android:textStyle="bold" >
    </Button>
</LinearLayout>

注冊界面的UI很簡單了,還是基礎(chǔ)控件的使用,當(dāng)然UI上面的實現(xiàn)方式很多,初學(xué)時根據(jù)自己的需要和熟悉程度選擇就好……

 

 

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI