1. 程式人生 > >Android入門案例(一)——簡單登入

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;
        }
    }

 一個簡單的小案例就完成嘍,願各位也能順利成功!

後續的學習將不斷跟進博文!