Android Studio untuk pemula, Bagian 2: Jelajahi dan buat kode aplikasi

Diperbarui: Januari 2020.

Di Bagian 1 dari pengantar pemula untuk Android Studio ini, Anda menyiapkan Android Studio di lingkungan pengembangan Anda dan mengenal antarmuka pengguna. Sekarang, di Bagian 2, Anda akan membuat kode aplikasi pertama Anda.

Aplikasi bergerak animasi terdiri dari satu aktivitas, yang menampilkan karakter robot Android Google dan tombol untuk menghidupkan karakter tersebut. Mengklik tombol menyebabkan karakter secara bertahap berubah warna dari hijau menjadi merah menjadi biru, lalu kembali menjadi hijau. Meskipun aplikasinya tidak terlalu berguna, menulisnya akan membantu Anda merasa nyaman menggunakan Android Studio. Di Bagian 3, Anda akan membangun dan menjalankan aplikasi menggunakan emulator perangkat Android dan tablet Kindle Fire.

Perhatikan bahwa seri ini telah diperbarui untuk Android Studio 3.2.1, rilis stabil saat ini sejak tulisan ini dibuat.

Project Android Studio dan jendela editor

Saya memperkenalkan jendela utama Android Studio di akhir Bagian 1. Jendela ini dibagi menjadi beberapa area, termasuk jendela Proyek tempat Anda mengidentifikasi file sumber daya aplikasi, dan berbagai jendela editor tempat Anda akan menulis kode dan menentukan sumber daya untuk aplikasi seluler di Android Studio. Jendela Project dan jendela editor ditunjukkan pada Gambar 1.

Jeff Friesen

Jendela Project menyoroti W2A , yang merupakan nama W2A.javafile sumber aplikasi (meskipun .javaekstensi file tidak ditampilkan). Sesuai dengan W2A adalah jendela editor, dicapai dengan mengklik dua kali W2A di jendela Proyek. Jendela editor menampilkan konten file saat ini, dalam hal ini kode sumber kerangka Java untuk aktivitas utama aplikasi.

Setiap jendela editor dikaitkan dengan sebuah tab. Misalnya, jendela editor W2A dikaitkan dengan tab W2A.java . Tab kedua yang diidentifikasi sebagai main.xml (tata letak berbasis XML default untuk aktivitas utama aplikasi) juga ditampilkan. Anda berpindah dari satu jendela editor ke jendela lainnya dengan mengklik tab jendela.

unduh Dapatkan kodenya Unduh kode sumber untuk aplikasi contoh Android: W2A.java. Dibuat oleh Jeff Friesen untuk JavaWorld.

Aplikasi contoh Android

Aplikasi contoh ( W2A.java ) terdiri dari aktivitas utama yang menampilkan karakter robot Android dan tombol. Saat pengguna menekan tombol, robot bergerak melalui serangkaian warna. Di bagian ini, kita akan menjelajahi kode sumber dan sumber daya aktivitas.

Jelajahi dan kodekan aplikasi contoh Android

Kode sumber aktivitas disimpan dalam file W2A.java, disajikan dalam Daftar 1.

Daftar 1. W2A.java

 package ca.javajeff.w2a; import android.app.Activity; import android.graphics.drawable.AnimationDrawable; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.ImageView; public class W2A extends Activity { AnimationDrawable androidAnimation; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ImageView androidImage = (ImageView) findViewById(R.id.android); androidImage.setBackgroundResource(R.drawable.android_animate); androidAnimation = (AnimationDrawable) androidImage.getBackground(); final Button btnAnimate = (Button) findViewById(R.id.animate); View.OnClickListener ocl; ocl = new View.OnClickListener() { @Override public void onClick(View v) { androidAnimation.stop(); androidAnimation.start(); } }; btnAnimate.setOnClickListener(ocl); } } 

The W2A.javaberkas dimulai dengan pernyataan paket , yang nama-nama paket ( ca.javajeff.w2a) yang menyimpan W2Akelas. Ini diikuti oleh serangkaian pernyataan impor untuk berbagai jenis Android API. Selanjutnya, kode menjelaskan W2Akelas, yang diperluas android.app.Activity.

W2Apertama-tama mendeklarasikan androidAnimationbidang instance tipe android.graphics.drawable.AnimationDrawable. Objek berjenis AnimationDrawablemendeskripsikan animasi frame-by-frame, di mana drawable saat ini diganti dengan drawable berikutnya dalam urutan animasi.

Apa itu drawable?

Sebuah ditarik adalah sesuatu yang dapat ditarik, seperti gambar. AnimationDrawablesecara tidak langsung memperluas android.graphics.drawable.Drawablekelas abstrak , yang merupakan abstraksi umum untuk drawable.

Metode onCreate ()

Semua pekerjaan aplikasi berlangsung di W2Aoverride 's onCreate(Bundle)metode: tidak ada metode lain yang diperlukan, yang membantu untuk menjaga aplikasi ini sederhana.

onCreate(Bundle) pertama-tama panggil metode superclass dengan nama yang sama, aturan yang harus diikuti oleh semua metode aktivitas yang menimpa.

Metode ini kemudian dijalankan setContentView(R.layout.main)untuk membuat antarmuka pengguna aplikasi. R.layout.mainadalah pengenal (ID) untuk sumber daya aplikasi, yang berada di file terpisah. Anda menafsirkan ID ini sebagai berikut:

  • Radalah nama kelas yang dibuat saat aplikasi dibuat. Kelas ini dinamai Rkarena isinya mengidentifikasi berbagai jenis sumber daya aplikasi, termasuk tata letak, gambar, string, dan warna.
  • layoutadalah nama kelas yang bertingkat di dalamnya R. Sumber daya aplikasi yang ID-nya disimpan di kelas ini menjelaskan sumber daya tata letak tertentu. Setiap jenis sumber daya aplikasi dikaitkan dengan kelas bertingkat yang dinamai dengan cara yang serupa. Misalnya, stringmengidentifikasi sumber daya string.
  • mainadalah nama intkonstanta berbasis yang dideklarasikan di dalamnya layout. ID sumber daya ini mengidentifikasi sumber daya tata letak utama. Secara khusus, mainmengacu pada main.xmlfile yang menyimpan informasi tata letak aktivitas utama. mainadalah W2Asatu-satunya sumber daya tata letak.

Melewati R.layout.mainuntuk Activity's void setContentView(int layoutResID)metode menginstruksikan Android untuk membuat layar user interface menggunakan informasi tata letak disimpan dalam main.xml. Di balik layar, Android membuat komponen antarmuka pengguna yang dijelaskan dalam main.xmldan memposisikannya di layar perangkat seperti yang ditentukan oleh main.xmldata tata letak.

Layar ini didasarkan pada tampilan (abstraksi komponen antarmuka pengguna) dan grup tampilan (tampilan yang mengelompokkan komponen antarmuka pengguna terkait). Tampilan adalah contoh kelas yang mensubkelas android.view.Viewkelas dan analog dengan komponen AWT / Swing. Grup tampilan adalah instance kelas yang mensubkelas android.view.ViewGroupkelas abstrak dan serupa dengan wadah AWT / Swing. Android merujuk pada tampilan tertentu (seperti tombol atau spinner) sebagai widget .

Melanjutkan, onCreate(Bundle)mengeksekusi ImageView androidImage = (ImageView) findViewById(R.id.android);. Panggilan pertama ini pernyataan View's View findViewById(int id)metode untuk menemukan android.widget.ImageViewunsur dinyatakan dalam main.xmldan diidentifikasi sebagai android. Ini membuat instance ImageViewdan menginisialisasinya ke nilai yang dideklarasikan dalam main.xmlfile. Pernyataan tersebut kemudian menyimpan referensi objek ini dalam variabel lokal androidImage.

ImageView dan AnimationDrawable

Selanjutnya, androidImage.setBackgroundResource(R.drawable.android_animate);pernyataan tersebut memanggil metode ImageViewinherited (from View) void setBackgroundResource(int resID), menyetel latar belakang tampilan ke sumber daya yang diidentifikasi oleh resID. The R.drawable.android_animateArgumen mengidentifikasi file XML bernama android_animate.xml(disajikan kemudian), yang menyimpan informasi tentang animasi, dan yang disimpan di res's drawablesubdirektori. The setBackgroundResource()panggilan menghubungkan androidImagepandangan ke urutan gambar dijelaskan oleh android_animate.xml, yang akan ditarik pada pandangan ini. Gambar awal digambar sebagai hasil dari pemanggilan metode ini.

ImageViewmemungkinkan aplikasi menganimasikan urutan drawable dengan memanggil AnimationDrawablemetode. Sebelum aplikasi dapat melakukan hal ini, harus mendapatkan ImageView's AnimationDrawable. The androidAnimation = (AnimationDrawable) androidImage.getBackground();pernyataan penugasan yang mengikuti menyelesaikan tugas ini dengan menerapkan ImageView's warisan (dari View) Drawable getBackground()metode. Metode ini mengembalikan AnimationDrawableuntuk yang diberikan ImageView, yang kemudian ditetapkan ke androidAnimationbidang. The AnimationDrawablecontoh digunakan untuk memulai dan menghentikan animasi, proses saya akan menjelaskan lama.

Terakhir, onCreate(Bundle)buat tombol Animate . Ini memanggil findByViewId(int)untuk mendapatkan informasi tombol dari main.xml, lalu membuat instance android.widget.Buttonkelas.

Kemudian menggunakan antarmuka Viewbertingkat kelas onClickListeneruntuk membuat objek pendengar. Metode objek void onClick(View v)ini dipanggil setiap kali pengguna mengklik tombol. Pendengar terdaftar yang Buttonobjek dengan memanggil View's void setOnClickListener(AdapterView.OnClickListener listener)metode.

Untuk berhenti, lalu mulai animasi, pemroses klik Animate memanggil androidAnimation.stop();diikuti oleh androidAnimation.start();. The stop()metode ini disebut sebelum start()untuk memastikan bahwa klik berikutnya dari Animate tombol menyebabkan animasi baru untuk memulai.

Perbarui dan simpan kode Anda

Sebelum melanjutkan, ganti kode kerangka di tab W2A.java Anda dengan kode dari Daftar 1. Simpan isi jendela ini dengan menekan Ctrl + S , atau pilih Simpan Semua dari menu Berkas .

Membuat kode main.xml aplikasi Android

Aktivitas utama aplikasi ini terkait dengan tata letak berbasis XML, yang disimpan dalam file main.xml, dan disajikan dalam Daftar 2.

Daftar 2. main.xml

Setelah deklarasi XML, Listing 2 mendeklarasikan LinearLayoutelemen yang menentukan tata letak (grup tampilan yang mengatur tampilan yang ada di layar perangkat Android dengan cara tertentu) untuk mengatur widget yang ada (termasuk tata letak bersarang) baik secara horizontal maupun vertikal di layar.

The tag specifies several attributes for controlling this linear layout. These attributes include the following:

  • orientation identifies the linear layout as horizontal or vertical. Contained widgets are laid out horizontally or vertically, and the default orientation is horizontal. "horizontal" and "vertical" are the only legal values that can be assigned to this attribute.
  • layout_width identifies the width of the layout. Legal values include "fill_parent" (to be as wide as the parent) and "wrap_content" (to be wide enough to enclose content). (Note that fill_parent was renamed to match_parent in Android 2.2, but is still supported and widely used.)
  • layout_height identifies the height of the layout. Legal values include "fill_parent" (to be as tall as the parent) and "wrap_content" (to be tall enough to enclose content).
  • gravity identifies how the layout is positioned relative to the screen. For example, "center" specifies that the layout should be centered horizontally and vertically on the screen.
  • background identifies a background image, a gradient, or a solid color. For simplicity, I've hardcoded a hexadecimal color identifier to signify a solid white background (#ffffff). (Colors would normally be stored in colors.xml and referenced from this file.)

The LinearLayout element encapsulates ImageView and Button elements. Each of these elements specifies an id attribute, which identifies the element so that it can be referenced from code. The resource identifier (special syntax that begins with @) assigned to this attribute begins with the @+id prefix. For example, @+id/android identifies the ImageView element as android; this element is referenced from code by specifying R.id.android.

These elements also specify layout_width and layout_height attributes for determining how their content is laid out. Each attribute is assigned wrap_content so that the element will appear at its natural size.

ImageView specifies a layout_marginBottom attribute to identify a space separator between itself and the button that follows vertically. The space is specified as 10 dips, or density-independent pixels. These are virtual pixels that apps can use to express layout dimensions/positions in a screen density-independent way.

Density-independent pixels

Sebuah pixel density-independen (dip) adalah setara dengan satu pixel fisik pada layar 160-dpi, kepadatan dasar diasumsikan oleh Android. Saat runtime, Android secara transparan menangani penskalaan apa pun dari unit penurunan yang diperlukan, berdasarkan kepadatan layar yang sebenarnya digunakan. Satuan dip diubah menjadi piksel layar melalui persamaan: piksel = dips * (densitas / 160) . Misalnya, pada layar 240-dpi, 1 dip sama dengan 1,5 piksel fisik. Google merekomendasikan penggunaan unit celup untuk menentukan antarmuka pengguna aplikasi Anda guna memastikan tampilan yang tepat dari antarmuka pengguna di layar perangkat yang berbeda.

Memilih dan menyimpan tata letak baru