Week02? ? 2016/09/22上午1-4節(jié)
一、復(fù)習(xí):新建一個(gè)空的AS項(xiàng)目Chap2AsProj
MainActivity.java(在目錄Chap2AsProj\app\src\main\java\com\kamin\dr\chap2asproj)
activity_main.xml(在目錄Chap2AsProj\app\src\main\res\layout)
strings.xml(在目錄Chap2AsProj\app\src\main\res\values)
R.java(Chap2AsProj\app\build\generated\source\r\debug\com\kamin\dr\chap2asproj中)
AndroidManifest.xml(在目錄Chap2AsProj\app\src\main)
二、Hello World棠赛!使用String.xml表示
三、activity_main.xml增加一個(gè)Button
String.xml設(shè)置btnText
了解activity_main.xml<Button>元素的屬性layout_width膛腐,layout_height
代碼提示快捷鍵:Ctrl+Alt+Space(空格鍵)
四睛约、Button的使用
API參考鏈接Package Index - Android SDK
Android學(xué)習(xí)優(yōu)秀網(wǎng)站 - 簡(jiǎn)書(shū)
1,findViewById
2哲身,setOnClickListener
Ctr+I快捷鍵可以添加接口中未實(shí)現(xiàn)的方法
Android控件系列之Button以及Android監(jiān)聽(tīng)器 - 王燾 - 博客園
Android成長(zhǎng)之路-實(shí)現(xiàn)監(jiān)聽(tīng)器的三種方法 - 博客頻道 - CSDN.NET
android開(kāi)發(fā)中監(jiān)聽(tīng)器的三種實(shí)現(xiàn)方法(OnClickListener)
第18章痰腮、基于監(jiān)聽(tīng)器的事件處理(從零開(kāi)始學(xué)Android)
android三種方法實(shí)現(xiàn)監(jiān)聽(tīng)事件
android studio for android learning (十八) android事件監(jiān)聽(tīng)器綁定的方法詳解
五、Toast使用
1律罢,Toast作用:提示信息膀值,一段時(shí)間會(huì)消失
2棍丐,makeText()方法,show()方法
六沧踏、綜合以上知識(shí)點(diǎn)的代碼及效果截圖
1歌逢,項(xiàng)目結(jié)構(gòu)圖
2,AndroidManifest.xml代碼(默認(rèn)產(chǎn)生的翘狱,沒(méi)有修改)
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.kamin.chap2asproj">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
3秘案,string.xml代碼:字符串常量盡量寫(xiě)在此文件中,易于修改和維護(hù)
<resources>
<string name="app_name">Chap2AsProj</string>
<string name="hello">上午好!</string>
<string name="txBtnFirst">內(nèi)部接口類監(jiān)聽(tīng)器</string>
<string name="txBtnSecond">匿名內(nèi)部監(jiān)聽(tīng)器</string>
<string name="txBtnThird">類上實(shí)現(xiàn)監(jiān)聽(tīng)器</string>
<string name="hint1">my First button is Clicked!</string>
<string name="hint2">my Second button is Clicked!</string>
<string name="hint3">my Third button is Clicked!</string>
</resources>
4潦匈,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: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.kamin.chap2asproj.MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello"
android:id="@+id/tvHello" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/txBtnFirst"
android:id="@+id/btnFirst"
android:layout_below="@+id/tvHello"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="61dp" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/txBtnSecond"
android:id="@+id/btnSecond"
android:layout_below="@+id/btnFirst"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="32dp" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/txBtnThird"
android:id="@+id/btnThird"
android:layout_below="@+id/btnSecond"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="44dp" />
</RelativeLayout>
5阱高,MainActivity.java代碼:分3種方式完成了監(jiān)聽(tīng)器,以后寫(xiě)代碼可以選擇任何1種茬缩,建議使用第2中匿名監(jiān)聽(tīng)器赤惊。不管哪種監(jiān)聽(tīng)器都必須實(shí)現(xiàn)(1)注冊(cè)(綁定)監(jiān)聽(tīng)器(2)實(shí)現(xiàn)OnClick方法
第1種監(jiān)聽(tīng)器:
//在onCreate方法內(nèi)注冊(cè)監(jiān)聽(tīng)器
//setOnClickListener的參數(shù)為自定義監(jiān)聽(tīng)器類MyOnClickListener的對(duì)象
btnFirst.setOnClickListener(new MyOnClickListener());//監(jiān)聽(tīng)器1綁定監(jiān)聽(tīng)器,可以理解成:把門鈴裝在你家大門上
//在類MainActivity內(nèi)定義內(nèi)部類MyOnClickListener 作為監(jiān)聽(tīng)器
/*自定義的監(jiān)視器凰锡,可以理解成你的門鈴*/
class MyOnClickListener implements View.OnClickListener{
@Override
public void onClick(View view) {
System.out.println("按鈕被單擊未舟!*****");
Toast.makeText(MainActivity.this,R.string.hint1,Toast.LENGTH_LONG).show();
}
}
第2種監(jiān)聽(tīng)器:(推薦使用)
//在onCreate方法內(nèi)注冊(cè)監(jiān)聽(tīng)器
//setOnClickListener的參數(shù)為匿名監(jiān)聽(tīng)器,注冊(cè)監(jiān)聽(tīng)器和監(jiān)聽(tīng)器的實(shí)現(xiàn)用一條語(yǔ)句完成
btnSecond.setOnClickListener(new View.OnClickListener(){//監(jiān)聽(tīng)器2匿名監(jiān)聽(tīng)器
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this,R.string.hint2,Toast.LENGTH_SHORT).show();
}
});
第3種監(jiān)聽(tīng)器:
//本類必須實(shí)現(xiàn)接口View.OnClickListener掂为,本類就是一個(gè)監(jiān)聽(tīng)器
public class MainActivity extends AppCompatActivity implements View.OnClickListener
//在onCreate方法內(nèi)注冊(cè)監(jiān)聽(tīng)器
//setOnClickListener的參數(shù)是this,由于本類就是監(jiān)聽(tīng)器
btnThird.setOnClickListener(this);//監(jiān)聽(tīng)器3本類就是一個(gè)監(jiān)聽(tīng)器
//由于本類MainActivity實(shí)現(xiàn)了接口View.OnClickListener裕膀,
//所以必須在MainActivity類中實(shí)現(xiàn)接口OnClickListener的抽象方法public void onClick(View view)
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this,R.string.hint3,Toast.LENGTH_LONG).show();
}
含3種監(jiān)聽(tīng)器的全部代碼如下:
package com.kamin.chap2asproj;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
Button btnFirst,btnSecond,btnThird;//定義Button
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnFirst=(Button)findViewById(R.id.btnFirst);//界面上的button
btnFirst.setOnClickListener(new MyOnClickListener());//監(jiān)聽(tīng)器1綁定監(jiān)聽(tīng)器,可以理解成:把門鈴裝在你家大門上
btnSecond=(Button)findViewById(R.id.btnSecond);
btnSecond.setOnClickListener(new View.OnClickListener(){//監(jiān)聽(tīng)器2匿名監(jiān)聽(tīng)器
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this,R.string.hint2,Toast.LENGTH_SHORT).show();
}
});
btnThird=(Button)findViewById(R.id.btnThird);
btnThird.setOnClickListener(this);//監(jiān)聽(tīng)器3本類就是一個(gè)監(jiān)聽(tīng)器
}
/*自定義的監(jiān)視器勇哗,可以理解成你的門鈴*/
class MyOnClickListener implements View.OnClickListener{
@Override
public void onClick(View view) {
System.out.println("按鈕被單擊昼扛!*****");
Toast.makeText(MainActivity.this,R.string.hint1,Toast.LENGTH_LONG).show();
}
}
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this,R.string.hint3,Toast.LENGTH_LONG).show();
}
}
6,運(yùn)行效果圖