一、单击事件onclick
1、动态设置
Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "click button", Toast.LENGTH_SHORT).show();
}
});
2、配置方式,仅限于onclick
在配置文件中先声明一个回调函数。
xml中
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:οnclick="test"
/>
MainActivity
public void test(View view)
{
view.setX(view.getX()+10);
}
二、长按事件
button.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, "long click", Toast.LENGTH_SHORT).show();
return false;
}
});
如果返回false,将会继续触发事件,如点击事件。如何返回True,这不会再触发其他事件。
三、触发事件
button.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int actionType = event.getAction();
if(actionType == MotionEvent.ACTION_DOWN)
{
System.out.println("tonch 按下...");
}
else if(actionType == MotionEvent.ACTION_MOVE)
{
System.out.println("tonch 移动...");
}
else if(actionType == MotionEvent.ACTION_UP)
{
System.out.println("touch 松开...");
}
else {
}
return false;
}
});
event 对象记录了 事件发生的现场对象
四、拖拽的小实习
final Button button = (Button) findViewById(R.id.button1);
ViewGroup viewGroup = (ViewGroup) findViewById(R.id.layout_01);
viewGroup.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
int actionType = event.getAction();
if(actionType == MotionEvent.ACTION_DOWN)
{
System.out.println("tonch 按下...");
}
else if(actionType == MotionEvent.ACTION_MOVE)
{
float f = event.getX();
float f1 = event.getY();
button.setX(f);
button.setY(f1);
System.out.println("tonch 移动...");
}
else if(actionType == MotionEvent.ACTION_UP)
{
System.out.println("touch 松开...");
}
else {
}
return true;
}
});
viewGroup:获取整个布局里的控件view
return ture:说明你还没消费onTouch事件,在执行完你onTouch里面的代码之后,onTouch事件并没有结束。就是会自动地执行Gallery这个view里onTouch代码
return false:说明你已经消费完了onTouch事件,在执行完你的onTouch里面的代码之后,这个onTouch事件就结束了。
五:焦点事件
button.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
Toast.makeText(MainActivity.this, "焦点事件...", Toast.LENGTH_SHORT).show();
}
});
六、键盘事件
button.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
String keyString = ""+keyCode;
Toast.makeText(MainActivity.this, keyString, Toast.LENGTH_SHORT).show();
return false;
}
});
要先获得焦点。