Week02 2016/09/22上午1-4节
一、复习:新建一个空的AS项目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增加一个Button
String.xml设置btnText
了解activity_main.xml<Button>元素的属性layout_width,layout_height
代码提示快捷键:Ctrl+Alt+Space(空格键)
四、Button的使用
API参考链接Package Index - Android SDK
1,findViewById
2,setOnClickListener
Ctr+I快捷键可以添加接口中未实现的方法
Android控件系列之Button以及Android监听器 - 王焘 - 博客园
Android成长之路-实现监听器的三种方法 - 博客频道 - CSDN.NET
Android笔记Android基于事件监听器处理机制 - Android移动开发技术文章_手机开发 - 红黑联盟
android开发中监听器的三种实现方法(OnClickListener)
android studio for android learning (十八) android事件监听器绑定的方法详解
五、Toast使用
1,Toast作用:提示信息,一段时间会消失
2,makeText()方法,show()方法
六、综合以上知识点的代码及效果截图
1,项目结构图
项目结构图2,AndroidManifest.xml代码(默认产生的,没有修改)
<?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代码:字符串常量尽量写在此文件中,易于修改和维护
<resources>
<string name="app_name">Chap2AsProj</string>
<string name="hello">上午好!</string>
<string name="txBtnFirst">内部接口类监听器</string>
<string name="txBtnSecond">匿名内部监听器</string>
<string name="txBtnThird">类上实现监听器</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种方式完成了监听器,以后写代码可以选择任何1种,建议使用第2中匿名监听器。不管哪种监听器都必须实现(1)注册(绑定)监听器(2)实现OnClick方法
第1种监听器:
//在onCreate方法内注册监听器
//setOnClickListener的参数为自定义监听器类MyOnClickListener的对象
btnFirst.setOnClickListener(new MyOnClickListener());//监听器1绑定监听器,可以理解成:把门铃装在你家大门上
//在类MainActivity内定义内部类MyOnClickListener 作为监听器
/*自定义的监视器,可以理解成你的门铃*/
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种监听器:(推荐使用)
//在onCreate方法内注册监听器
//setOnClickListener的参数为匿名监听器,注册监听器和监听器的实现用一条语句完成
btnSecond.setOnClickListener(new View.OnClickListener(){//监听器2匿名监听器
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this,R.string.hint2,Toast.LENGTH_SHORT).show();
}
});
第3种监听器:
//本类必须实现接口View.OnClickListener,本类就是一个监听器
public class MainActivity extends AppCompatActivity implements View.OnClickListener
//在onCreate方法内注册监听器
//setOnClickListener的参数是this,由于本类就是监听器
btnThird.setOnClickListener(this);//监听器3本类就是一个监听器
//由于本类MainActivity实现了接口View.OnClickListener,
//所以必须在MainActivity类中实现接口OnClickListener的抽象方法public void onClick(View view)
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this,R.string.hint3,Toast.LENGTH_LONG).show();
}
含3种监听器的全部代码如下:
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());//监听器1绑定监听器,可以理解成:把门铃装在你家大门上
btnSecond=(Button)findViewById(R.id.btnSecond);
btnSecond.setOnClickListener(new View.OnClickListener(){//监听器2匿名监听器
@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);//监听器3本类就是一个监听器
}
/*自定义的监视器,可以理解成你的门铃*/
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,运行效果图
运行效果图
网友评论