Androidでcountdownを作ってみよう2

 

GUI を設定するにはレイアウトを受け持つクラスを使って
文字エリア(ラベル/TextView)や、ボタンなどの
GUI部品(Widgets)を配置します。

こんにちは、当サイト管理人のイガジーです。

Java AWT の場合は、BorderLayout や GridLayout などが
ありますが、Android の場合は LinearLayout や Relative
Layout などを使う事が多いようです。
AndroidStudio でプロジェクトを作る時、Empty Activity を
選ぶと activity_main.xml には Relative Layout が使われて
TextView が1つ設定されます。
AndroidのHelloWorldを参照)

Log.d()で、LogCatエリアに表示していた文字列を
TextViewに表示するには、このTextView に setText()
すれば良いのですが、「このTextView」を指定するには
TextViewにid(識別子)を割り振る必要があります。
具体的には android:id="@+id/tv" を追加して

<TextView
    android:id="@+id/tv"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello World!" />

にします。
※ android:text="Hello World!" の行は削除してもよいのですが
編集前との対比が分かりやすいように残しています。
※ @+id/tv の tv が id 名で、他とダブらなければ何でも
(text1でもlabelでもtttでも)かまいません。

そして、MainActivity.java の方では
TextView tvn=(TextView)findViewById(R.id.tv);
と書いて、そのid(R.id.tv)を探して tvn に割り当てます。
これは TextView tvn=new TextView(this); に相当します。
※ new TextView(this)とした場合は、レイアウト上に
突っ込む(addView()する)処理が必要になります。

tvn(インスタンス)が生成できたら
tvn.addText(“ほげ”); とすれば、Android(エミュレータ)
画面の hello world! の部分が ほげ になります。

そんな訳で、前回の処理で cyy や cmm を取得した次に

String str="今日は"+cyy+"年"+(cmm+1)+"月"+cdd+"日";
tvn.setText(str);

とすれば、今日の年月日が Hello World! の代わりに表示されます。

「あとdd日とhh時間」も表示させるようにした例を
掲載しておきます。

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);
        int cdd=c.get(Calendar.DAY_OF_MONTH);
        long ms=c.getTimeInMillis();
        String str="今日は"+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);
//        Log.d("TAG","今年は、あと"+hh+"時間");
        int dd=hh/24;
        int rh=hh%24;
        str+="¥n今年は、あと"+dd+"日と"+rh+"時間";
        Log.d("TAG",str);
        TextView tvn=(TextView)findViewById(R.id.tv);
        tvn.setText(str);
    } // onCreate()
}// class MainActivity()

※ ¥n はフォントによっては \n で、改行の指定です。

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

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

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