初めて使用してからの時間をカウントするアプリを作成する

2020-02-15 java android time elapsedtime

初めて開いてからの時間をカウントするアプリを作成する方法は?どのクラスを使用するのかわかりません。ストップウォッチなどでこれを達成することは可能ですか?誰かがいくつかのコードを共有できますか?インターネットで何を検索すればよいかわからないのですが、自分が何を構築したいのかがわかります。それとも、私がこれを達成できる方法と方法を教えてください。

 statisticLayout.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
          if (plusiliminus==0){
              Toast.makeText(getActivity(),R.string.toaststatistic,Toast.LENGTH_SHORT).show();
          } else {
              Fragment fragmentstatistic=new Statistic();
              FragmentTransaction transaction=getActivity().getSupportFragmentManager().beginTransaction();
              transaction.replace(R.id.frameLayout,fragmentstatistic).commit();
          }
      }
  });

Answers

基本的に2つのことを行う必要があります。

アプリの起動時に現在の時刻を取得するか、次のようなボタンを押します

Date currentTime = Calendar.getInstance().getTime();

これは良い出発点であり、時間を取得し、この時間をユーザーに表示する形式で解析する必要があります。次に、このチュートリアルで示されているように、停止ボタンとリセットボタンを管理します。

したがって、TextViewを構築し、必要な方法で解析された秒をリアルタイムで表示します

import android.os.Handler;  
import android.os.SystemClock;  
import android.support.v7.app.AppCompatActivity;  
import android.os.Bundle;  
import android.view.View;  
import android.widget.Button;  
import android.widget.TextView;  

public class MainActivity extends AppCompatActivity {  

    TextView timer ;  
    Button start, pause, reset;  
    long MillisecondTime, StartTime, TimeBuff, UpdateTime = 0L ;  
    Handler handler;  
    int Seconds, Minutes, MilliSeconds ;  

    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  

        timer = (TextView)findViewById(R.id.tvTimer);  
        start = (Button)findViewById(R.id.btStart);  
        pause = (Button)findViewById(R.id.btPause);  
        reset = (Button)findViewById(R.id.btReset);  

        handler = new Handler() ;  

        start.setOnClickListener(new View.OnClickListener() {  
            @Override  
            public void onClick(View view) {  

                StartTime = SystemClock.uptimeMillis();  
                handler.postDelayed(runnable, 0);  

                reset.setEnabled(false);  

            }  
        });  

        pause.setOnClickListener(new View.OnClickListener() {  
            @Override  
            public void onClick(View view) {  

                TimeBuff += MillisecondTime;  

                handler.removeCallbacks(runnable);  

                reset.setEnabled(true);  

            }  
        });  

        reset.setOnClickListener(new View.OnClickListener() {  
            @Override  
            public void onClick(View view) {  

                MillisecondTime = 0L ;  
                StartTime = 0L ;  
                TimeBuff = 0L ;  
                UpdateTime = 0L ;  
                Seconds = 0 ;  
                Minutes = 0 ;  
                MilliSeconds = 0 ;  

                timer.setText("00:00:00");  

            }  
        });  

    }  

    public Runnable runnable = new Runnable() {  

        public void run() {  

            MillisecondTime = SystemClock.uptimeMillis() - StartTime;  

            UpdateTime = TimeBuff + MillisecondTime;  

            Seconds = (int) (UpdateTime / 1000);  

            Minutes = Seconds / 60;  

            Seconds = Seconds % 60;  

            MilliSeconds = (int) (UpdateTime % 1000);  

            timer.setText("" + Minutes + ":"  
                    + String.format("%02d", Seconds) + ":"  
                    + String.format("%03d", MilliSeconds));  

            handler.postDelayed(this, 0);  
        }  

    };  

}  

およびactivity_main.xmlのビュー

 <?xml version="1.0" encoding="utf-8"?>  
    <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"  
        xmlns:app="http://schemas.android.com/apk/res-auto"  
        xmlns:tools="http://schemas.android.com/tools"  
        android:layout_width="match_parent"  
        android:layout_height="match_parent"  
        android:background="@color/colorPrimary"  
        tools:context="in.amitsin6h.stopwatch.MainActivity">  



            <RelativeLayout  
                android:layout_width="fill_parent"  
                android:layout_height="fill_parent"  
                android:layout_marginLeft="10dp"  
                android:layout_marginRight="10dp"  
                android:paddingBottom="90dp">  


               <TextView  
                   android:text="00:00:00"  
                   android:layout_width="wrap_content"  
                   android:layout_height="wrap_content"  
                   android:id="@+id/tvTimer"  
                   android:textSize="50dp"  
                   android:textStyle="bold"  
                   android:textColor="#ffffff"  
                   android:layout_marginTop="120dp"  
                   android:paddingBottom="50dp"  
                   android:layout_alignParentTop="true"  
                   android:layout_centerHorizontal="true" />  

               <Button  
                   android:text="Start"  
                   android:background="#ffffff"  
                   android:layout_width="wrap_content"  
                   android:layout_height="wrap_content"  
                   android:layout_below="@+id/tvTimer"  
                   android:layout_alignParentLeft="true"  
                   android:layout_alignParentStart="true"  
                   android:layout_marginTop="41dp"  
                   android:id="@+id/btStart" />  

               <Button  
                   android:text="Pause"  
                   android:background="#ffffff"  
                   android:layout_width="wrap_content"  
                   android:layout_height="wrap_content"  
                   android:id="@+id/btPause"  
                   android:layout_alignBaseline="@+id/btStart"  
                   android:layout_alignBottom="@+id/btStart"  
                   android:layout_centerHorizontal="true" />  

               <Button  
                   android:text="Reset"  
                   android:background="#ffffff"  
                   android:layout_width="wrap_content"  
                   android:layout_height="wrap_content"  
                   android:layout_alignTop="@+id/btPause"  
                   android:layout_alignParentRight="true"  
                   android:layout_alignParentEnd="true"  
                   android:id="@+id/btReset" />  

            </RelativeLayout>  


    </android.support.constraint.ConstraintLayout>  

私が理解できる限りでは、最初に使用されたときの永続的なストレージが必要です。 SharedPreferencesは、これを保存する良い方法だと思います。

ランチャーアクティビティのonCreate関数では、 System.currentTimeInMillis()を取得して、 ここで説明するようにSharedPreferences保存できます

その後、時間をリセットする必要がある場合、 SharedPreferencesの値をクリアするだけで、新しい値を再度設定できます。

これで実装のアイデアが得られることを願っています。

Related