Androidでcountdownを作ってみよう1

 

Android は Java なのか? を自分なりに理解するには
実際に体験してみる、つまり
実際にAndroidのプログラムを作ってみるのが1番です。

こんにちは、理屈よりも実践重視のイガジーです。

というわけで、
以前 Java(AWT)で作ったカウントダウンを
Android で作ってみましょう。

Androidの開発環境(AndroidStudio)はインストール済みで
エミュレータも動作することを前提とします。

Java(AWT)のカウントダウンは→こちら
※ 全6回の連載記事です

Calendar クラスを使うのは同じなのですが
Android の場合はCalendar c=Calendar.getInstance();とインスタンスを生成します。
new GregorianCalendar(); としないのは
メモリの少ないスマホで動かすための節約術だろうと思います。

年や月日を得る次の部分は同じです。

int yy=c.get(Calendar.YEAR);
int mm=c.get(Calendar.MONTH);
int dd=c.get(Calendar.DAY_OF_MONTH);
long ms=c.getTimeInMillis();

また、月(mm)が0から始まる、つまり0=1月なのも同じです。

開発途上のデバッグ用表示は、System.out.println()
の代わりに Log.d() を使います。例えばLog.d("TAG","yy="+yy+" mm="+(mm+1)+" dd="+dd);という感じです。
こうすると、Android Studio の 下側の Logcat エリアに
表示されます。

LogCat エリアには色々なメッセージが表示されるので、
“TAG”はそのたくさんのメッセージの中から自分の必要なものを
選別するためのものです。
※ Logcatの虫眼鏡アイコンのある所にTAGと入力すると
フィルタリング(”TAG”とついているものだけを表示する)
ことができます。

ちなみに、”yy=”+yy は、yyを文字列にして連結する処理で
真面目に書くと “yy=”+Integer.toString(yy) なのですが
“yy=” という文字列から始まっているので、+ は文字列連結
となり、その後ろが自動的に文字列に変換されます。

mmが0から始まるので、+1して表示するために、(mm+1)と
括弧でくくっています。括弧によって数値処理が先に行われて
その後で文字列に変換されて連結されます。

Logcat エリアに日付と今年の残り時間/日数を表示する例を
以下に掲載しておきます。

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

import java.util.Calendar;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // ここからカウントダウンの処理
        final long MS2HOUR=1000*60*60;
        Calendar c=Calendar.getInstance();
        int cyy=c.get(Calendar.YEAR);
        int cmm=c.get(Calendar.MONTH)+1;
        int cdd=c.get(Calendar.DAY_OF_MONTH);
        long ms=c.getTimeInMillis();
        Log.d("TAG","今日は"+cyy+"年"+(cmm+1)+"月"+cdd+"日");

        Calendar d=Calendar.getInstance();
        d.set(cyy+1,0,1,0,0,0);
        long mst=d.getTimeInMillis()-ms;
        int hh=(int)(mst/MS2HOUR);
        int dd=hh/24;
        Log.d("TAG","今年は、あと"+hh+"時間");
        int rh=hh%24;
        Log.d("TAG","今年は、あと"+dd+"日と"+rh+"時間");
    }
}

この記事へのコメントはこちら

メールアドレスは公開されませんのでご安心ください。
また、* が付いている欄は必須項目となりますので、必ずご記入をお願いします。

内容に問題なければ、下記の「コメント送信」ボタンを押してください。