Создание приложения для подсчета времени с момента первого использования - PullRequest
0 голосов
/ 14 февраля 2020

Как сделать приложение для подсчета времени с момента первого открытия? Я понятия не имею, какой класс использовать. Можно ли добиться этого с помощью секундомера или чего-то подобного? Может кто-нибудь, пожалуйста, поделитесь кодом? Я не знаю, что искать на inte rnet, просто имею представление о том, что я хочу построить. Или просто подскажите мне, с чем я могу этого добиться и как?

 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();
          }
      }
  });

Ответы [ 2 ]

0 голосов
/ 14 февраля 2020

Насколько я понимаю, вам нужно постоянное хранилище для того времени, когда оно было впервые использовано. Я думаю, SharedPreferences - это хороший способ сохранить это в вашем случае.

В функции onCreate вашей активности запуска вы можете получить System.currentTimeInMillis() и сохранить его в SharedPreferences , как указано здесь .

Затем, когда вам нужно сбросить время, вам просто нужно очистить значение в SharedPreferences и снова установить новое значение.

Надеюсь, это даст вам представление о вашей реализации.

0 голосов
/ 14 февраля 2020

В основном вам нужно сделать две вещи.

Получить текущее время при запуске приложения или нажать кнопку, используя что-то вроде

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>  
...