【问题标题】:Android SDK (Eclipse) : How to create a simple timer for a simple App?Android SDK (Eclipse):如何为一个简单的应用程序创建一个简单的计时器?
【发布时间】:2013-11-26 07:44:44
【问题描述】:

我有一个关于编写应用程序启动时显示的句子的简单应用程序。唯一的问题是,我需要应用程序计算用户编写句子所花费的时间.. 就像您触摸“提交”时一样按钮,Toast 消息会说“没错!,它花了你 3.2 秒”作为示例。

我听说你可以设置一个定时器,当特定动作发生时启动......你可以命令它停止。

假设当你启动应用程序时计时器会启动,当你点击“提交”按钮时它会停止,并给出一个像上面一样的敬酒消息,计算你在启动后写下感知的确切时间应用程序! *

这是应用程序代码,希望对您有所帮助:*

Button w;

TextView t;

EditText e;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);



w = (Button) findViewById(R.id.Write);

t= (TextView) findViewById(R.id.FTS);

e = (EditText) findViewById(R.id.Text);


w.setOnClickListener(new View.OnClickListener() {

@Override

 public void onClick(View v) {


 String check1 = t.getText().toString();
 String check2 = e.getText().toString();

 if (check1.equals(check2))

     Toast.makeText(MainActivity.this,"You Wrote it Right !!!",Toast.LENGTH_LONG).show();

 else if (check2.equals(""))

Toast.makeText(MainActivity.this,"It's Empty",Toast.LENGTH_LONG).show();

 else 
     Toast.makeText(MainActivity.this,"You wrote it wrong,try again !",Toast.LENGTH_LONG);

我完全是 Android 新手,所以我真的不知道该怎么做,感谢您的时间。*

【问题讨论】:

    标签: android eclipse time sdk timer


    【解决方案1】:

    您可以使用Timer 类来启动计时器会话。请按照以下步骤操作:

    1-定义一个Timer的全局变量和一个计算时间的变量,如:

    private Timer t;
    private int TimeCounter = 0;
    

    2- 然后当活动开始时,所以在onCreate 添加以下内容:P.S:我所做的是我有一个 textView 来显示他写句子时的时间。所以如果你不想这样,你可以删除下面代码中的tvTimer部分

    t = new Timer();
        t.scheduleAtFixedRate(new TimerTask() {
    
            @Override
            public void run() {
                // TODO Auto-generated method stub
                runOnUiThread(new Runnable() {
                    public void run() {
                        tvTimer.setText(String.valueOf(TimeCounter)); // you can set it to a textView to show it to the user to see the time passing while he is writing.
                        TimeCounter++;
                    }
                });
    
            }
        }, 1000, 1000); // 1000 means start from 1 sec, and the second 1000 is do the loop each 1 sec.
    

    然后当单击按钮时,停止计时并在Toast 中显示timeCounter 变量。

    t.cancel();//stopping the timer when ready to stop.
    Toast.makeText(this, "The time taken is "+ String.valueOf(TimeCounter), Toast.LENGTH_LONG).show();
    

    PS:您必须处理将秒转换为分钟的问题,因为该数字可能会扩展到 360 秒,因此您需要将其转换为 6 分钟。您可以在 t.schedualeAtFixedRate 中进行操作,或者在完成后您可以将其转换并显示在 toast 中

    希望你觉得这很有用。如果它对你有用,请给我反馈。

    【讨论】:

    • 很高兴能为您提供帮助
    【解决方案2】:

    让我将您的注意力转移到Chronometer Widget on the Dev Page

    此外,您还可以通过使用 Chronometer Widget 获得一些效果(跳至 8:30)

    Video of Chronometer Widget

    XML

      <Chronometer
        android:id="@+id/chronometer1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    

    Java

    ((Chronometer) findViewById(R.id.chronometer1)).start();
    ((Chronometer) findViewById(R.id.chronometer1)).stop();
    

    【讨论】:

    • 这太棒了。我不断遇到建议自定义 Handler 或 Timer 的人。我确信必须有一种默认的方式来显示时间。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-18
    • 1970-01-01
    • 1970-01-01
    • 2013-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多