*为控件绑定监听器
*获取代表控件的对象
findViewById()
*定义一个类,实现监听器接口
可以是直接继承,也可以是定义一个内部类继承
*生成监听器对象
*为控件绑定监听器对象
setOnClickListener
<p>package com.thxy.activity;</p>import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity implements OnClickListener {
private TextView textView;
private Button button;
private int count = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.textView);
button = (Button) findViewById(R.id.button);
button.setOnClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onClick(View v) {
count++;
textView.setText(count+"");
}
}
*使用多选框的流程
*在XML文件当中使用<CheckBox/>标签
*设置id属性
*在代码当中使用CheckBox的对象表示
*使用findViewById()获取对象
*常用OnClickListener与OnCheckedChangeListener监听器
package com.thxy.checkbox;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
public class MainActivity extends Activity {
private CheckBox eatBox;
private CheckBox sleepBox;
private CheckBox dotaBox;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
eatBox = (CheckBox) findViewById(R.id.eatId);
sleepBox = (CheckBox) findViewById(R.id.sleepId);
dotaBox = (CheckBox) findViewById(R.id.dotaId);
CheckBoxListener listener = new CheckBoxListener();
eatBox.setOnCheckedChangeListener(listener);
sleepBox.setOnCheckedChangeListener(listener);
dotaBox.setOnCheckedChangeListener(listener);
/*
OnBoxClickListener listener = new OnBoxClickListener();
eatBox.setOnClickListener(listener);
sleepBox.setOnClickListener(listener);
dotaBox.setOnClickListener(listener);
*/
}
//OnCheckedChangeListener的使用方法
class CheckBoxListener implements OnCheckedChangeListener{
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (buttonView.getId() == R.id.eatId) {
System.out.println("eatBox");
}else if (buttonView.getId() == R.id.sleepId) {
System.out.println("sleepBox");
}else if (buttonView.getId() == R.id.dotaId) {
System.out.println("dotaBox");
}
if (isChecked) {
System.out.println("checked");
}else {
System.out.println("unChecked");
}
}
}
//OnClickListener的使用方法
/*
class OnBoxClickListener implements OnClickListener {
@Override
public void onClick(View v) {
CheckBox box = (CheckBox) v;
if (box.getId() == R.id.eatId) {
System.out.println("eat");
}else if(box.getId() == R.id.sleepId) {
System.out.println("sleep");
}else if (box.getId() == R.id.dotaId) {
System.out.println("dota");
}
if (box.isChecked()) {
System.out.println("checked");
} else {
System.out.println("unChecked");
}
}
}
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
*单选按钮Radio
*在XML文件中使用<RadioButton/> & <RadioGroup/>
*在代码中获取RadioButton & RadioGroup对象
*常用OnClickListener与OnCheckedChangeListener监听器
RadioGroupListener l = new RadioGroupListener();
radioGroup.setOnCheckedChangeListener(l);
class RadioGroupListener implements android.widget.RadioGroup.OnCheckedChangeListener{
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if (checkedId == femaleButton.getId()) {
System.out.println("男");
}else if (checkedId == maleButton.getId()) {
System.out.println("女");
}
}
}
*相对布局的相关属性
*使用layout_weight的要点
*子控件并没有占满父控件的所有空间
*layout_weight的值用于指定空闲空间的分配比例
RelativeLayout布局
android:layout_marginTop="25dip" //顶部距离
android:gravity="left" //空间布局位置
android:layout_marginLeft="15dip //距离左边距
// 相对于给定ID控件
android:layout_above 将该控件的底部置于给定ID的控件之上;
android:layout_below 将该控件的底部置于给定ID的控件之下;
android:layout_toLeftOf 将该控件的右边缘与给定ID的控件左边缘对齐;
android:layout_toRightOf 将该控件的左边缘与给定ID的控件右边缘对齐;
android:layout_alignBaseline 将该控件的baseline与给定ID的baseline对齐;
android:layout_alignTop 将该控件的顶部边缘与给定ID的顶部边缘对齐;
android:layout_alignBottom 将该控件的底部边缘与给定ID的底部边缘对齐;
android:layout_alignLeft 将该控件的左边缘与给定ID的左边缘对齐;
android:layout_alignRight 将该控件的右边缘与给定ID的右边缘对齐;
// 相对于父组件
android:layout_alignParentTop 如果为true,将该控件的顶部与其父控件的顶部对齐;
android:layout_alignParentBottom 如果为true,将该控件的底部与其父控件的底部对齐;
android:layout_alignParentLeft 如果为true,将该控件的左部与其父控件的左部对齐;
android:layout_alignParentRight 如果为true,将该控件的右部与其父控件的右部对齐;
// 居中
android:layout_centerHorizontal 如果为true,将该控件的置于水平居中;
android:layout_centerVertical 如果为true,将该控件的置于垂直居中;
android:layout_centerInParent 如果为true,将该控件的置于父控件的中央;
// 指定移动像素
//相对于父控件
android:layout_marginTop 上偏移的值;
android:layout_marginBottom 下偏移的值;
android:layout_marginLeft 左偏移的值;
android:layout_marginRight 右偏移的值;
*TimePicker时间控件
获取指定时间activity代码
package com.thxy.timepicker;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TimePicker;
import android.widget.TimePicker.OnTimeChangedListener;
public class MainActivity extends Activity {
private TimePicker firstTimePicker;
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
firstTimePicker = (TimePicker) findViewById(R.id.firstTimePicker);
button = (Button) findViewById(R.id.button);
//该函数用于设置是否使用24小时制显示时间
firstTimePicker.setIs24HourView(true);
TimeListener listener = new TimeListener();
firstTimePicker.setOnTimeChangedListener(listener);
ButtonListener l = new ButtonListener();
button.setOnClickListener(l);
}
class ButtonListener implements OnClickListener{
@Override
public void onClick(View v) {
int hour = firstTimePicker.getCurrentHour();
int minute = firstTimePicker.getCurrentMinute();
System.out.println("h:"+hour+".m:"+minute);
}
}
class TimeListener implements OnTimeChangedListener{
/*
* view:该对象代表着TimePicker
* hourOfDay:用户所选择的小时
* minute:用户所选择的分钟
*/
@Override
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
System.out.println("Hour:"+hourOfDay+",minute:"+minute);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
*DatePicker的用法
获取指定日期的activity代码
package com.thxy.datepicker;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
public class MainActivity extends Activity {
private DatePicker datePicker;
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
datePicker = (DatePicker) findViewById(R.id.firstDatePicker);
//设置DatePicker默认显示时间
datePicker.updateDate(2016, 2, 8);
button = (Button) findViewById(R.id.button);
ButtonListener listener = new ButtonListener();
button.setOnClickListener(listener);
}
class ButtonListener implements OnClickListener{
@Override
public void onClick(View v) {
int y = datePicker.getYear();
int m = datePicker.getMonth();
int d = datePicker.getDayOfMonth();
System.out.println("y:"+y+",m:"+m+",d:"+d);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}