簡體   English   中英

android上的按鈕如何主動查看持續時間多少

[英]How to see duration actively how much time pressing button on android

這是我的代碼。 我想積極地看看有多少第二次按下按鈕,我也想生動地做到這一點。 如果我按下按鈕,Textview 應該每秒更新一次。

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button = findViewById(R.id.button);
        textView = findViewById(R.id.textView);
        handler = new Handler();
        runnable = new Runnable() {
            @Override
            public void run() {
                textView.setText("Time: "+timer);
                timer++;
            }
        };
        button.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {

                if(event.getAction()==MotionEvent.ACTION_DOWN)
                {
                    while(!button.isPressed())
                    {
                        handler.postDelayed(runnable,1000);
                    }

                }
                else if(event.getAction()==MotionEvent.ACTION_UP)
                {
                    handler.removeCallbacks(runnable);
                }
                return false;
            }
        });
    }

順便說一句,這段代碼崩潰了,因為 while 循環不能按我想要的方式工作。 如果我不使用任何循環,textview 只更新了 1 次。 我希望它每秒更新一次。 感謝所有願意提供幫助的人。

我找到了解決這個問題的方法。 該方法屬於處理程序 post() ,它在它所在的位置開始運行,讓我免於這個問題。 有代碼。

button.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {

            if(event.getAction()==MotionEvent.ACTION_DOWN)
            {
                handler = new Handler();
                runnable = new Runnable() {
                    @Override
                    public void run() {
                        handler.postDelayed(runnable,1000);
                        textView.setText("Time: "+timer);
                        timer++;

                    }
                };
                handler.post(runnable);

            }
            else if(event.getAction()==MotionEvent.ACTION_UP)
            {
                handler.removeCallbacks(runnable);
            }
            return false;
        }
    });

當 down 事件開始時,運行方法從它開始。 運行方法是超過 1 秒后然后退出它。 如果 1 秒后仍然按下按鈕,則處理程序永遠不會停止可運行,因此可運行事件會一次又一次地開始。 這是簡單的可運行和處理程序循環。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM