การทำให้แอปนับเวลานับตั้งแต่ใช้ครั้งแรก

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

คุณต้องทำสองสิ่ง

รับเวลาปัจจุบันเมื่อคุณเริ่มแอพหรือกดปุ่มโดยใช้สิ่งที่ต้องการ

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