Android 카운트다운 효과 구현

11334 단어 Android카운트다운
본 논문 의 사례 는 안 드 로 이 드 가 카운트다운 효 과 를 실현 하 는 구체 적 인 코드 를 공유 하여 여러분 께 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
카운트다운 효과
효과 그림 먼저 보기:

직접 코드 올 리 기:
여 기 는 카운트다운...천시 분 초...에 대한 논리 적 판단 입 니 다.

/**
  *      
  */
 private void computeTime() {
  mSecond--;
  if (mSecond < 0) {
   mMin--;
   mSecond = 59;
   if (mMin < 0) {
    mMin = 59;
    mHour--;
    if (mHour < 0) {
     //      
     mHour = 23;
     mDay--;
     if(mDay < 0){
      //      
      mDay = 0;
      mHour= 0;
      mMin = 0;
      mSecond = 0;
     }
    }
   }
  }
}
타이머 의 주요 코드 는 다음 과 같 습 니 다.물론 스 레 드 를 켜 거나 백 스테이지 서 비 스 를 켜 서 처리 할 수도 있 습 니 다.다만 그 럴 필요 가 없습니다.타 이 머 는 쉽게 제어 할 수 있 습 니 다.카운트다운 시간 이 시작 되 기 때문에 백 스테이지 에서 가 져 와 야 합 니 다.시계 알 람 을 만 드 는 것 이 아니 라 시계 알 람 을 만 드 는 것 입 니 다.

/**
  *      
  * //time Date  :         。
  *  timer.schedule(task, time);
  * //firstTime Date  ,period long,   firstTime    ,  period      。
  *  timer.schedule(task, firstTime,period);
  * //delay  long  :     delay      。
  *  timer.schedule(task, delay);
  * //delay long,period long:     delay    ,  period      。
  *  timer.schedule(task, delay,period);
  */
 private void startRun() {
  TimerTask mTimerTask = new TimerTask() {
   @Override
   public void run() {
    Message message = Message.obtain();
    message.what = 1;
    timeHandler.sendMessage(message);
   }
  };
  mTimer.schedule(mTimerTask,0,1000);
 }
인터페이스 수정,handler 를 이용 하여 업데이트 인터페이스 알림

private Handler timeHandler = new Handler() {
  @Override
  public void handleMessage(Message msg) {
   super.handleMessage(msg);
   if (msg.what == 1) {
    computeTime();
    mDays_Tv.setText(mDay+"");//      
    mHours_Tv.setText(getTv(mHour));
    mMinutes_Tv.setText(getTv(mMin));
    mSeconds_Tv.setText(getTv(mSecond));
    if (mSecond == 0 && mDay == 0 && mHour == 0 && mMin == 0 ) {
     mTimer.cancel();
    }
   }
  }
 };
 
 private String getTv(long l){
  if(l>=10){
   return l+"";
  }else{
   return "0"+l;//  10,,      "0"
  }
 }
주 activity 코드 추가...

import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.TextView;
 
import java.util.Timer;
import java.util.TimerTask;
 
public class MainActivity extends AppCompatActivity {
 
 private RelativeLayout countDown;
 //    
 private TextView mDays_Tv, mHours_Tv, mMinutes_Tv, mSeconds_Tv;
 
 private long mDay = 23;//  
 private long mHour = 11;//  ,
 private long mMin = 56;//  ,
 private long mSecond = 32;// 
 
 private Timer mTimer;
 
 private Handler timeHandler = new Handler() {
  @Override
  public void handleMessage(Message msg) {
   super.handleMessage(msg);
   if (msg.what == 1) {
    computeTime();
    mDays_Tv.setText(mDay+"");//      
    mHours_Tv.setText(getTv(mHour));
    mMinutes_Tv.setText(getTv(mMin));
    mSeconds_Tv.setText(getTv(mSecond));
    if (mSecond == 0 && mDay == 0 && mHour == 0 && mMin == 0 ) {
     mTimer.cancel();
    }
   }
  }
 };
 
 private String getTv(long l){
  if(l>=10){
   return l+"";
  }else{
   return "0"+l;//  10,,      "0"
  }
 }
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  mTimer = new Timer();
  countDown = (RelativeLayout) findViewById(R.id.countdown_layout);
  mDays_Tv = (TextView) findViewById(R.id.days_tv);
  mHours_Tv = (TextView) findViewById(R.id.hours_tv);
  mMinutes_Tv = (TextView) findViewById(R.id.minutes_tv);
  mSeconds_Tv = (TextView) findViewById(R.id.seconds_tv);
  startRun();
 }
 
 /**
  *      
  * //time Date  :         。
  *  timer.schedule(task, time);
  * //firstTime Date  ,period long,   firstTime    ,  period      。
  *  timer.schedule(task, firstTime,period);
  * //delay  long  :     delay      。
  *  timer.schedule(task, delay);
  * //delay long,period long:     delay    ,  period      。
  *  timer.schedule(task, delay,period);
  */
 private void startRun() {
  TimerTask mTimerTask = new TimerTask() {
   @Override
   public void run() {
    Message message = Message.obtain();
    message.what = 1;
    timeHandler.sendMessage(message);
   }
  };
  mTimer.schedule(mTimerTask,0,1000);
 }
 
 /**
  *      
  */
 private void computeTime() {
  mSecond--;
  if (mSecond < 0) {
   mMin--;
   mSecond = 59;
   if (mMin < 0) {
    mMin = 59;
    mHour--;
    if (mHour < 0) {
     //      
     mHour = 23;
     mDay--;
     if(mDay < 0){
      //      
      mDay = 0;
      mHour= 0;
      mMin = 0;
      mSecond = 0;
     }
    }
   }
  }
 }
}
xml 코드 추가

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/countdown_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/white"
    android:gravity="center" >
 
 <RelativeLayout
  android:id="@+id/daojishi_rl"
  android:layout_width="match_parent"
  android:layout_height="40.0dip"
  android:layout_marginLeft="10.0dip"
  android:layout_marginRight="10.0dip"
  android:gravity="center" >
 
  <ImageView
   android:id="@+id/describe_iv"
   android:layout_width="40dp"
   android:layout_height="40dp"
   android:src="@mipmap/img"
   android:scaleType="fitXY"
   android:gravity="center_vertical" />
 
  <TextView
   android:id="@+id/describe_tv"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_centerVertical="true"
   android:layout_marginRight="5.0dip"
   android:layout_toRightOf="@+id/describe_iv"
   android:text="      "
   android:textSize="25sp" />
 
  <TextView
   android:id="@+id/days_tv"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_centerVertical="true"
   android:padding="4dp"
   android:layout_toRightOf="@+id/describe_tv"
   android:background="#c2c2c2"
   android:gravity="center"
   android:text=""
   android:textSize="20sp" />
 
  <TextView
   android:id="@+id/colon0"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_centerVertical="true"
   android:layout_marginLeft="5.0dip"
   android:layout_marginRight="3.0dip"
   android:layout_toRightOf="@+id/days_tv"
   android:text=" "
   android:textSize="20sp"
   android:textStyle="bold" />
 </RelativeLayout>
 
 <RelativeLayout
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:layout_below="@+id/daojishi_rl"
  android:gravity="center_horizontal" >
 
  <TextView
   android:id="@+id/hours_tv"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_centerVertical="true"
   android:layout_toLeftOf="@+id/colon1"
   android:background="#c2c2c2"
   android:gravity="center"
   android:text="23"
   android:padding="3dp"
   android:textSize="20sp" />
 
  <TextView
   android:id="@+id/colon1"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_centerVertical="true"
   android:layout_marginLeft="3.0dip"
   android:layout_marginRight="3.0dip"
   android:layout_toLeftOf="@+id/minutes_tv"
   android:text=":"
   android:textSize="20sp"
   android:textStyle="bold" />
 
  <TextView
   android:id="@+id/minutes_tv"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_centerVertical="true"
   android:layout_toLeftOf="@+id/colon2"
   android:background="#c2c2c2"
   android:gravity="center"
   android:text="59"
   android:padding="3dp"
   android:textSize="20sp" />
 
  <TextView
   android:id="@+id/colon2"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_centerVertical="true"
   android:layout_marginLeft="3.0dip"
   android:layout_marginRight="3.0dip"
   android:layout_toLeftOf="@+id/seconds_tv"
   android:text=":"
   android:textSize="20sp"
   android:textStyle="bold" />
 
  <TextView
   android:id="@+id/seconds_tv"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_alignParentRight="true"
   android:layout_centerVertical="true"
   android:background="#c2c2c2"
   android:gravity="center"
   android:text="59"
   android:padding="3dp"
   android:textSize="20sp" />
 </RelativeLayout>
 
</RelativeLayout>
완벽 하 게 이 루어 졌 으 니 바로 사용 하면 된다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기