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.

Jendela Project menyoroti W2A , yang merupakan nama W2A.java
file sumber aplikasi (meskipun .java
ekstensi 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.java
berkas dimulai dengan pernyataan paket , yang nama-nama paket ( ca.javajeff.w2a
) yang menyimpan W2A
kelas. Ini diikuti oleh serangkaian pernyataan impor untuk berbagai jenis Android API. Selanjutnya, kode menjelaskan W2A
kelas, yang diperluas android.app.Activity
.
W2A
pertama-tama mendeklarasikan androidAnimation
bidang instance tipe android.graphics.drawable.AnimationDrawable
. Objek berjenis AnimationDrawable
mendeskripsikan 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. AnimationDrawable
secara tidak langsung memperluas android.graphics.drawable.Drawable
kelas abstrak , yang merupakan abstraksi umum untuk drawable.
Metode onCreate ()
Semua pekerjaan aplikasi berlangsung di W2A
override '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.main
adalah pengenal (ID) untuk sumber daya aplikasi, yang berada di file terpisah. Anda menafsirkan ID ini sebagai berikut:
R
adalah nama kelas yang dibuat saat aplikasi dibuat. Kelas ini dinamaiR
karena isinya mengidentifikasi berbagai jenis sumber daya aplikasi, termasuk tata letak, gambar, string, dan warna.layout
adalah nama kelas yang bertingkat di dalamnyaR
. 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,string
mengidentifikasi sumber daya string.main
adalah namaint
konstanta berbasis yang dideklarasikan di dalamnyalayout
. ID sumber daya ini mengidentifikasi sumber daya tata letak utama. Secara khusus,main
mengacu padamain.xml
file yang menyimpan informasi tata letak aktivitas utama.main
adalahW2A
satu-satunya sumber daya tata letak.
Melewati R.layout.main
untuk 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.xml
dan memposisikannya di layar perangkat seperti yang ditentukan oleh main.xml
data 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.View
kelas dan analog dengan komponen AWT / Swing. Grup tampilan adalah instance kelas yang mensubkelas android.view.ViewGroup
kelas 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.ImageView
unsur dinyatakan dalam main.xml
dan diidentifikasi sebagai android
. Ini membuat instance ImageView
dan menginisialisasinya ke nilai yang dideklarasikan dalam main.xml
file. 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 ImageView
inherited (from View
) void setBackgroundResource(int resID)
, menyetel latar belakang tampilan ke sumber daya yang diidentifikasi oleh resID
. The R.drawable.android_animate
Argumen mengidentifikasi file XML bernama android_animate.xml
(disajikan kemudian), yang menyimpan informasi tentang animasi, dan yang disimpan di res
's drawable
subdirektori. The setBackgroundResource()
panggilan menghubungkan androidImage
pandangan ke urutan gambar dijelaskan oleh android_animate.xml
, yang akan ditarik pada pandangan ini. Gambar awal digambar sebagai hasil dari pemanggilan metode ini.
ImageView
memungkinkan aplikasi menganimasikan urutan drawable dengan memanggil AnimationDrawable
metode. 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 AnimationDrawable
untuk yang diberikan ImageView
, yang kemudian ditetapkan ke androidAnimation
bidang. The AnimationDrawable
contoh 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.Button
kelas.
Kemudian menggunakan antarmuka View
bertingkat kelas onClickListener
untuk membuat objek pendengar. Metode objek void onClick(View v)
ini dipanggil setiap kali pengguna mengklik tombol. Pendengar terdaftar yang Button
objek 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 LinearLayout
elemen 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 thatfill_parent
was renamed tomatch_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 incolors.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.