java鼠标长按事件_09 常见事件响应

常见的事件:

1、单击事件onClickListener:略

2、长按事件onLongClickListener

ThreeAndroidActivity.java:

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

Button button1 =(Button)findViewById(R.id.button1);

button1.setOnLongClickListener(new OnLongClickListener(){

public boolean onLongClick(View v) {

Log.i("myinfo", "button长按事件。。。");

return false;

}

});

}

运行结果:

70c0018c76a12709180664b690e1935b.png

验证true和false:

当返回值为true时:

public voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);

setContentView(R.layout.main);

Button button1=(Button)findViewById(R.id.button1);

button1.setOnLongClickListener(newOnLongClickListener(){public booleanonLongClick(View v) {

Log.i("myinfo", "button长按事件。。。");return true;

}

});

button1.setOnClickListener(newOnClickListener(){public voidonClick(View v) {

Log.i("myinfo", "button点击事件。。。");

}

});

}

运行结果:

963e977980054fd43cc5dedb5dc5fb93.png

当返回值为false时:

public voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);

setContentView(R.layout.main);

Button button1=(Button)findViewById(R.id.button1);

button1.setOnLongClickListener(newOnLongClickListener(){public booleanonLongClick(View v) {

Log.i("myinfo", "button长按事件。。。");return false;

}

});

button1.setOnClickListener(newOnClickListener(){public voidonClick(View v) {

Log.i("myinfo", "button点击事件。。。");

}

});

}

运行结果:

长按button->

ebcd8c6d5ead1ad2e3d3e62cbc279f48.png

点击长按的时候回触发点击事件

所以通过长按事件中的返回true可以控制长按事件的传播;

3、滑动事件onTouchListener

button1.setOnTouchListener(newOnTouchListener(){public booleanonTouch(View v, MotionEvent event) {//event对象记录了事件发生的现场情况

int actionType=event.getAction();if(actionType==MotionEvent.ACTION_DOWN){

Log.i("myinfo", "touch 按下。。。。");

}else if(actionType==MotionEvent.ACTION_MOVE){

Log.i("myinfo", "touch 移动。。。。");

}else if(actionType==MotionEvent.ACTION_UP){

Log.i("myinfo", "touch 松开。。。。");

}else{

}return true;

}

});

运行结果:

fdd9aecec50ce72d9d4f638e02294e13.png

小案例(用鼠标移动控制button的位置):

main.xml:

>

ThreeAndroidActivity.java:

public class ThreeAndroidActivity extendsActivity {

@Overridepublic voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);

setContentView(R.layout.main);final Button button1 =(Button)findViewById(R.id.button1);

ViewGroup viewGroup=(ViewGroup)findViewById(R.id.layout01);

viewGroup.setOnTouchListener(newOnTouchListener(){public booleanonTouch(View v, MotionEvent event) {int actionType=event.getAction();if(actionType==MotionEvent.ACTION_DOWN){

Log.i("myinfo", "touch 按下。。。。");

}else if(actionType==MotionEvent.ACTION_MOVE){

Log.i("myinfo", "touch 移动。。。。");

button1.setX(event.getX());

button1.setY(event.getY());

}else if(actionType==MotionEvent.ACTION_UP){

Log.i("myinfo", "touch 松开。。。。");

}else{

}return true;

}

});

}

}

运行结果:(鼠标点击到哪里,button按钮就到哪里)button随着鼠标的移动而移动。

8c9cf294fdbca9e9fcc60f935eef8983.png

4、键盘事件onKeyListener

ThreeAndroidActivity.java:

public class ThreeAndroidActivity extendsActivity {

@Overridepublic voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);

setContentView(R.layout.main);final Button button1 =(Button)findViewById(R.id.button1);

button1.setOnKeyListener(newOnKeyListener(){public boolean onKey(View v, intkeyCode, KeyEvent event) {

System.out.print(keyCode);return false;

}

});

}

}

运行结果:

9fceff0cfeed3edaa77bd79919fd2087.png

输出键盘中的按钮的ASCII码

小案例:通过awsd来控制button的位置:

ThreeAndroidActivity.java:

button1.setOnKeyListener(newOnKeyListener(){public boolean onKey(View v, intkeyCode, KeyEvent event) {//a:29; d:32; w:51; s:47;

if(29==keyCode){

button1.setX(button1.getX()-20);

}else if(32==keyCode){

button1.setX(button1.getX()+20);

}else if(51==keyCode){

button1.setY(button1.getY()-20);

}else if(47==keyCode){

button1.setY(button1.getY()+20);

}else{

}return false;

}

});

5、焦点事件setOnFocusChangeListener

button1.setOnFocusChangeListener(newOnFocusChangeListener(){public void onFocusChange(View v, booleanhasFocus) {

Log.i("myinfo", "button 焦点事件。。。。。。。。");

}

});

运行的时候,通过点击tab让button获取焦点事件;

bc1ed015642a90d33d8ddb7ad2112c4e.png

日志打印:

e815a4982641c9c8089b2fb4d4a0fb11.png

再创建一个button:

7749f5da846b66b781841b852d00292c.png

通过点击tab,可以使两个button间焦点的来回移动:

7969486356e10a9b4fbffeb5b0999df3.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值