亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 editText 以 (mm:ss) 格式設置可變持續時間計時器?

如何使用 editText 以 (mm:ss) 格式設置可變持續時間計時器?

子衿沉夜 2023-06-14 10:34:09
說到java,我是一個完全的新手。我以研究學習和人類行為為生,需要一款帶有兩種計時器的應用程序。這些計時器將存在于片段中。第一種類型的計時器將接受用戶輸入(間隔 - 分鐘、秒或兩者)并倒計時。歸零后,該計時器將重置為原始輸入值并重新啟動。用戶還可以選擇點擊“重置”按鈕以從原始輸入值開始計時(例如,如果輸入的數字 = 5、5-4-3-2-1-0-5-4-3-reset -5-4-3-2-1-0)第二種類型的計時器將再次接受用戶輸入。當計時器啟動時,它將從兩個輸入值之間的數字開始倒計時。用戶可以選擇點擊“重置”按鈕以從 0 和輸入的數字之間的新數字開始計時(例如,如果輸入的數字范圍 = 3 和 7,則 4-3-2-1-0-6- 5-4-重置-1-0-7-6-重置-2-1-0。)現在我有一個計時器,從固定的時間間隔以分鐘為單位倒計時,但用戶只能輸入分鐘,而不是秒(例如,如果按下“1”,則設置為 01:00,如果按下“130”,則為 01: 00 仍然設置。我希望用戶可以選擇設置 01:30 或 00:30。)任何幫助將不勝感激!mButtonSet.setOnClickListener(new View.OnClickListener() {? ? ? ? ? ? @Override? ? ? ? ? ? public void onClick(android.view.View view) {? ? ? ? ? ? ? ? String input = mEditTextInput.getText().toString();? ? ? ? ? ? ? ? if (input.length() == 0) {? ? ? ? ? ? ? ? ? ? Toast.makeText(getActivity(), "Fill it in, loser", Toast.LENGTH_SHORT).show();? ? ? ? ? ? ? ? ? ? return;? ? ? ? ? ? ? ? }? ? ? ? ? ? ? ? long millisInput = Long.parseLong(input) * 60000;? ? ? ? ? ? ? ? if (millisInput == 0) {? ? ? ? ? ? ? ? ? ? Toast.makeText(getActivity(), "Please enter a positive number", Toast.LENGTH_SHORT).show();? ? ? ? ? ? ? ? ? ? return;? ? ? ? ? ? ? ? }private void startTimer() {? ? ? ? mCountDownTimer = new CountDownTimer(mTimeLeftInMillis, 100) {? ? ? ? ? ? @Override? ? ? ? ? ? public void onTick(long millisUntilFinished) {? ? ? ? ? ? ? ? mTimeLeftInMillis = millisUntilFinished;? ? ? ? ? ? ? ? updateCountDownText();? ? ? ? ? ? }private void updateCountDownText() {? ? ? ? int minutes = (int) (mTimeLeftInMillis / 1000)/60;? ? ? ? int seconds = (int) (mTimeLeftInMillis / 1000)% 60;? ? ? ? String timeLeftFormatted = String.format(Locale.getDefault(),? ? ? ? timeLeftFormatted = String.format(Locale.getDefault(), "%02d:%02d", minutes, seconds));? ? ? ? mTextViewCountdown.setText(timeLeftFormatted);
查看完整描述

1 回答

?
HUX布斯

TA貢獻1876條經驗 獲得超6個贊

一般來說,Edittexts 不能接受多個輸入,所以我們需要一個解決方法。方案一:選擇約束用戶以mm:ss格式輸入,解析如下:


 String input[] = mEditTextInput.getText().toString().split(":");

//input[0] is minutes and input[1] is seconds

方案二:使用兩個Edittexts,一個挨著一個,中間放一個Textview保存字符串“:”,得到輸入如下:


 String input1 = mEditTextInput.getText().toString();

 String input2 = mEditTextInput2.getText().toString();

選項 3:使用簡單的 Textview,并檢測用戶的按鍵以填寫值。您還需要變量來檢測到目前為止有效按下的次數(輸入數字時增加,按 x鍵時減少)。比如說,Textview 中的初始值是 00:00,當檢測到按鍵“1”時,你可以使用下面的代碼來顯示它:


String str=getKey();

String str2=mTextView.getText().toString();

if(numKey==0)//numkey is the number of valid presses

{

    String toSet="0"+str+":00";

    mTextView.setText(toSet);

}

else if(numKey==1)

{

    String toSet=str+str2.substring(1);

    mTextView.setText(toSet);

}

//and so on...

getKey()函數可以實現如下:


@Override 

public boolean onKeyDown(int keyCode, KeyEvent event) {


    switch (keyCode) {

        case KeyEvent.KEYCODE_A:

        {

            //your Action code

            return true;

        }

    }

    return super.onKeyDown(keyCode, event);

}

實際上,您可以刪除該行


String str=getKey();

代替操作,您可以簡單地調用函數(比如 formatTextView)并將鍵作為參數傳遞給它,它將負責設置 textView。最后,使用mTextView.getText().toString(); 根據需要取回您的值;


注意:如果您的片段有任何其他 Edittext,選項 3 將不起作用,因為這將消耗 onKeyPressed 事件。


希望這可以幫助你 :)


查看完整回答
反對 回復 2023-06-14
  • 1 回答
  • 0 關注
  • 159 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號