比方說,你有一個TextView
,顯示一個數字爲0,你有一個Button
。 現在,如果用戶按下按鈕,TextView中的數字將增加一個(我知道該怎麼做),但如果用戶按下按鈕並且不釋放它,那麼TextView
中的數字應該增加,這應該只要用戶不釋放Button
就可以重複自我。 換句話說:只要用戶按住按鈕,如何一次又一次地增加數字?重複一個動作,只要按下按鈕
5
A
回答
6
一般的方法(不是特定於Android)將分別檢測新聞和發佈事件。新聞事件啓動一個週期性任務(Runnable
或Thread
),它將添加到計數器(讓我們說每秒5次,或每200毫秒一次)。發佈事件會停止週期性任務。
1
- 建立一個
View.OnLongClickListener
你的按鈕 - 給你的活動
Runnable
,並初始化(但不啓動),當您加載活動 - 有OnLongClickListener做更新的定期異步任務文本框並檢查自第一次點擊以來的時間
- 創建一個
OnTouchListener
,當觸摸事件被釋放時暫停Runnable
。
我知道這是一個粗略的草稿,但是這是可以重複使用和修改一個非常有用的模式,所以它的價值下沉你的爪子把它...
2
你需要安排一個當您收到mousePressed
事件時發生異步重複事件,並在您收到mouseReleased
事件時停止它。
在Java中有很多方法可以處理這個問題。我喜歡使用java.util.concurrent
類,它們非常靈活。需要注意以下幾點:
如果事件調度線程上沒有發生異步事件,則需要使用SwingUtilities.invokeLater()
來設置JButton
文本。
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
public class Frame
{
public static void main(String[] args)
{
JFrame frame = new JFrame();
final JButton button = new JButton("0");
final ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
button.addMouseListener(new MouseAdapter()
{
int counter = 0;
ScheduledFuture<?> future;
@Override
public void mousePressed(MouseEvent e)
{
Runnable runnable = new Runnable()
{
public void run()
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
button.setText(String.valueOf(counter++));
}
});
}
};
future = executor.scheduleAtFixedRate(runnable, 0, 200, TimeUnit.MILLISECONDS);
}
@Override
public void mouseReleased(MouseEvent e)
{
if (future != null)
{
future.cancel(true);
}
}
});
frame.add(button);
frame.setSize(400, 400);
frame.setVisible(true);
}
}
相關問題
- 1. JavaFx - 只要按下按鈕,如何重複操作
- 2. 只要我按下按鈕,如何製作一個winform按鈕「做某事」?
- 3. C#重複按鈕動作
- 4. UIPopover按鈕重複動作
- 5. AS3:只有一個按鈕被按下
- 6. 按鈕操作不重複按下按鈕JavaFX
- 7. 如何在MenuItem按鈕被按下時重複一個動作? (cocos2d)
- 8. 我需要用一個按鈕按下
- 9. 獲得一個按鈕來重複一個動作
- 10. 如何按鈕動作複製回另一個按鈕
- 11. 我設置的功能重複,直到按下一個按鈕
- 12. 動作按鈕只能工作一次
- 13. Android:兩個按鈕,但按下一個按鈕的動作僅在另一個按下後纔會發生
- 14. 在按鈕中不重複動作
- 15. 按下一個按鈕
- 16. 上一個按鈕和下一個按鈕不工作在jquery
- 17. Arduino:當按下一個按鈕只返回一個輸出
- 18. 重複動畫按鈕時按
- 19. 開始一個新的活動按鈕按下按鈕
- 20. 多個按鈕,但一次只能按一個按鈕
- 21. 按下go按鈕後,如何重複一個功能,直到按下停止按鈕? (tkinter,蟒蛇2.7)
- 22. 有宏的循環,需要油門,只有移動到下一個我時,按下一個新的按鈕
- 23. 統一運行,只要一個按鈕在檢查按功能
- 24. Rhodes-按下按鈕時創建一個動作
- 25. 執行最後一個動作時後退按鈕按下ASP.Net
- 26. JavaFX在按下按鈕時觸發一個動作
- 27. Android - 按住重複按鈕
- 28. 的Android:重新按下按鈕時動態添加按鈕
- 29. 按鈕按下和釋放的動作
- 30. IOS:按下按鈕的動作
+1這聽起來像我描述更一般的Android特定過程。 – 2012-04-03 22:21:43