Android按钮持续按下执行,Android 按钮长按下去重复执行某个动作,放开后停止执行动作...
Android開發(fā)中,常遇到一種需求,即按鈕長按下去重復(fù)執(zhí)行某個動作,放開后停止執(zhí)行動作。網(wǎng)上找了許多代碼,都沒有適合的,于是自己動手寫了一個。
基本思路是:首先設(shè)置一個標(biāo)識變量,用于標(biāo)識是否處于按下的狀態(tài)。當(dāng)按鈕按下的時候,將標(biāo)識變量設(shè)置為true,啟動一個線程用于重復(fù)執(zhí)行某個動作(當(dāng)標(biāo)識變量為true時,循環(huán)執(zhí)行動作,當(dāng)為false跳出循環(huán),結(jié)束動作);當(dāng)按鈕彈起來的時候,將標(biāo)識變量設(shè)置為false。
1、首先,設(shè)置標(biāo)識變量
private boolean booleanConnect = false;
private Button rightSend;
2、然后,初始化變量
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
rightSend = (Button)findViewById(R.id.BtnRight);
longPress = false;
rightSend.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
String str = "OND\n";
String strSendData = new String(str);
LongTouchSendCmd(MainActivity.this, strSendData, event);
return true;
}
}
);
}
2、接著,實現(xiàn)按鈕按下的重復(fù)執(zhí)行動作
private void LongTouchSendCmd(final Activity activity, final String cmd, MotionEvent event){
if (booleanConnect == false) {
Toast.makeText(activity, "請先連接設(shè)備", Toast.LENGTH_SHORT).show();
return;
}
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: {
longPress = true;
Toast.makeText(activity, "開始發(fā)送", Toast.LENGTH_SHORT).show();
longPressSendCmdThread = new Thread() {
public void run() {
super.run();
while (true) {
if (longPress == true)//長按連續(xù)發(fā)送命令
{
try {
//todo some action 在這里添加代碼,執(zhí)行某個動作
//String strSendData = cmd;
//connectedThread.write(strSendData.getBytes());//接收數(shù)據(jù)
Thread.sleep(1000);//1秒發(fā)送一次
} catch (InterruptedException e) {
e.printStackTrace();
}
}else
{
break;//沒有按下,退出循環(huán)
}
}
}
};
longPressSendCmdThread.start();
break;
}
case MotionEvent.ACTION_UP:{
longPress = false;
Toast.makeText(activity, "結(jié)束發(fā)送", Toast.LENGTH_SHORT).show();
}
}
}
執(zhí)行的結(jié)果:
使用定時器實現(xiàn)JavaScript的延期執(zhí)行或重復(fù)執(zhí)行
使用定時器實現(xiàn)JavaScript的延期執(zhí)行或重復(fù)執(zhí)行 window 對象提供了兩個方法來實現(xiàn)定時器的效果,分別是window.setTimeout()和 window.setInterval.其中前 ...
【Android 應(yīng)用開發(fā)】Android - 按鈕組件詳解
總結(jié)了Android中常用的按鈕用法 示例源碼下載地址?: -- CSDN : ?http://download.csdn.net/detail/han1202012/6852091 -- GitHu ...
Android - 按鈕組件詳解
總結(jié)了Android中常用的按鈕用法 示例源碼下載地址?: -- CSDN : ?http://download.csdn.net/detail/han1202012/6852091 -- GitHu ...
JQuery腳本-通過禁用按鈕防止表單重復(fù)提交
Celery異步任務(wù)重復(fù)執(zhí)行(Redis as broker)
之前講到利用celery異步處理一些耗時或者耗資源的任務(wù),但是近來分析數(shù)據(jù)的時候發(fā)現(xiàn)一個奇怪的現(xiàn)象,即是某些數(shù)據(jù)重復(fù)了,自然想到是異步任務(wù)重復(fù)執(zhí)行了. 查閱之后發(fā)現(xiàn),到如果一個任務(wù)太耗時,任務(wù)完成時間 ...
【JavaScript】使用定時器實現(xiàn)Js的延期執(zhí)行或重復(fù)執(zhí)行setTimeout,setInterval
使用定時器實現(xiàn)JavaScript的延期執(zhí)行或重復(fù)執(zhí)行 window對象提供了兩個方法來實現(xiàn)定時器的效果,分別是window.setTimeout()和window.setInterval.其中前者可 ...
remove name=";ProxyModule“會導(dǎo)致重復(fù)執(zhí)行
<?xml version="1.0" encoding="utf-8"?>
總結(jié)
以上是生活随笔為你收集整理的Android按钮持续按下执行,Android 按钮长按下去重复执行某个动作,放开后停止执行动作...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android手机短信拦截器,垃圾短信退
- 下一篇: android 内存播放视频播放器,视频