下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】android安卓按住button连续增加
相关知识:Timer延迟时间,间隔时间,重复执行参考/xuling/archive/2011/06/06/2073864.htmlpublic
class
te
{
static
int
i=1;
public
static
void
main(String[]
args)
{
Timer
timer=
new
Timer();
timer.schedule(new
MyTask(),1000,1000);
}
static
class
MyTask
extends
TimerTask{
public
void
run()
{
System.out.println("________________"+(i++)+"______________");
}
}
}实现了按住界面上的button后,TextView每隔一秒连续增加。抬起后,停止。package
com.myapp.androidtest2;
import
java.util.Timer;
import
java.util.TimerTask;
import
android.app.Activity;
import
android.os.Bundle;
import
android.os.Handler;
import
android.os.Message;
import
android.util.Log;
import
android.view.MotionEvent;
import
android.view.View;
import
android.view.View.OnClickListener;
import
android.view.View.OnTouchListener;
import
android.widget.Button;
import
android.widget.TextView;
public
class
MainActivity
extends
Activity
{
private
Button
mButton;
static
TextView
mTextView;
static
int
i
=
1;
Timer
timer
;
/**
Called
when
the
activity
is
first
created.
*/
public
void
onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//
如果是字switch
就设置OnTouchLisenner
ButtonListener
b
=
new
ButtonListener();
mButton
=
(Button)
findViewById(R.id.button);
mButton.setOnClickListener(b);
mButton.setOnTouchListener(b);
mTextView
=
(TextView)
findViewById(R.id.textview);
}
static
class
MyTask
extends
TimerTask
{
public
void
run()
{
Message
message
=
new
Message();
message.what
=
1;
mHandler.sendMessage(message);
}
}
private
static
Handler
mHandler
=
new
Handler()
{
//
接收到消息后处理
public
void
handleMessage(Message
msg)
{
switch
(msg.what)
{
case
1:
mTextView.setText(""
+
(i++));
System.out.println("i="+i);
break;
}
super.handleMessage(msg);
}
};
class
ButtonListener
implements
OnClickListener,
OnTouchListener
{
public
void
onClick(View
v)
{
if
(v.getId()
==
R.id.button)
{
i=i+3;
mTextView.setText(""
+
i);
System.out.println("i="+i);
System.out.println(
"cansal
button
>
click");
}
}
//
你需要复写onTouch事件,需要开启一个线程
sleep
1秒
执行加一操作,更新数据需要放到ui线程里面。
//
停止的时候
可以直接跳出线程break
public
boolean
onTouch(View
v,
MotionEvent
event)
{
switch
(event.getAction())
{
case
MotionEvent.ACTION_DOWN:
//只要当down返回true时候,系统将不把本次事件记录为点击事件,也就不会触发onClick或者onLongClick事件了
timer
=
new
Timer(true);
timer.schedule(new
MyTask(),
1000,
1000);
System.out.println("开始循环");
break;
case
MotionEvent.ACTION_UP:
System.out.println("++++++key_UP");
timer.cancel();
timer.purge();
timer
=null;
System.out.println("结束循环");
break;
case
MotionEvent.ACTION_CANCEL:
System.out.println("++++++key_CANCEL");
timer.cancel();
timer.purge();
timer
=null;
System.out.println("结束循环");
break;
}
return
true;
//返回false表示该aciton未被touch消耗
//返回true表示该aciton被touch消耗,其他的人都收不到该aciton
}
}
}参考文章:/xzf158/archive/2009/09/04/1560042.html/blog/1958905/html/201409/12/64378.html/Linux/2011-10/45976.htm这里注意的一点,话费了一下午的时间才明白过来的问题:class
ButtonListener
implements
OnClickListener,
OnTouchListener
{这句代码,一定要同时继承两个监听者,返回return设为flase后就可以实现click和touch同时共存。错误一:分别设置两个继承类监听click和touchclass
ButtonListener1
implements
OnClickListenerclass
ButtonListener2
implements
OnTouchListene会出现touch抬起时调用onclick方法,多运行了onclick中的内容。08-24
06:47:47.949:
I/System.out(4710):
i=10
08-24
06:47:48.311:
I/System.out(4710):
i=11
08-24
06:47:48.642:
I/System.out(4710):
i=12
08-24
06:47:48.838:
I/System.out(4710):
++++++key_UP
08-24
06:47:48.838:
I/System.out(4710):
timer
取消了
08-24
06:47:48.859:
I/System.out(4710):
cansal
button
>
click错误二:返回值为trueTimer
timer;
public
boolean
onTouch(View
v,
MotionEvent
event)
{
switch
(event.getAction())
{
case
MotionEvent.ACTION_DOWN:
timer
=
new
Timer(true);
System.out.println("++++++key_down");
timer.schedule(new
MyTask(),
1000,
300);
break;
case
MotionEvent.ACTION_UP:
System.out.println("++++++key_UP");
timer.cancel();
timer.purge();
timer
=null;
break;
case
MotionEvent.ACTION_CANCEL:
System.out.println("++++++key_CANCEL");
timer.cancel();
timer.purge();
timer
=null;
break;
}
return
true;
}当touch和click同时都有的时候,系统优先touch接收到action动作,返回值为true表明告诉系统:此次动作我消耗了,不要继续给其他人了。返回值设为false时,touch处理完后,click才会接收到该次action。这样使得touch和click可以同时共存。关于Button的onTouch,onClick,onLongClick事件发生先后顺序和关联:网络博文明确说明Button的onTouch,onClick,onLongClick事件发生先后顺序和关联:
一,onTouch返回false
首先是onTouch事件的down事件发生,此时,如果长按,触发onLongClick事件;
然后是onTouch事件的up事件发生,up完毕,最后触发onClick事件。
二,onTouch返回true
首先是onTouch事件的down事件发生,然后是onTouch事件的up事件发生;期间不触发onClick和onLongClick事件
三,onTouch:down返回true,up返回false:结果同二。
机制分析:
onTouch事件中:down事件返回值标记此次事件是否为点击事件(返回false,是点击事件;返回true,不记为点击事件),而up事件标记此次事件结束时间,也就是判断是否为长按。
只要当down返回true时候,系统将不把本次事件记录为点击事件,也就不会触发onClick或者onLongClick事件了。因此尽管当up的时候返回false,系统也不会继续触发onClick事件了。
四,onTouch:down返回false,up返回true:
首先是onTouch事件的down事件发生,此时:
长按,触发onLongClick事件,然后是on
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- XX年医院工作计划范文
- 年秋青龙中心小学校德育工作计划小鱼BLOG
- 度应急救援预案演练计划
- 采购内勤下半年工作计划
- “学校新学期工作计划范文”学校工作计划范文
- 自媒体运营计划书
- 《语法复习名词》课件
- 信息技术教师个人专业发展计划
- 教学科研工作计划
- 《旧交规对比》课件
- 毛泽东思想和中国特色社会主义理论体系概论智慧树知到课后章节答案2023年下德州学院
- 个人房屋租赁缴纳税委托书范本
- 商业模式画布模板
- 新概念英语第一册课文全中文
- 医疗机构依法执业自查表
- 医院氧气泄漏的应急预案脚本
- 信用信息共享平台建设工作方案
- 老年抑郁量表(GDS)
- TCSAE 279-2022 汽车电动转向系统噪声台架性能要求及测试方法
- 1117 机电控制与可编程序控制器技术
- 如愿三声部合唱简谱
评论
0/150
提交评论