2017-08-23 140 views
1

我正在開發一個手電筒應用程序,其中我試圖添加閃爍功能的按鈕單擊。我發現這個代碼是:手電筒閃爍按鈕點擊Android

String myString = "0101010101"; 
long blinkDelay 50; //Delay in ms 
for (int i = 0; i < myString.length(); i++) { 
    if (myString.charAt(i) == '0') { 
     params.setFlashMode(Parameters.FLASH_MODE_ON); 
    } else { 
     params.setFlashMode(Parameters.FLASH_MODE_OFF); 
    } 
    try { 
     Thread.sleep(blinkDelay); 
    } catch (InterruptedException e) { 
     e.printStackTrace(); 
    } 
} 

但這個代碼關閉手電筒幾個閃爍後。我怎麼才能啓動手電筒閃爍按鈕點擊並停止它,除非我再次點擊它?任何幫助?

+2

溝渠'String',使用無限循環,爲按鈕點擊添加一個監聽器,並且會設置一個標誌,讓您的循環中斷,然後在中斷後最後關閉它。 – Mena

+0

我嘗試過無限循環,但之後應用程序被凍結。我無法打破按鈕單擊循環 – Shaifu

+0

避免在UI線程中的thread.sleep。 –

回答

1
  • 時,你將不得不使用一個單獨的線程防止UI凍結狀態打破循環的布爾。
  • 線程將包含一個while循環這將允許它連續閃爍。
  • 要打開按鈕上的循環,請在while條件中使用布爾變量

希望它有幫助。

2

它由您的字符串長度控制,因此for循環會在i的數量大於最後一個索引後中斷。 如果您想連續閃爍閃光燈,請使用while循環。 您可以使用一個布爾變量在開關之間切換。 而在同時按鈕被點擊

+0

你的意思是說使用一個while循環嗎? – Michael

+0

是一段時間循環 –