1. 程式人生 > >Android的監聽事件

Android的監聽事件

案例一

  1. 事件監聽(三種寫法)
    1.1 標籤上直接繫結監聽方法
    public void xxx(View view)
//第一種
 public void xxx(View view)

1.2 建立監聽器物件,元件再繫結監聽器物件
1.2.1 匿名內部類

1.2.2 使用匿名內部類並定義成全域性的屬性
第二種:
Button viewById = findViewById(R.Id.);
viewById.setOnClickListtener(new View.OnClickListtener());
public  void onClick(View view){
}
  1. 文字框(TextView)
    2.1 簡介
    TextView直接繼承View,作用就是在介面上顯示文字(類似於Swing中的JLabel),同時它還是EditText、Button兩個UI元件類的父類。
    另外Android關閉了它的文字編輯功能,如果想編輯內容,則可以使用EditText。
    2.2 TextView常用屬性
    2.2.1 text
    2.2.2 autoLink
    2.2.3 singleLine(已過時,現在應為:android:lines)
    2.2.4 lines
    2.2.5 minLines
    2.2.6 textColor
    2.2.7 textSize
    2.2.8 textStyle
    字型風格粗體、斜體
    2.2.9 backgroud
    設定背景,可以是顏色或圖片
    2.2.10 drawableXX
    設定文字的icon
    2.2.11 ellipsize 當文字長度超過textview寬度時的顯示方式
    android:ellipsize=“start” 省略號顯示在開頭 “…pedia”
    android:ellipsize=“end” 省略號顯示在結尾 “encyc…”
    android:ellipsize=“middle” 省略號顯示在中間 “en…dia”
    android:ellipsize=“marquee” 以橫向滾動方式顯示(另外還需要設定其它三個屬性,否則不滾動,即必須讓該控制元件獲得焦點)

案例二 常用編輯框
3. 編輯框(EditText)
3.1 簡介
EditText和TextView非常相似,它與TextView共用了絕大總分XML屬性和文法,
二者最大區別在於:EditText可以接受使用者輸入。
3.2 常用屬性
3.2.1 inputType
它是EditText元件最重要的屬性,它相當於HTML中標籤的type屬性,用於EditText指定輸入元件的型別。
常用取值有:number|numberPassword|date|phone
3.2.2 hint:提示字元資訊
計算器原圖:
在這裡插入圖片描述

//計算器的按鈕佈局xml
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:rowCount="6"
    android:columnCount="4"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <EditText
        android:id="@+id/et_main_text"
        android:layout_width="wrap_content"
        android:layout_gravity="fill_horizontal"
        android:layout_columnSpan="4"
        android:layout_height="wrap_content"
        android:hint="請輸入數字"
        android:onClick="rest"
        android:text=""
        />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="add"
        android:text="1"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="add"
        android:text="2"/>



    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="add"
        android:text="3"/>


    <Button
        android:id="@+id/bt_chu"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="add"
        android:text="/"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="add"
        android:text="4"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="add"
        android:text="5"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="add"
        android:text="6"/>
    <Button
        android:id="@+id/bt_chen"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="add"
        android:text="*"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="add"
        android:text="7"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="add"
        android:text="8"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="add"
        android:text="9"/>
    <Button
        android:id="@+id/bt_jian"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="add"
        android:text="-"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_gravity="fill_horizontal"
        android:layout_columnSpan="2"
        android:layout_height="wrap_content"
        android:onClick="add"
        android:text="0"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="add"
        android:text="."/>
    <Button
        android:id="@+id/bt_add"
        android:layout_width="wrap_content"
        android:layout_rowSpan="2"
        android:layout_gravity="fill_vertical"
        android:layout_height="wrap_content"
        android:onClick="add"
        android:text="+"/>
    <Button
        android:id="@+id/bt_sum"
        android:layout_width="wrap_content"
        android:layout_gravity="fill_horizontal"
        android:layout_columnSpan="3"
        android:layout_height="wrap_content"
        android:onClick="add"

        android:text="="/>
    <Space />
</GridLayout>
計算器實現程式碼
public void add(View view) {
        Button btn = (Button) view;獲得所有的按鈕
        TextView viewById = findViewById(R.id.et_main_text);//獲得輸入框
        CharSequence text = btn.getText();/獲得輸入框的值
        Toast.makeText(this, text, Toast.LENGTH_SHORT).show();//彈框
        if (!"=".equals(text)) {
            viewById.setText(viewById.getText() + "" + text);//把點選按鈕的值放到輸入框裡
        } else {
            String str = "";
            if ((viewById.getText()+"").contains("+")) {
                str = "+";
            }if ((viewById.getText()+"").contains("-")) {
                str = "-";
            }if ((viewById.getText()+"").contains("*")) {
                str = "*";
            }if ((viewById.getText()+"").contains("/")) {
                str = "/";
            }

            Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
            String text1 = viewById.getText() + "";
            String num1 = text1.substring(0, text1.indexOf(str));
            String num2 = text1.substring(text1.indexOf(str) + 1);
            viewById.setText(calcs(str, num1, num2) + "");
        }
    }

    private int calcs(String str, String num1, String num2) {
        Toast.makeText(this, "34455", Toast.LENGTH_SHORT).show();
        int sum=0;
        switch (str) {
            case "+":
                sum = Integer.parseInt(num1) + Integer.parseInt(num2);
                break;
            case "-":
                sum = Integer.parseInt(num1) - Integer.parseInt(num2);
                break;
            case "*":
                sum = Integer.parseInt(num1) * Integer.parseInt(num2);
                break;
            case "/":
                sum = Integer.parseInt(num1) / Integer.parseInt(num2);
                break;
        }
        return sum;
    }

案例三:橢圓形、背景漸變的文字框
4. Android資源
4.1 什麼是資源
指在res資料夾下的xml檔案,每一種型別的xml檔案都對應了一種資源。
例如:外形資源(shape)、尺寸資源(dimension)、顏色資源(color)等
4.2 尺寸資源和顏色資源放res/values目錄下
4.3 *.xml(文字框的外形資源)可放到drawable目錄下
4.4 設定漸變色與背景色只能取其一,後面會覆蓋前面的

案例四:根據獲得/失去焦點邊框變色編輯框
5. 選擇器
5.1 作用:根據控制元件狀態顯示不同樣式
5.2 Item: 指定不同狀態下控制元件顯示哪個樣式

核心點:
1、點選事件的新增
2、輸入框引入外形資源調節樣式