事件处理

Posted Talvez

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了事件处理相关的知识,希望对你有一定的参考价值。


事件三要素:事件源 事件 事件监听器

1.单击事件:
but.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
  String str = et.getText().toString();
  tv.setText(str);
}
});

2 按钮选项改变事件
rg.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
   rb = (RadioButton) findViewById(checkedId);
   String txt = rb.getText().toString();
   tv.setText(txt);
}
});

3 下拉列表选项事件
sp.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapt, View view,int position, long id) {
   TextView tvv = (TextView) view;
   String str = tvv.getText().toString();
   tv.setText(str);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {

}
});

4 日期和时间事件
tp.setOnTimeChangedListener(new OnTimeChangedListener() {
@Override
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
   tv.setText(hourOfDay+":"+minute);
}
});

dp.init(2017,0, 25, new DatePicker.OnDateChangedListener(){
@Override
public void onDateChanged(DatePicker view, int year,
  int monthOfYear, int dayOfMonth) {
  tv.setText(""+year+monthOfYear+dayOfMonth);
}
});

5 焦点事件
et.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
  TextView tvv = (TextView)v;
//hasFocues:是否获得焦点
 if(hasFocus){
  tvv.setText("");
}else{
  tv.setText(tvv.getText().toString());
}
}
});

6 长按事件
//修改桌面背景需要配置权限
<uses-permission android:name="android.permission.SET_WALLPAPER" />
img.setOnLongClickListener(new OnLongClickListener() {
//两个事件:long--> click
// false --> 不去运行click
// true --> 去运行click
@Override
public boolean onLongClick(View v) {
try {
  Day07.this.clearWallpaper();
  Day07.this.setWallpaper(
  Day07.this.getResources().
  openRawResource(R.drawable.a));
  tv.setText("设置成功");
} catch (IOException e) {
  tv.setText("设置失败");
  e.printStackTrace();
}
return true;
}
});

7 键盘事件
et.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
  if(event.getAction()==KeyEvent.ACTION_UP){
  String str = et.getText().toString();
if(str.matches("\\w+[@]\\w+[.]\\w+")){
  iv.setImageResource(R.drawable.a);
}else{
  iv.setImageResource(R.drawable.icon);
}
}
return false;
}
});

8 触摸事件
iv.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
   tv.setText("("+event.getX()+","+event.getY()+")");
  return false;
}
});

以上是关于事件处理的主要内容,如果未能解决你的问题,请参考以下文章

Android事件处理机制

Android事件处理

浅谈JavaScript的事件(事件处理程序)

Java学习笔记7.2.1 事件处理 - Swing事件处理机制

Java学习笔记7.2.1 事件处理 - Swing事件处理机制

深入理解js Dom事件机制——添加事件处理程序