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+"時間");
}
}
この記事へのコメントはこちら