1. 程式人生 > >android線性佈局的例項

android線性佈局的例項

先把框架弄好(開啟studio)

實現效果圖:(1)能輸入 (2)能做到基本判斷 (3)能夠響應滑鼠點選事件


(1)新建一個使用者登入的介面(將前臺展示出來)

(2)在MainActivity.java檔案新增業務邏輯(我們所要實現的功能)

(1)

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="請輸入使用者名稱:" />
        <!--
        輸入框控制元件:可以讓使用者輸入自己的內容
        android:text="admin":設定輸入框控制元件的預設值


        @:表示訪問R類
        +:新增
        id:R類中的靜態內部類
        editText_userName:R類中id靜態內部類的靜態常量,對應的值為:0x7f0c0050

        android:id="@+id/editText_userName":在R類中新增一個靜態內部類id(如果沒有的話)的靜態常量editText_userName
        相當於說:0x7f0c0050就代表當前EditText控制元件物件

        -->
        <EditText
            android:id="@+id/editText_userName"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="請輸入使用者名稱"
            android:text="admin" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"


            android:text="請輸入密    碼:" />

        <!--
        如何讓輸入框變成密碼框:
            A: android:password="true"
            B:android:inputType="textPassword":密碼可以是任意文字
              android:inputType="numberPassword":密碼只能是數字

        android:hint="請輸入密碼":當輸入框中內容為空時顯示的提示文字,
                      使用者一旦輸入字元則提示資訊自動消失,刪除最後一個顯示字元後提示資訊自動顯示
        -->
        <EditText
            android:id="@+id/editText_password"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="請輸入密碼"
            android:inputType="textPassword"
            android:text="123" />
    </LinearLayout>

    <!--
    android:gravity="center":指定當前控制元件中子元素的對齊方式
    -->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="horizontal">
        <!--
         Button:按鈕,可以響應使用者的操作,比如點選等

         android:onClick="login":指定當使用者點選當前按鈕時執行的函式名,
         函式的簽名格式為:
         public void 函式名(View view){},
         如:
         public void login(View view){}

         -->
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="login"
            android:text="登入" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="reset"
            android:text="重置" />
    </LinearLayout>
</LinearLayout>

(2)

package com.example.lenovo.linearlayout_demo;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    private EditText editText_userName;

    private EditText editText_password;


    /**
     * 用來做初始化工作,如:查詢控制元件
     * @param savedInstanceState
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.activity_linelayout_01);
        setContentView(R.layout.linearlayout_login);
        this.initView();
    }

    /**
     * 查詢控制元件
     */
    private void initView() {
        //根據控制元件的id查詢控制元件物件
        editText_userName = (EditText) this.findViewById(R.id.editText_userName);
        editText_password= (EditText) this.findViewById(R.id.editText_password);
    }


    /**
     * 當用戶點選登入按鈕時執行的函式
     * @param view 事件源(使用者點選誰執行了當前函式,誰就是事件源)
     */
    public void login(View view){
        //Toast.makeText(this,"view="+view,Toast.LENGTH_LONG).show();

        //得到使用者名稱控制元件中輸入的文字的內容
        String userName=editText_userName.getText().toString().trim();
        String password=editText_password.getText().toString().trim();

        //如果userName為null或者""則TextUtils.isEmpty(userName)返回True,說明使用者沒有輸入內容
        if(TextUtils.isEmpty(userName)){
            this.editText_userName.setError("使用者名稱必須輸入!");
            this.editText_userName.requestFocus();
            return;

        }




        /*
        if("admin".equals(userName)  && "123".equals(password)){
            Toast.makeText(this,//上下文物件,當前Activity 是上下文物件的子類,因此可以直接使用當前物件this
                    userName+"登入成功!",//顯示的提示資訊
                    Toast.LENGTH_LONG //顯示的時長
            ).show();//讓土司顯示
        }else{
            Toast.makeText(this,"使用者名稱或者密碼錯誤",Toast.LENGTH_SHORT).show();
        }*/

        if("admin".equals(userName)){
            this.editText_password.requestFocus();

            if(TextUtils.isEmpty(password)){
                this.editText_password.setError("密碼必須輸入!");
                this.editText_password.requestFocus();
                return;
            }

            if("123".equals(password)){
                Toast.makeText(this,userName+"登入成功!",Toast.LENGTH_LONG).show();
            }else{
                Toast.makeText(this,"密碼錯誤",Toast.LENGTH_SHORT).show();
                this.editText_password.setText("");
                this.editText_password.requestFocus();
            }
        }else{
            Toast.makeText(this,"使用者名稱錯誤",Toast.LENGTH_SHORT).show();
            this.editText_userName.setText("");
            this.editText_userName.requestFocus();
        }

    }


    /**
     * 當用戶點選重置按鈕時執行的函式
     * @param view
     */
    public void reset(View view){
        //將控制元件的文字內容設定為空
        this.editText_userName.setText(null);
        this.editText_password.setText(null);

        //讓使用者名稱控制元件獲得焦點
        this.editText_userName.requestFocus();
    }
}