您好,登錄后才能下訂單哦!
一、題外話:
本人java基礎很一般,學java的時候就寫了個notepad的demo,為了順應時代的發展在去年10月份開始學習android,到現在中間漸漸續續的持續了將近5個月,剛開始我也是下了一堆android的視頻,很可惜只看了前2章老羅的視頻,工作的人了沒那么大的耐心和時間慢慢看下去,依照視頻和網上資料把android的開發環境搭起來了,android SDK+eclipse ,中間也嘗試了使用android studio ,但是一旦出了問題,查找的資料相對Eclipse要少很多,所以對于初學者建議還是用Eclipse~沒有多少基礎,也不想慢慢看視頻,直接就進入實操,期間困難在所難免,但堅持下來收獲也是非常明顯的了,現在我就分享下整個開發過程,當然也會包括代碼分享~讓其他正在步入android門檻的童鞋可以有個借鑒,減少彎路~
二、進入正題:
記賬應用的開發涉及絕大多數android的UI和sqlite數據庫等操作,很適合作為初學者練手,下面是我最開始的設計思路:
后面在開發過程中有修改,還是直接來干貨,我就按照我的開發順序來依次介紹,首先是登錄界面的功能:UI中運用了LinearLayout+RelativeLayout組合布局的使用,期間有各種屬性的使用,寫一個這樣的界面就可以了解很多UI的屬性了。
效果如下圖:
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(); } } });
在現在看來這個頁面有難度的地方,就是“注冊”標簽的點擊鏈接功能的實現,需要用到SpannableString 這個類,實現該處具體源碼如下:
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,"您已注冊,不能重復注冊",Toast.LENGTH_SHORT).show(); } } }, 0, str2.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); txtRegisterLink.setText(spans);
接著寫~~~
有用戶登錄界面,當然就需要用戶注冊界面了,上面也有貼出在用戶登錄界面通過link調轉到注冊界面的代碼,下面就直接說注冊界面的功能點:
效果圖:
注冊界面的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很簡單了,還是基礎控件的使用,當然UI上面的實現方式很多,初學時根據自己的需要和熟悉程度選擇就好……
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。