안 드 로 이 드 타이머 의 두 가지 실현 방법

아마도 우 리 는 개발 중 에 타이머 라 는 물건 을 자주 사용 할 것 이다.예 를 들 어 비디오 를 찍 을 때 우 리 는 오른쪽 상단 에 타 이 머 를 표시 해 야 할 것 이다.이 물건 은 사실 실현 하기 매우 간단 하 다.
하나의 컨트롤 만 사용 하면 됩 니 다.Chronometer.네,이렇게 간단 해서 말씀 드 리 기 가 부 끄 럽 습 니 다.

<Chronometer
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:format="%s"
android:id="@+id/timer"/>
네,그렇게 간단 해 요.자바 코드 동일

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
timer = (Chronometer) findViewById(R.id.timer);
}
public void btnClick(View view) {
timer.setBase(SystemClock.elapsedRealtime());//     
timer.start();
}
초 간단 해 요.나무 있어 요?실행 결과 보기:

혹시 시간 표시 가 필요 하 다 면 어떻게 하 시 겠 습 니까?급 하지 도 급 하지 도 않 고 두 줄 코드 로 해결 할 수 있 는 일.

public void btnClick(View view) {
timer.setBase(SystemClock.elapsedRealtime());//     
int hour = (int) ((SystemClock.elapsedRealtime() - timer.getBase()) / 1000 / 60);
timer.setFormat("0"+String.valueOf(hour)+":%s");
timer.start();
}
public void stopClick(View view) {
timer.stop();
}
네,맞아요.이렇게 간단 하지만 xml format 를 고 치 는 것 을 잊 지 마 세 요.

<Chronometer
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:format="00:00:00"
android:gravity="center"
android:id="@+id/timer"/>
그래,너 잘못 본 거 아니 야,이렇게 하면 돼,안 믿 어,봐 봐!

네가 상상 하 는 비디오 위의 시간 처럼 나무 가 있 니?그래.앞 에 동 그 라 미 를 설치 하고 타이머 색상 을 설정 하면 그것 과 마찬가지 로 긴박 합 니 다.
이런 방식 을 좋아 하지 않 을 수도 있 습 니 다.물론 handler+timer+timerTask 방식 으로 도 가능 합 니 다.너무 간단 해서 바로 코드 를 넣 었 습 니 다.

package com.example.nanchen.timerdemo;
import android.os.SystemClock;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Chronometer;
import android.widget.TextView;
import java.util.Locale;
import java.util.Timer;
import java.util.TimerTask;
public class MainActivity extends AppCompatActivity {
private Chronometer timer;
private Timer timer1;
private TextView textView;
private TimerTask timerTask;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
timer = (Chronometer) findViewById(R.id.timer);
textView = (TextView) findViewById(R.id.text);
timer1 = new Timer();
}
public void btnClick(View view) {
timer.setBase(SystemClock.elapsedRealtime());//     
int hour = (int) ((SystemClock.elapsedRealtime() - timer.getBase()) / 1000 / 60);
timer.setFormat("0"+String.valueOf(hour)+":%s");
timer.start();
}
public void stopClick(View view) {
timer.stop();
}
public void startClick(View view) {
timerTask = new TimerTask() {
int cnt = 0;
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
textView.setText(getStringTime(cnt++));
}
});
}
};
timer1.schedule(timerTask,0,1000);
}
private String getStringTime(int cnt) {
int hour = cnt/3600;
int min = cnt % 3600 / 60;
int second = cnt % 60;
return String.format(Locale.CHINA,"%02d:%02d:%02d",hour,min,second);
}
public void stopClick1(View view) {
if (!timerTask.cancel()){
timerTask.cancel();
timer1.cancel();
}
}
}

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.nanchen.timerdemo.MainActivity">
<Chronometer
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:format="00:00:00"
android:gravity="center"
android:id="@+id/timer"/>
<Button
android:layout_width="match_parent"
android:onClick="btnClick"
android:text="start"
android:layout_height="wrap_content"/>
<Button
android:layout_width="match_parent"
android:text="stop"
android:onClick="stopClick"
android:layout_height="wrap_content"/>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#959393"
android:layout_marginBottom="20dp"
android:layout_marginTop="20dp"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="00:00:00"
android:gravity="center"
android:id="@+id/text"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="  "
android:onClick="startClick"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="  "
android:onClick="stopClick1"/>
</LinearLayout>
아래 timer 로 간단하게 실행 하 는 효과:

여러분 들 은 이 쯤 되면 자신 만 의 이 해 를 가지 게 될 것 입 니 다.안 드 로 이 드 의 공식 적 인 Chronometer 방식 은 타 이 머 를 만 들 기 위 한 것 일 뿐 입 니 다.우 리 는 타이머 와 Timer Task 방식 으로 더욱 자주 적 으로 할 수 있 습 니 다.왜냐하면 당신 은 언제 부터 시간 을 재 려 고 하 는 지,시간 을 재 려 고 하 는 방식 은 어 려 운 일이 아 닙 니 다.심지어 각종 과장 되 는 2 초 간격 입 니 다.3 초 간격,n 초 간격 으로 가능 합 니 다.구체 적 으로 사용 하 시 려 면 선택 하 세 요~~
위 에서 말 한 것 은 소 편 이 여러분 에 게 소개 한 안 드 로 이 드 시 분 초 타이머 의 두 가지 실현 방법 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기