Showing posts with label Android. Show all posts
Showing posts with label Android. Show all posts

Tuesday, 28 July 2015

Android Hello World (Part 2)

fanxtea.blogspot.com

Android Hello World (Part 2)

By Fanxtea | 1 Januari 2015




Sambungan...

  1. Create Projek Android
  2. Dalam Eclipse, pilih "File >> New >> Project..."

    "New Project" window,pilih "Android" >> "Android Application Project", dan penuhkan data yang diperlukan. Secara automatik Eclipse create semua fail dan konfigurasi yang diperlukan oleh Android.


    Gambar di atas semua folder dan fail selepas Eclipse berjaya created untuk projek Android.

  3. Aktiviti Hello World
  4. Cari fail aktiviti (.java class)yang telah dijana. Sedikit pengubahsuaian perlu dilakukan untuk mengeluarkan output satu string "Hello World".

    Fail:src/<nama_pakej>/MainActivity.java

    packagecom.fanxtea.helloworld; importandroid.app.Activity; importandroid.os.Bundle; importandroid.widget.TextView; publicclass MainActivity extends Activity { /** Called when the activity is first created. */ @Override publicvoid onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView text =newTextView(this); text.setText("Hello World - fanxtea.blogspot "); setContentView(text); } }


  5. Demo
  6. Klik kanan pada folder projek Android >>RunAs >> "Android Application" untuk kali pertama.

    Atau user boleh menggunakan icon "Run" yang terdapat pada toolbar.

    Aplikasi anda muncul pada AVD

    Tekan butang "Home", dan anda akan perasan bahawa aplikasi "HelloWorld" anda telah berjaya diinstall ke peranti Android maya anda.

    Untuk maklumat lebih lanjut, boleh rujuk ke page ini. - Android Development

Setup PATH untuk Java JDK


Setup PATH untuk Java JDK

  1.       Install Java JDK. Boleh muat turun disini 
  2.       Buka MyComputer >> Klik kanan >> properties >>  Advance system settings (sebelah kiri atas) >> dibawah tab Advanced >> klik Environment Variables…
  3.       Di dalam field System variables, wujud atau tidak variable PATH? Jika tidak klik New…
  4.       Popup New System Variableakan terpapar. Isikan seperti dibawah
       a.       Variable name: PATH (Semua huruf besar)
       b.      Variable value: C:\Program Files\Java\jdk1.7.0_<Version>\bin



  Nota : Pastikan anda install Java SDK di dalam C:\Program File bukan C:\Program File(x86)

Android ImageButton selector

fanxtea.blogspot.com

Android ImageButton selector

By Fanxtea | 1 Januari 2015



Android membolehkan anda untuk menukar imej butang bergantung kepada bentuk-bentuk yang berbeza seperti butang adalah fokus dan butang ditekan.

  1. Tambah Imej untuk Sumber
  2. Sediakan 3 imej untuk taip butang dan memasukkannya ke dalam "res/drawable" folder.

    a. gambar1.png - butang imej lalai.
    b. gambar2.png - paparkan apabila butang difokuskan.
    c. gambar3.png - paparkan apabila butang ditekan.

  3. Tambah Selector untuk butang yang berlainan jenis
  4. Fail : res/drawable/new_button.xml

    <?xmlversion="1.0"encoding="utf-8"?> <selectorxmlns:android="http://schemas.android.com/apk/res/android"> <itemandroid:drawable="@drawable/gambar1" android:state_pressed="true"/> <itemandroid:drawable="@drawable/gambar2" android:state_focused="true"/> <itemandroid:drawable="@drawable/gambar3"/> </selector>


  5. Tambah butang
  6. Fail : res/layout/activity_main.xml

    <?xmlversion="1.0"encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <Button android:id="@+id/imageButtonSelector" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/new_button"/> </LinearLayout>

  7. Kod
  8. Fail : MainActivity.java

    packagecom.fanxtea.helloworld; importandroid.app.Activity; importandroid.os.Bundle; importandroid.widget.Button; importandroid.widget.Toast; importandroid.view.View; importandroid.view.View.OnClickListener; publicclass MainActivity extends Activity { Button imageButton; @Override publicvoid onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); addListenerOnButton(); } publicvoid addListenerOnButton(){ imageButton=(Button) findViewById(R.id.imageButtonSelector); imageButton.setOnClickListener(new OnClickListener(){ @Override publicvoid onClick(View arg0){ Toast.makeText(MainActivity.this, "ImageButton (selector) is clicked!", Toast.LENGTH_SHORT).show(); } }); } }

  9. Demo

Android ImageView

fanxtea.blogspot.com

Android ImageView

By Fanxtea | 1 Januari 2015



Dalam Android, kita boleh menggunakan kelas "android.widget.ImageView" untuk memaparkan fail imej. Fail imej adalah mudah untuk digunakan tetapi sukar untuk menguasai, kerana skrin pelbagai dan dpi dalam peranti Android.

Dalam tutorial ini, kita tidak masuk dalam kira-kira dpi dan mengeluarkan pelbagai skrin, kami hanya menggunakan ImageView untuk memaparkan imej "png", apabila user klik pada butang, ia akan berubah kepada yang lain imej "png".

  1. Tambah imej untuk Sumber Drawable
  2. Tambah ImageView
  3. Buka fail "res/layout/activity_main.xml", hanya tambah ImageView dan butang untuk demonstrasi. Secara default, imageView1 akan memaparkan "gambar.png".

    Fail : res/layout/activity_main.xml

    <?xmlversion="1.0"encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/android"/> <Button android:id="@+id/btnChangeImage" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Change Image"/> </LinearLayout>

  4. Kod
  5. Fail : MainActivity.java

    packagecom.fanxtea.helloworld; importandroid.app.Activity; importandroid.os.Bundle; importandroid.widget.Button; importandroid.widget.ImageView; importandroid.view.View; importandroid.view.View.OnClickListener; publicclass MainActivity extends Activity { Button button; ImageView image; @Override publicvoid onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); addListenerOnButton(); } publicvoid addListenerOnButton(){ image=(ImageView) findViewById(R.id.imageView1); button=(Button) findViewById(R.id.btnChangeImage); button.setOnClickListener(new OnClickListener(){ @Override publicvoid onClick(View arg0){ image.setImageResource(R.drawable.gambar); } }); } }


  6. Demo
  7. Run aplikasi.

    Klik butang "Change Image".

    imej asal berubah.

Android Custom Dialog

fanxtea.blogspot.com

Android Custom Dialog

By Fanxtea | 1 Januari 2015



  1. Susun Atur Android (Android Layout)
  2. Dua fail XML, satu skrin utama dan satu custom dialog

    Fail : res/layout/activity_main.xml

    <?xmlversion="1.0"encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <Button android:id="@+id/buttonShowCustomDialog" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Paparkan Custom Dialog"/> </LinearLayout>

    Fail : res/layout/newpage.xml

    <?xmlversion="1.0"encoding="utf-8"?> <RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ImageView android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="5dp"/> <TextView android:id="@+id/text" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="#00FFFF" android:layout_toRightOf="@+id/image"/>/> <Button android:id="@+id/dialogButtonOK" android:layout_width="100px" android:layout_height="wrap_content" android:text=" Ok " android:layout_marginTop="5dp" android:layout_marginRight="5dp" android:layout_below="@+id/image" /> </RelativeLayout>

  3. Kod
  4. Fail : MainActivity.java

    packagecom.fanxtea.helloworld; importandroid.app.Activity; importandroid.app.Dialog; importandroid.content.Context; importandroid.os.Bundle; importandroid.view.View; importandroid.view.View.OnClickListener; importandroid.widget.Button; importandroid.widget.ImageView; importandroid.widget.TextView; publicclass MainActivity extends Activity { finalContext context =this; privateButton button; publicvoid onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button=(Button) findViewById(R.id.buttonShowCustomDialog); // add button listener button.setOnClickListener(new OnClickListener(){ @Override publicvoid onClick(View arg0){ // custom dialog finalDialog dialog =newDialog(context); dialog.setContentView(R.layout.newpage); dialog.setTitle("Tajuk..."); // set the custom dialog components - text, image and button TextView text =(TextView)dialog.findViewById(R.id.text); text.setText("Contoh Android custom dialog!"); ImageView image =(ImageView)dialog.findViewById(R.id.image); image.setImageResource(R.drawable.ic_launcher); Button dialogButton =(Button)dialog.findViewById(R.id.dialogButtonOK); // if button is clicked, close the custom dialog dialogButton.setOnClickListener(new OnClickListener(){ @Override publicvoid onClick(View v){ dialog.dismiss(); } }); dialog.show(); } }); } }


  5. Demo
  6. Run aplikasi.

Android Promt User Input Dialog

fanxtea.blogspot.com

Android Promt User Input Dialog

By Fanxtea | 1 Januari 2015



Dalam tutorial ini, saya akan menambah baik contoh amaran dialog. Untuk membuat ia dapat menerima input daripada user sama seperti PromptDialog. Lebih khusus, ini adalah satu contoh pengubahsuaian AlertDialog.

  1. Susun Atur Fail
  2. Dua layout diperlukan dalam tutorial ini.
    1. res/layout/activity_main.xml - Menu utama
    2. res/layout/newpage.xml - Prompt Dialog


    Fail : res/layout/activity_main.xml

    <?xmlversion="1.0"encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <Button android:id="@+id/buttonPrompt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Paparkan Prompt Dialog"/> <EditText android:id="@+id/editTextResult" android:layout_width="match_parent" android:layout_height="wrap_content"> </EditText> </LinearLayout>

    Fail : res/layout/newpage.xml

    <?xmlversion="1.0"encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/layout_root" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:padding="10dp"> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Type Your Message : " android:textAppearance="?android:attr/textAppearanceLarge"/> <EditText android:id="@+id/editTextDialogUserInput" android:layout_width="match_parent" android:layout_height="wrap_content"> <requestFocus/> </EditText> </LinearLayout>

  3. Kod
  4. Fail : MainActivity.java

    packagecom.fanxtea.helloworld; importandroid.app.Activity; importandroid.app.AlertDialog; importandroid.content.Context; importandroid.content.DialogInterface; importandroid.os.Bundle; importandroid.view.LayoutInflater; importandroid.view.View; importandroid.view.View.OnClickListener; importandroid.widget.Button; importandroid.widget.EditText; publicclass MainActivity extends Activity { finalContext context =this; privateButton button; private EditText result; publicvoid onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // components from main.xml button=(Button) findViewById(R.id.buttonPrompt); result=(EditText) findViewById(R.id.editTextResult); // add button listener button.setOnClickListener(new OnClickListener(){ @Override publicvoid onClick(View arg0){ // get prompts.xml view LayoutInflater li = LayoutInflater.from(context); View promptsView = li.inflate(R.layout.newpage, null); AlertDialog.Builder alertDialogBuilder = newAlertDialog.Builder(context); // set prompts.xml to alertdialog builder alertDialogBuilder.setView(promptsView); final EditText userInput =(EditText) promptsView .findViewById(R.id.editTextDialogUserInput); // set dialog message alertDialogBuilder .setCancelable(false) .setPositiveButton("OK", new DialogInterface.OnClickListener(){ publicvoid onClick(DialogInterface dialog,int id){ // get user input and set it to result // edit text result.setText(userInput.getText()); } }) .setNegativeButton("Cancel", new DialogInterface.OnClickListener(){ publicvoid onClick(DialogInterface dialog,int id){ dialog.cancel(); } }); // create alert dialog AlertDialog alertDialog =alertDialogBuilder.create(); // show it alertDialog.show(); } }); } }


  5. Demo
  6. Run aplikasi.

    Klik butang "Paparkan Prompt Dialog".

    Isikan mesej anda dan klik "Ok".

    Mesej anda akan muncul di menu utama.


Amaran Dialog Android (Android Alert Dialog)

fanxtea.blogspot.com

Amaran Dialog Android (Android Alert Dialog)

By Fanxtea | 1 Januari 2015



Di dalam tutorial ini, saya akan tunjukkan bagaimana untuk memaparkan satu antara muka amaran dialog seperti:

  1. Tajuk, mesej yang ingin dipaparkan, butang dan fungsi butang onClick.
  2. Kemudian menggunakannya di atas builder untuk amaran dialog and memaparkannya


  1. Susun Atur Android (Android Layout)
  2. Fail: res/layout/activity_main.xml

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/buttonAlert" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Paparkan kotak amaran" /> </LinearLayout>


  3. Kod
  4. Apabila user klik pada butang ini, memaparkan kotak amaran, dengan antara muka yang telah ditetapkan anda dialog amaran.

    Fail: MainActivity.java

    package com.fanxtea.helloworld; import android.app.Activity; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity { final Context context = this; private Button button; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button) findViewById(R.id.buttonAlert); // add button listener button.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context); // set title alertDialogBuilder.setTitle("Tajuk"); // set dialog message alertDialogBuilder .setMessage("Klik yes untuk tutup!") .setCancelable(false) .setPositiveButton("Yes", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog,int id) { // if this button is clicked, close // current activity MainActivity.this.finish(); } }) .setNegativeButton("No", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog,int id) { // if this button is clicked, just close // the dialog box and do nothing dialog.cancel(); } }); // create alert dialog AlertDialog alertDialog = alertDialogBuilder.create(); // show it alertDialog.show(); } }); } }


  5. Demo
  6. Run aplikasi.

    Klik butang "Paparkan kotak amaran".

    Dialog amaran muncul dan klik "Yes" untuk tutup.

    Apabila klik "Yes" aplikasi anda akan tutup dan terus pergi ke "Home"


Android Download Progress Bar

fanxtea.blogspot.com

Android Download Progress Bar

By Fanxtea | 1 Januari 2015



Di dalam Android, bar progress sangat berguna untuk memberi tahu user dimana sesuatu tugas itu mengambil masa yang lama untuk selesai.

Di dalam tutorial, saya akan menunjukkan bagaimana untuk memaparkan bar dialog progress untuk memberitahu user yang tugas masih berjalan, dan juga bagaimana untuk meningkatkan status bar progress sehingga tugas selesai.

  1. Tambah butang
  2. Buka fail "res/layout/activity_main.xml" dan tambah satu butang biasa untuk demo

    Fail : res/layout/activity_main.xml

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/btnStartProgress" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Muat Turun Fail" /> </LinearLayout>


  3. Kod
  4. Kunci untuk menggunakan progress bar ialah menggunakan "Thread" untuk menjalankan masa mengambil tugas anda dan satu lagi "Thread" untuk mengemaskini status progress bar dengan sewajarnya.

    Fail : MainActivity.java

    package com.fanxtea.helloworld; import android.app.Activity; import android.app.ProgressDialog; import android.os.Bundle; import android.os.Handler; import android.widget.Button; import android.view.View; import android.view.View.OnClickListener; public class MainActivity extends Activity { Button btnStartProgress; ProgressDialog progressBar; private int progressBarStatus = 0; private Handler progressBarHandler = new Handler(); private long fileSize = 0; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); addListenerOnButton(); } public void addListenerOnButton() { btnStartProgress = (Button) findViewById(R.id.btnStartProgress); btnStartProgress.setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { // prepare for a progress bar dialog progressBar = new ProgressDialog(v.getContext()); progressBar.setCancelable(true); progressBar.setMessage("Muat turun fail ..."); progressBar.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); progressBar.setProgress(0); progressBar.setMax(100); progressBar.show(); //reset progress bar status progressBarStatus = 0; //reset filesize fileSize = 0; new Thread(new Runnable() { public void run() { while (progressBarStatus < 100) { // process some tasks progressBarStatus = doSomeTasks(); // your computer is too fast, sleep 1 second try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } // Update the progress bar progressBarHandler.post(new Runnable() { public void run() { progressBar.setProgress(progressBarStatus); } }); } // ok, file is downloaded, if (progressBarStatus >= 100) { // sleep 2 seconds, so that you can see the 100% try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } // close the progress bar dialog progressBar.dismiss(); } } }).start(); } }); } // file download simulator... a really simple public int doSomeTasks() { while (fileSize <= 1000000) { fileSize++; if (fileSize == 100000) { return 10; } else if (fileSize == 200000) { return 20; } else if (fileSize == 300000) { return 30; } // ...add your own } return 100; } }

  5. Demo
  6. Run aplikasi.

    Klik butang "Muat Turun Fail".

    Progress bar akan muncul dan menunjukkan progress muat turun anda.


Masa Pemetik Android (Android Time Picker)

fanxtea.blogspot.com

Masa Pemetik Android (Android Time Picker)

By Fanxtea | 1 Januari 2015



Di dalam android, kita boleh menggunakan kelas "android.widget.TimePicker" untuk menggunakan komponen masa pemetik untuk memilih jam dan minit.

Di dalam tutorial ini, saya akan menunjukkan bagaimana untuk menggunakan masa pemetik via "android.widget.TimePicker" dalam page semasa dan juga didalam kotak dialog via "android.app.TimePickerDialog". Tambahan, saya juga akan menunjukkan bagaimana untuk menentukan jam dan minit dalam komponen masa pemetik.

  1. Masa Pemetik (TimePicker)
  2. Buka fail "res/layout/activity_main.xml" dan tambah masa pemetik, label dan butang untuk demo.

    Fail : res/layout/activity_main.xml

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/btnChangeTime" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Change Time" /> <TextView android:id="@+id/lblTime" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Current Time (H:M): " android:textAppearance="?android:attr/textAppearanceLarge" /> <TextView android:id="@+id/tvTime" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" android:textAppearance="?android:attr/textAppearanceLarge" /> <TimePicker android:id="@+id/timePicker1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>


  3. Kod

  4. Fail : MainActivity.java

    package com.fanxtea.helloworld; import java.util.Calendar; import android.app.Activity; import android.app.Dialog; import android.app.TimePickerDialog; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; import android.widget.TimePicker; public class MainActivity extends Activity { private TextView tvDisplayTime; private TimePicker timePicker1; private Button btnChangeTime; private int hour; private int minute; static final int TIME_DIALOG_ID = 999; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); setCurrentTimeOnView(); addListenerOnButton(); } // display current time public void setCurrentTimeOnView() { tvDisplayTime = (TextView) findViewById(R.id.tvTime); timePicker1 = (TimePicker) findViewById(R.id.timePicker1); final Calendar c = Calendar.getInstance(); hour = c.get(Calendar.HOUR_OF_DAY); minute = c.get(Calendar.MINUTE); // set current time into textview tvDisplayTime.setText( new StringBuilder().append(pad(hour)) .append(":").append(pad(minute))); // set current time into timepicker timePicker1.setCurrentHour(hour); timePicker1.setCurrentMinute(minute); } public void addListenerOnButton() { btnChangeTime = (Button) findViewById(R.id.btnChangeTime); btnChangeTime.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { showDialog(TIME_DIALOG_ID); } }); } @Override protected Dialog onCreateDialog(int id) { switch (id) { case TIME_DIALOG_ID: // set time picker as current time return new TimePickerDialog(this, timePickerListener, hour, minute,false); } return null; } private TimePickerDialog.OnTimeSetListener timePickerListener = new TimePickerDialog.OnTimeSetListener() { public void onTimeSet(TimePicker view, int selectedHour, int selectedMinute) { hour = selectedHour; minute = selectedMinute; // set current time into textview tvDisplayTime.setText( new StringBuilder().append(pad(hour)) .append(":").append(pad(minute))); // set current time into timepicker timePicker1.setCurrentHour(hour); timePicker1.setCurrentMinute(minute); } }; private static String pad(int c) { if (c >= 10) return String.valueOf(c); else return "0" + String.valueOf(c); } }


  5. Demo
  6. Run aplikasi.

    Default akan memaparkan masa semasa berdasarkan peranti.

    Klik butang "Change Time" dan popup akan muncul. Set masa kemudian klik butang "Set".

    Masa pada time picker dan text box akan berubah mengikut masa yang ditetapkan.


Tarikh Pemetik Android (Android Date Picker)

fanxtea.blogspot.com

Tarikh Pemetik Android (Android Date Picker)

By Fanxtea | 1 Januari 2015



Di dalam Android, kita boleh menggunakan kelas "android.widget.DatePicker" untuk menggunakan komponen tarikh pemetik untuk memilih hari, bulan dan tahun didalam antara muka user yang telah ditetapkan.

Di dalam tutorial ini, saya akan menunjukkan bagaimana untuk membuat komponen tarikh pemetik di dalam page semasa via "android.widget.DatePicker" dan juga di dalam kotak dialog via "android.app.DatePickerDialog" . Tambahan, saya juga akan menunjukkan bagaimana untuk menetapkan tarikh dalam komponen tarikh pemetik.

  1. DatePicker
  2. Buka fail "res/layout/activity_main.xml", tambah tarikh pemetik, label dan butang untuk demo.

    Fail : res/layout/activity_main.xml

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/btnChangeDate" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Change Date" /> <TextView android:id="@+id/lblDate" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Current Date (M-D-YYYY): " android:textAppearance="?android:attr/textAppearanceLarge" /> <TextView android:id="@+id/tvDate" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" android:textAppearance="?android:attr/textAppearanceLarge" /> <DatePicker android:id="@+id/dpResult" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>


  3. Kod

  4. Fail : MainActivity.java

    package com.fanxtea.helloworld; import java.util.Calendar; import android.app.Activity; import android.app.DatePickerDialog; import android.app.Dialog; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.DatePicker; import android.widget.TextView; public class MainActivity extends Activity { private TextView tvDisplayDate; private DatePicker dpResult; private Button btnChangeDate; private int year; private int month; private int day; static final int DATE_DIALOG_ID = 999; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); setCurrentDateOnView(); addListenerOnButton(); } // display current date public void setCurrentDateOnView() { tvDisplayDate = (TextView) findViewById(R.id.tvDate); dpResult = (DatePicker) findViewById(R.id.dpResult); final Calendar c = Calendar.getInstance(); year = c.get(Calendar.YEAR); month = c.get(Calendar.MONTH); day = c.get(Calendar.DAY_OF_MONTH); // set current date into textview tvDisplayDate.setText(new StringBuilder() // Month is 0 based, just add 1 .append(month + 1).append("-").append(day).append("-") .append(year).append(" ")); // set current date into datepicker dpResult.init(year, month, day, null); } public void addListenerOnButton() { btnChangeDate = (Button) findViewById(R.id.btnChangeDate); btnChangeDate.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { showDialog(DATE_DIALOG_ID); } }); } @Override protected Dialog onCreateDialog(int id) { switch (id) { case DATE_DIALOG_ID: // set date picker as current date return new DatePickerDialog(this, datePickerListener, year, month,day); } return null; } private DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() { // when dialog box is closed, below method will be called. public void onDateSet(DatePicker view, int selectedYear, int selectedMonth, int selectedDay) { year = selectedYear; month = selectedMonth; day = selectedDay; // set selected date into textview tvDisplayDate.setText(new StringBuilder().append(month + 1) .append("-").append(day).append("-").append(year) .append(" ")); // set selected date into datepicker also dpResult.init(year, month, day, null); } }; }


  5. Demo
  6. Run aplikasi.

    Default skrin akan memaparkan kalendar dan tarikh semasa mengikut peranti anda.

    Tekan pada butang "Change Date dan akan muncul popup dan klik "Set".

    TextBox dan DatePicker akan berubah mengikut tarikh yang di set.

Android Spinner (Drop Down List)

fanxtea.blogspot.com

Android Spinner (Drop Down List)

By Fanxtea | 1 Januari 2015



Di dalam Android, kita boleh menggunakan kelas "android.widget.Spinner" untuk menggunakan kotak senarai (dropdown).

Didalam tutorial ini, saya akan menunjukkan bagaimana untuk melakukan tugas berikut :

  1. Menggunakan Spinner dalam XML dan memuatkan senarai pilihan menggunakan fail XML juga.
  2. Menggunakan Spinner yang lain dalam XML dan memuatkan senarai pilihan melalui kod dinamik.
  3. Menggunakan listener pada Spinner, lancarkan apabila user memilih nilai dalam Spinner.


  1. Senarai list didalam Spinner
  2. Buka fail "res/layout/strings.xml".

    Fail : res/layout/strings.xml

    <?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">MyAndroidApp</string> <string name="country_prompt">Pilih Negara</string> <string-array name="country_arrays"> Malaysia</item> United States</item> Indonesia</item> France</item> Italy</item> Singapore</item> New Zealand</item> India</item> </string-array> </resources>

  3. Spinner (Senarai DropDown)
  4. Buka fail "res/layout/activity_main.xml", tambah dua jenis Spinner dan satu butang.
    1. "spinner1", "android:entries" mewakili list pemilihan dalam Spinner.
    2. "spinner2", list pemilihan akan ditentukan dalam kod kemudian.

    Fail : res/layout/activity_main.xml

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Spinner android:id="@+id/spinner1" android:layout_width="match_parent" android:layout_height="wrap_content" android:entries="@array/country_arrays" android:prompt="@string/country_prompt" /> <Spinner android:id="@+id/spinner2" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/btnSubmit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Submit" /> </LinearLayout>


  5. Kod
  6. Baca dan fahamkan.

    Fail : MainActivity.java

    package com.fanxtea.helloworld; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.Spinner; import android.widget.Toast; public class MainActivity extends Activity { private Spinner spinner1, spinner2; private Button btnSubmit; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); addItemsOnSpinner2(); addListenerOnButton(); addListenerOnSpinnerItemSelection(); } // add items into spinner dynamically public void addItemsOnSpinner2() { spinner2 = (Spinner) findViewById(R.id.spinner2); List list = new ArrayList(); list.add("list 1"); list.add("list 2"); list.add("list 3"); ArrayAdapter dataAdapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, list); dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner2.setAdapter(dataAdapter); } public void addListenerOnSpinnerItemSelection() { spinner1 = (Spinner) findViewById(R.id.spinner1); spinner1.setOnItemSelectedListener(new CustomOnItemSelectedListener()); } // get the selected dropdown list value public void addListenerOnButton() { spinner1 = (Spinner) findViewById(R.id.spinner1); spinner2 = (Spinner) findViewById(R.id.spinner2); btnSubmit = (Button) findViewById(R.id.btnSubmit); btnSubmit.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainActivity.this, "OnClickListener : " + "\nSpinner 1 : "+ String.valueOf(spinner1.getSelectedItem()) + "\nSpinner 2 : "+ String.valueOf(spinner2.getSelectedItem()), Toast.LENGTH_SHORT).show(); } }); } }


    Fail : CustomOnItemSelectedListener.java

    package com.fanxtea.helloworld; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.Toast; public class CustomOnItemSelectedListener implements OnItemSelectedListener { public void onItemSelected(AdapterView parent, View view, int pos,long id) { Toast.makeText(parent.getContext(), "OnItemSelectedListener : " + parent.getItemAtPosition(pos).toString(), Toast.LENGTH_SHORT).show(); } @Override public void onNothingSelected(AdapterView arg0) { // TODO Auto-generated method stub } }

  7. Demo
  8. Run aplikasi.

    Default skrin memaparkan 2 jenis list dan satu butang "Submit".

    Listpertama memilih "Singapore".

    Toast Message menunjukkan anda telah memilih Singapore muncul.

    Tukar list kedua dan tekan butang "Submit" untuk melihat hasil perubahan.


Android Rating Bar

fanxtea.blogspot.com

Android Rating Bar

By Fanxtea | 1 Januari 2015



Didalam Android, kita boleh menggunakan "android.widget.RatingBar" untuk mempaparkan komponen rating bar dalam bentuk bintang. User dibenarkan sentuh, drag atau klik pada bintang untuk menentukan jumlah rating dengan mudah.

Dalam tutorial ini, saya akan menunjukkan bagaimana untuk XML memaparkan satu rating bar, beberapa textView dan satu butang. Apabila user klik pada rating bar, nilai rating yang dipilih akan dipaparkan pada textView. Seterusnya apabila user klik pada butang, nilai rating akan dipaparkan dalam bentuk mesej terapung (toast message).

  1. Bar Kedudukan (Rating Bar)
  2. Buka fail "res/layout/activity_main.xml" dan masukkan semua komponen seperti dibawah.

    Fail : res/layout/activity_main.xml

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/lblRateMe" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Penilaian" android:textAppearance="?android:attr/textAppearanceMedium" /> <RatingBar android:id="@+id/ratingBar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:numStars="4" android:stepSize="1.0" android:rating="2.0" /> <Button android:id="@+id/btnSubmit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hantar" /> <LinearLayout android:id="@+id/linearLayout1" android:layout_width="match_parent" android:layout_height="wrap_content" > <TextView android:id="@+id/lblResult" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Keputusan : " android:textAppearance="?android:attr/textAppearanceLarge" /> <TextView android:id="@+id/txtRatingValue" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" android:textAppearance="?android:attr/textAppearanceSmall" /> </LinearLayout> </LinearLayout>


  3. Kod
  4. Teliti kod ini dan anda akan faham.

    Fail: MainActivity.java

    package com.fanxtea.helloworld; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.RatingBar; import android.widget.RatingBar.OnRatingBarChangeListener; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { private RatingBar ratingBar; private TextView txtRatingValue; private Button btnSubmit; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); addListenerOnRatingBar(); addListenerOnButton(); } public void addListenerOnRatingBar() { ratingBar = (RatingBar) findViewById(R.id.ratingBar); txtRatingValue = (TextView) findViewById(R.id.txtRatingValue); //if rating value is changed, //display the current rating value in the result (textview) automatically ratingBar.setOnRatingBarChangeListener(new OnRatingBarChangeListener() { public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) { txtRatingValue.setText(String.valueOf(rating)); } }); } public void addListenerOnButton() { ratingBar = (RatingBar) findViewById(R.id.ratingBar); btnSubmit = (Button) findViewById(R.id.btnSubmit); //if click on me, then display the current rating value. btnSubmit.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainActivity.this, String.valueOf(ratingBar.getRating()), Toast.LENGTH_SHORT).show(); } }); } }

  5. Demo
  6. Run aplikasi.

    Default akan menunjukkan rating bar dua bintang.

    Selepas rating bar ditekan Keputusan akan keluar dan selepas butang "Hantar" ditekan, toast message akan muncul.

Android Toggle Button

fanxtea.blogspot.com

Android Toggle Button

By Fanxtea | 1 Januari 2015



Dalam Android, "android.widget.ToggleButton" ialah kelas khas untuk memberikan fungsi butang yang hanya mempunyai dua keadaan. Contohnya "on" dan "Off". Ia ialah pilihan terbaik berbanding butang radio untuk turn on atau turn off sesuatu fungsi.

Dalam tutorial ini, saya akan menunjukkan bagaimana menggunakan XML untuk mencipta dua butang toggle, satu butang toggle yang biasa, dan satu lagi butang toggle yang telah di customize. Bila user klik pada butang, ia akan menunjukkan keadaan sekarang yang ada pada kedua dua butang toggle sama ada On or Off.

  1. Custom String
  2. Buka fail "res/layout/string.xml", tambah string untuk butang toggle

    Fail : res/value/string.xml

    <?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">MyAndroidApp <string name="toggle_turn_on">Hidupkan <string name="toggle_turn_off">Matikan <string name="btn_display">Display </resources>

  3. Layout Butang Toggle
  4. Buka fail "res/layout/activity_main.xml". Tambah dua butang toggle dan satu butang biasa.

    Fail: res/layout/activity_main.xml

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <ToggleButton android:id="@+id/toggleButton1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="ToggleButton" /> <ToggleButton android:id="@+id/toggleButton2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textOn="@string/toggle_turn_on" android:textOff="@string/toggle_turn_off" android:checked="true" /> <Button android:id="@+id/btnDisplay" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/btn_display" /> </LinearLayout>

    Nota : Butang "toggleButton2" telah dibuat pengubahsuaian untuk memaparkan teks On and Off menjadi "Hidupkan" dan "Matikan".

  5. Kod
  6. Didalam aktiviti "onCreate()", masukkan listener.

    Fail : MainActivity.java

    package com.fanxtea.helloworld; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; import android.widget.ToggleButton; public class MainActivity extends Activity { private ToggleButton toggleButton1, toggleButton2; private Button btnDisplay; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); addListenerOnButton(); } public void addListenerOnButton() { toggleButton1 = (ToggleButton) findViewById(R.id.toggleButton1); toggleButton2 = (ToggleButton) findViewById(R.id.toggleButton2); btnDisplay = (Button) findViewById(R.id.btnDisplay); btnDisplay.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { StringBuffer result = new StringBuffer(); result.append("toggleButton1 : ").append(toggleButton1.getText()); result.append("\ntoggleButton2 : ").append(toggleButton2.getText()); Toast.makeText(MainActivity.this, result.toString(), Toast.LENGTH_SHORT).show(); } }); } }

  7. Demo
  8. Run aplikasi.

    Default butang toggle "Hidupkan" diaktifkan.


    Selepas ketiga-tiga butang ditekan.

Android Radio Button

fanxtea.blogspot.com

Android Radio Button

By Fanxtea | 1 Januari 2015



Dalam Android, kamu boleh menggunakan kelas "android.widget.RadioButton" untuk memberi fungsi butang radio. Untuk butang radio biasanya dikumpulankan dan akan menggunakan kelas "android.widget.RadioGroup". Jika butang radio telah dikumpulankan, apabila satu butang radio telah di tandakan, semua yang didalam group tersebut akan dinyah tandakan secara automatik.

Di dalam tutorial ini, saya akan menunjukkan bagaimana untuk menggunakan XML dengan mencipta dua butang radio di dalam satu kumpulan menggunakan kumpulan radio. Apabila di tanda, ia akan memaparkan butang radio yang dipilih.

  1. Custom String
  2. Buka fail "res/values/string.xml" untuk menggantikan string bagi butang radio.

    Fail: res/values/string.xml

    <?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello World <string name="app_name">HelloWorld <string name="radio_male">Lelaki <string name="radio_female">Perempuan <string name="btn_display">Paparkan </resources>

  3. Layout Android
  4. Buka fail "res/layout/activity_main.xml", tambah satu kumpulan radio, dua butang radio dan satu butang, didalam LinearLayout.

    Fail: res/layout/activity_main.xml

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <RadioGroup android:id="@+id/radioSex" android:layout_width="wrap_content" android:layout_height="wrap_content" > <RadioButton android:id="@+id/radioMale" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/radio_male" android:checked="true" /> <RadioButton android:id="@+id/radioFemale" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/radio_female" /> </RadioGroup> <Button android:id="@+id/btnDisplay" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/btn_display" /> </LinearLayout>

    Nota: Untuk membuat butang radio dipilih secara default, masukkan "android :checked="true"" didalam unsur butang radio. Dalam contoh ini, butang radio untuk "Lelaki" dipilih secara default.

  5. Kod
  6. Didalam aktiviti "onCreate", letakkan klik listener pada butang.

    Fail : MainActivity.java

    package com.fanxtea.helloworld; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.Toast; public class MainActivity extends Activity { private RadioGroup radioSexGroup; private RadioButton radioSexButton; private Button btnDisplay; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); addListenerOnButton(); } public void addListenerOnButton() { radioSexGroup = (RadioGroup) findViewById(R.id.radioSex); btnDisplay = (Button) findViewById(R.id.btnDisplay); btnDisplay.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // get selected radio button from radioGroup int selectedId = radioSexGroup .getCheckedRadioButtonId(); // find the radiobutton by returned id radioSexButton = (RadioButton) findViewById(selectedId); Toast.makeText(MainActivity.this, radioSexButton.getText(), Toast.LENGTH_SHORT).show(); } }); } }

  7. Demo
  8. Run aplikasi.

    Default lelaki telah ditanda.

    Apabila butang "Display" ditekan akan memaparkan butang radio yang ditanda sahaja.