Android的監聽事件
阿新 • • 發佈:2018-11-28
案例一
- 事件監聽(三種寫法)
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){ }
- 文字框(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、輸入框引入外形資源調節樣式