如何做企业网站加v,网站灰色代码,视频号的网站链接,3x3x3x域名as版本#xff1a;23.3.1patch2
例程#xff1a;timer
在前一个版本的基本上改的#xff0c;增加了继续的功能#xff0c;实现方法稍微不同。
动画演示#xff1a; activity_main.xml
?xml version1.0 encodingutf-8?
androidx…as版本23.3.1patch2
例程timer
在前一个版本的基本上改的增加了继续的功能实现方法稍微不同。
动画演示 activity_main.xml
?xml version1.0 encodingutf-8?
androidx.constraintlayout.widget.ConstraintLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-autoxmlns:toolshttp://schemas.android.com/toolsandroid:idid/mainandroid:layout_widthmatch_parentandroid:layout_heightmatch_parenttools:context.MainActivityButtonandroid:idid/btn_clearandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_marginStart144dpandroid:layout_marginTop60dpandroid:text清零app:layout_constraintStart_toStartOfparentapp:layout_constraintTop_toBottomOfid/btn_stop /TextViewandroid:idid/tv_timerandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:textHello World!android:textSize30dpapp:layout_constraintBottom_toBottomOfparentapp:layout_constraintEnd_toEndOfparentapp:layout_constraintStart_toStartOfparentapp:layout_constraintTop_toTopOfparentapp:layout_constraintVertical_bias0.272 /Buttonandroid:idid/btn_startandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_marginStart36dpandroid:layout_marginTop80dpandroid:text开始app:layout_constraintStart_toStartOfparentapp:layout_constraintTop_toBottomOfid/tv_timer /Buttonandroid:idid/btn_stopandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_marginStart20dpandroid:text暂停app:layout_constraintStart_toEndOfid/btn_startapp:layout_constraintTop_toTopOfid/btn_start /Buttonandroid:idid/btn_resumeandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:layout_marginStart20dpandroid:text继续app:layout_constraintStart_toEndOfid/btn_stopapp:layout_constraintTop_toTopOfid/btn_stop //androidx.constraintlayout.widget.ConstraintLayout
mainactivity.java
package com.shudu.timer;
//按钮控制显示计时器。
//开始、暂停、继续、清零四个按钮
//2024.12.30import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;public class MainActivity extends AppCompatActivity {private TextView tvTimer;private Button btnStart, btnPause, btnResume,btnClear;private Handler handler new Handler();private long startTime0;private long elapsedTime 0;private Runnable timerRunnable;private boolean isRunning false;private boolean isPaused false;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);EdgeToEdge.enable(this);setContentView(R.layout.activity_main);ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) - {Insets systemBars insets.getInsets(WindowInsetsCompat.Type.systemBars());v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);return insets;});tvTimer findViewById(R.id.tv_timer);btnStart findViewById(R.id.btn_start);btnPause findViewById(R.id.btn_stop);btnResume findViewById(R.id.btn_resume);btnClearfindViewById(R.id.btn_clear);btnClear.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {clearTimer();}});btnStart.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {if (!isRunning) {startTime System.currentTimeMillis();isRunning true;handler.postDelayed(updateTimer, 0);}}});btnPause.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {if (isRunning !isPaused) {isPaused true;elapsedTime System.currentTimeMillis() - startTime;handler.removeCallbacks(updateTimer);}}});btnResume.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {if (isPaused) {isPaused false;startTime System.currentTimeMillis();handler.postDelayed(updateTimer, 0);}}});}private void clearTimer() {isRunning false;
// startTime0;startTime System.currentTimeMillis();//这行代码什么意思,不写还不行。写成starttime0也不行。tvTimer.setText(00:00:00);}private Runnable updateTimer new Runnable() {Overridepublic void run() {long currentTime;if (isRunning) {if (isPaused) {currentTime elapsedTime;} else {currentTime System.currentTimeMillis() - startTime elapsedTime;}int seconds (int) (currentTime / 1000);int minutes seconds / 60;int hours minutes / 60;seconds % 60;minutes % 60;tvTimer.setText(String.format(%02d:%02d:%02d, hours, minutes, seconds));handler.postDelayed(this, 1000);}}};
}