วันพุธที่ 26 พฤศจิกายน พ.ศ. 2557

แสดงวันที่ปัจจุบันด้วย TextView

              สวัสดีครับทุกท่านเป็นอย่างไรกันบ้างไม่ได้เจอกันเสียนาน วันนี้ผมมาสอนทำการแสดงวันที่ปัจจุบันด้วย Text View กันครับ
           
              เริ่มแรกเลยเราก็มาสร้าง Project กันก่อน เลือก Version กันตามชอบได้เลยนะครับ ส่วนผมของเลือกMin เป็น 4.0 แล้วกัน



              เรามาดูหน้าตา Layout ของ Application กันนะครับ หน้าตาก็ไม่มีอะไรมากแค่เป็น TextView 3 อัน


activity_main.xml

1:  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
2:    xmlns:tools="http://schemas.android.com/tools"  
3:    android:layout_width="match_parent"  
4:    android:layout_height="match_parent"  
5:    tools:context="app.kamonwat.showdatewithtext.MainActivity" >  
6:                   <TextView  
7:                     android:layout_marginTop="30dp"  
8:                  android:id="@+id/show_date_dayofweek"  
9:                  android:layout_gravity="center"  
10:                  android:layout_width="wrap_content"  
11:                  android:layout_height="wrap_content"  
12:                  android:layout_centerHorizontal="true"  
13:                  android:textSize="16sp"  
14:                  android:text="Monday" />  
15:                <TextView  
16:                  android:id="@+id/show_date_day"  
17:                  android:layout_below="@+id/show_date_dayofweek"  
18:                  android:layout_gravity="center"  
19:                  android:layout_width="wrap_content"  
20:                  android:layout_height="wrap_content"  
21:                  android:layout_centerHorizontal="true"  
22:                  android:textSize="36sp"  
23:                  android:text="24" />  
24:                <TextView  
25:                  android:id="@+id/show_date_monthyear"  
26:                  android:layout_below="@+id/show_date_day"  
27:                  android:layout_gravity="center"  
28:                  android:layout_width="wrap_content"  
29:                  android:layout_height="wrap_content"  
30:                  android:layout_centerHorizontal="true"  
31:                  android:textSize="16sp"  
32:                  android:text="September 2014" />  
33:  </RelativeLayout>  

              Textview show_date_dayofweek จะใช้แสดงชื่อของวันเช่น วันจันทร์ วันอังคาร
              Textview show_date_day ใช้แสดงเลขวันที่
              Textview show_date_monthyear ใช้แสดงชื่อของเดือนและปี

              ต่อมาเรามาดูส่วนของ Code กันบ้าง

MainActivity.java

1:  package app.kamonwat.showdatewithtext;  
2:  import java.text.SimpleDateFormat;  
3:  import java.util.Calendar;  
4:  import android.annotation.SuppressLint;  
5:  import android.app.Activity;  
6:  import android.os.Bundle;  
7:  import android.widget.TextView;  
8:  public class MainActivity extends Activity {  
9:       private TextView txt_dayofweek, txt_day, txt_month_year;  
10:       final String[] MONTH = { "January", "February", "March", "April", "May",  
11:                 "June", "July", "August", "September", "October", "November",  
12:                 "December" };  
13:       private int pYear;  
14:       private int pMonth;  
15:       private int pDay;  
16:    @SuppressLint("SimpleDateFormat") @Override  
17:    protected void onCreate(Bundle savedInstanceState) {  
18:      super.onCreate(savedInstanceState);  
19:      setContentView(R.layout.activity_main);  
20:            txt_day = (TextView) findViewById(R.id.show_date_day);  
21:            txt_dayofweek = (TextView) findViewById(R.id.show_date_dayofweek);  
22:            txt_month_year = (TextView) findViewById(R.id.show_date_monthyear);  
23:            /** Get the current date */  
24:            Calendar cal = Calendar.getInstance();  
25:            pYear = cal.get(Calendar.YEAR);  
26:            pMonth = cal.get(Calendar.MONTH);  
27:            pDay = cal.get(Calendar.DAY_OF_MONTH);  
28:            String day = new SimpleDateFormat("EEEE").format(cal.getTime());  
29:            txt_day.setText("" + pDay);          //show day  
30:            txt_dayofweek.setText(day);          //show name of day  
31:            txt_month_year.setText(MONTH[pMonth] + " " + pYear);     //show month and year  
32:    }  
33:  }  

              สังเกตบรรทัดที่ 24 เราจะประกาศตัวแปร Calendar cal = Calendar.getInstance(); เพื่อเรียกใช้ปฏิทิน และจะเรียกวันที่เป็นวันปัจจุบัน
               บรรทัดที่ 25 จะใช้ตัวแปร pYear เก็บค่าของปี โดยใช้คำสั่ง cal.get(Calendar.YEAR); ค่าที่ได้จะเป็น 2014
               บรรทัดที่ 26 จะใช้ตัวแปร pMonth เก็บค่าของเดือน โดยใช้คำสั่ง cal.get(Calendar.MONTH); ค่าที่ได้จะเป็น 0 - 11
               บรรทัดที่ 27 จะใช้ตัวแปร pDay เก็บค่าของเดือน โดยใช้คำสั่ง cal.get(Calendar.DAY_OF_MONTH); ค่าที่ได้จะเป็น 1 - 31 แล้วแต่เดือน
               บรรทัดที่ 28 เราจะใช้ String เก็บชื่อของวันนั้นๆว่าเป็นวันอะไร โดยจะใช้คำสั่ง new SimpleDateFormat("EEEE").format(cal.getTime()); ค่าของ String จะได้ออกมาเป็น Monday, Thursday, ... แล้วแต่ว่าวันนั้นจะเป็นวันอะไร

               หลังจากได้ค่าที่จำเป็นทั้งหมดแล้วก็ทำการกำหนดให้ Textview แสดงค่าที่เราเก็บเอาไว้ สำหรับการแสดงชื่อเดือน ก็ใช้ Array String เก็บชื่อเดือนทั้ง 12 เดือนเอาไว้ก่อนแล้วค่อนใช้ pMonth เป็น Index ในการเรียกออกมาจาก Array

               ง่ายๆใช่มั้ยครับ แค่ดึงค่าจาก Calendar แล้วนำมาแสดงใน Textview เท่านั้นเอง

AndroidManifest.xml

1:  <?xml version="1.0" encoding="utf-8"?>  
2:  <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
3:    package="app.kamonwat.showdatewithtext"  
4:    android:versionCode="1"  
5:    android:versionName="1.0" >  
6:    <uses-sdk  
7:      android:minSdkVersion="14"  
8:      android:targetSdkVersion="21" />  
9:    <application  
10:      android:allowBackup="true"  
11:      android:icon="@drawable/ic_launcher"  
12:      android:label="@string/app_name"  
13:      android:theme="@style/AppTheme" >  
14:      <activity  
15:        android:name=".MainActivity"  
16:        android:label="@string/app_name" >  
17:        <intent-filter>  
18:          <action android:name="android.intent.action.MAIN" />  
19:          <category android:name="android.intent.category.LAUNCHER" />  
20:        </intent-filter>  
21:      </activity>  
22:    </application>  
23:  </manifest>  

Source Code
https://drive.google.com/file/d/0B3lD-OnLc3-mam96c3NJOEFYZXM/view?usp=sharing