Android入門案例(一)——簡單登入
前言
實習期間,閒來無事,和師傅學學Android入門一下
Android的環境搭建和配置就不多說了,直接上乾貨
一、效果
先看下本案例想要實現的效果,由於是第一個小案例,所以並沒有連線資料庫,後面的部落格應會有涉及
二、步驟
1.新建工程
2.User.java
public class User implements Serializable { private String username; private String password; private String sex; public User() { } public User(String username, String password, String sex) { this.username = username; this.password = password; this.sex = sex; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } }
3.activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.guao_john.myapplication.MainActivity"> <LinearLayout android:layout_marginTop="20dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:id="@+id/tv_username" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="使用者名稱:" android:textSize="30sp" /> <EditText android:id="@+id/et_username" android:layout_width="168dp" android:layout_height="wrap_content" android:hint="請輸入使用者名稱" android:textSize="20sp" /> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:id="@+id/tv_password" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="密 碼:" android:textSize="30sp" /> <EditText android:id="@+id/et_password" android:layout_width="173dp" android:layout_height="wrap_content" android:hint="請輸入密碼" android:textSize="20sp" /> </LinearLayout> <LinearLayout android:layout_marginTop="20dp" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="性 別:" android:textSize="30sp" android:id="@+id/textView2" android:layout_weight="1" /> <RadioButton android:layout_marginLeft="10dp" android:id="@+id/rb_man" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="男" android:textSize="26sp" android:layout_weight="1" /> <RadioButton android:id="@+id/rb_woman" android:layout_marginLeft="20dp" android:layout_gravity="center_vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="女" android:textSize="26sp" android:layout_weight="1" /> <RadioGroup android:layout_marginLeft="20dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> </RadioGroup> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="50dp" android:layout_marginTop="30dp" > </LinearLayout> <Button android:id="@+id/btn_login" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="登入" android:textSize="20sp" android:layout_weight="1" /> <Button android:id="@+id/btn_cancel" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="取消" android:textSize="20sp"/> </LinearLayout> </RelativeLayout>
4.MainActivity.java
public class MainActivity extends AppCompatActivity implements View.OnClickListener { Button login,cancle; EditText user,pwd; RadioButton man,woman; String username,password,sex; User u; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); login=(Button)findViewById(R.id.btn_login); cancle=(Button)findViewById(R.id.btn_cancel); user=(EditText)findViewById(R.id.et_username); pwd=(EditText)findViewById(R.id.et_password); man=(RadioButton)findViewById(R.id.rb_man); woman=(RadioButton)findViewById(R.id.rb_woman); login.setOnClickListener(this); cancle.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_login: username = user.getText().toString().trim(); password = pwd.getText().toString().trim(); if(man.isClickable()) { sex = "男"; } else if(woman.isClickable()) { sex = "女"; u = new User(username,password,sex); } u = new User(username,password,sex); checkLogin(u); break; case R.id.btn_cancel: break; } } private void checkLogin(User u) { if(u.getUsername().equals("WZJ") && u.getPassword().equals("wzj") && u.getSex().equals("男")) { Intent intent=new Intent(this,infoActivity.class); intent.putExtra("user",u); startActivity(intent); } } }
5.activity_info.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_info"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.guao_john.myapplication.infoActivity">
<TextView
android:id="@+id/info_username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text Test:"
android:textSize="30sp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<TextView
android:id="@+id/info_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text Test:"
android:textSize="30sp"
android:layout_marginTop="36dp"
android:layout_below="@+id/info_username"
android:layout_alignLeft="@+id/info_username"
android:layout_alignStart="@+id/info_username" />
<TextView
android:id="@+id/info_sex"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text Test:"
android:textSize="30sp"
android:layout_marginTop="36dp"
android:layout_below="@+id/info_password"
android:layout_alignLeft="@+id/info_password"
android:layout_alignStart="@+id/info_password" />
</RelativeLayout>
6.infoActivity.java
public class infoActivity extends AppCompatActivity {
Button button;
TextView tv1,tv2,tv3;
String sex,username,password;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_info);
tv1=(TextView)findViewById(R.id.info_username);
tv2=(TextView)findViewById(R.id.info_password);
tv3=(TextView)findViewById(R.id.info_sex);
Intent getData=getIntent();
User user = (User)getData.getSerializableExtra("user");
tv1.setText("Your username is " +user.getUsername());
tv2.setText("Your sex is "+user.getSex());
tv3.setText("Your password is "+user.getPassword());
}
}
三、註解
1、Intent的概念:
- Android中提供了Intent機制來協助應用間的互動與通訊,或者採用更準確的說法是,Intent不僅可用於應用程式之間,也可用於應用程式內部的activity, service和broadcast receiver之間的互動。Intent這個英語單詞的本意是“目的、意向、意圖”。
- Intent是一種執行時繫結(runtime binding)機制,它能在程式執行的過程中連線兩個不同的元件。通過Intent,你的程式可以向Android表達某種請求或者意願,Android會根據意願的內容選擇適當的元件來響應。
2.TextView就是文字檢視,只是用來顯示文字的。
標籤<TextView/>代表著我們要在Activity中新增一個個TextView, 標籤中可以設定一些屬性。
(1).android:id屬性代表著TextView的Id,也就是TextView的唯一標示,在java程式碼中我們可以通過findViewById()方法來通過Id獲取控制元件。上述控制元件的唯一id為name_text_view。
(2).android:layout_width屬性代表著控制元件的寬度,該屬性的值是match_parent, 表示該控制元件的寬度與父檢視的寬度相同。
(3).android:layout_height屬性代表著控制元件的高度,該屬性的值是wrap_content,表示控制元件的高度根據內容的高度進行改變。
(4).android:gravity屬性代表著TextView中文字對齊方式,有多種方式,我們在此選的是center,居中顯示。
(5).android:textSize屬性代表著TextView中文字的型號,也就是文字的大小。
(6).android:textColor屬性設定的是TextView中文字的顏色,屬性值是16進位制的色值。
(7).android:text屬性就是用來設定TextView顯示的值的。
3.EditText 接收使用者輸入的資料
(1).android:hint屬性後邊是一個字串,其實就是用來佔位用的字串,功能是提示使用者該輸入框是幹嘛的,在iOS開發中叫做Placeholder。
(2).android:macLines 用來設定輸入框的最大行數。
在Activity中獲取EditText物件,也是通過Id方式,通過id例項化EditText物件,並獲取其中的文本
4.Button 在Activity的類中也是使用findViewById來通過Id獲取該按鈕,獲取按鈕後我們需要給按鈕繫結點選事件。也就是點選按鈕要做的事情,下方給出了兩中方式,一種是塊的形式,一種是委託代理的形式。
(1).介面回撥的形式繫結點選事件 Button button = (Button) findViewById(R.id.click_button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //點選按鈕要做的事情 } });
(2)委託代理 button.setOnClickListener(this); //重寫委託回撥的方法 /** * Called when a view has been clicked. * * @param v The view that was clicked. */ @Override public void onClick(View v) { switch (v.getId()){ case R.id.click_button: //點選按鈕後要做的事情 break; default: break; } }
一個簡單的小案例就完成嘍,願各位也能順利成功!
後續的學習將不斷跟進博文!