Androidがカウントダウン効果を実現しました。
本論文の例では、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;
}
}
}
}
}
タイマーの主なコードは以下の通りです。もちろんスレッドを開いたり、バックグラウンドを開いたりしてもいいです。必要がないだけです。タイマーで簡単にコントロールできます。カウントダウンの起点です。とにかくバックグラウンドで取得してください。時計のアラームではなく、時計のアラームをしてもいいです。バックグラウンドサービスや自分でスレッドを開くこともないです。アラムManagerを使って実現します。
/**
*
* //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 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>
完璧に実現して直接使えばいいです。以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。