Xaveera.

Safira A. // girl who's interesting to everything with rice.

Lesson 11: Sharing Data with Content Providers

11.1A: Mengimplementasikan Penyedia Konten Minimalis

Tugas 1. Membuat proyek MinimalistContentProvider

 

Tugas 2: Membuat kelas Contract, URI, dan data tiruan

 

Tugas 3: Mengimplementasikan kelas MiniContentProvider

 

Tugas 4: Menggunakan ContentResolver untuk mendapatkan data

 

Hasil :

 

11.1B: Menambahkan penyedia konten ke database Anda.

Tugas 2. Menambahkan kelas Contract ke WordListSQLInteractive

 

Tugas 3. Membuat Penyedia Konten

 

Tugas 4. Mengimplementasikan Metode Penyedia Konten

 

11.1C: Berbagi konten dengan aplikasi lain

Tugas 1. Menjadikan penyedia konten Anda tersedia untuk aplikasi lain

 

Hasil :

Lesson 10: Storing Data Using SQLite

Nama        : Safira Aini

NIM           : 1202154315

Kelas         : SI-39-03

10.1A: SQLite Database

Task 1. Extend SQLiteOpenHelper to create and populate a database

 

Task 2. Create a data model for a single word

 

Task 3. Implement the query() method in WordListOpenHelper

 

Task 4. Display data in the RecyclerView

 

Task 5. Add new words to the database

 

Task 6. Delete words from the database

Task 7. Update words in the database

 

Hasil :

 

10.1B: Searching a SQLite Database

Task 1. Add Search

 

 

Hasil :

Lesson 9: Preferences and Settings

Nama        : Safira Aini

NIM           : 1202154315

Kelas         : SI-39-03

Link Blog : http://safiraaini.student.telkomuniversity.ac.id/lesson-9-preferences-and-settings/

Lesson 9: Preferences and Settings

9.1: Preferensi Bersama

Tugas 1. Menjelajahi HelloSharedPrefs

1.1 Buka dan Jalankan Proyek HelloSharedPrefs

 

1.2 Jelajahi kode Aktivitas

Tugas 2. Menyimpan dan memulihkan data ke file preferensi bersama

2.1 Inisialisasi preferensi

 

2.2 Simpan preferensi di onPause()

2.3 Pulihkan preferensi di onCreate()

2.4 Setel ulang preferensi di handler klik reset()

Hasil :

    

 

9.2: Menambahkan Setelan ke Aplikasi

Tugas 1: Menambahkan setelan pengalihan ke aplikasi

1.1 Membuat proyek dan menambahkan direktori xml dan file sumber daya

1.2 Tambahkan preferensi XML dan atribut untuk setelan.

1.3 Tambahkan aktivitas untuk setelan dan fragmen untuk setelan yang spesifik

 

1.4 Hubungkan item menu Settings ke aktivitas setelan

1.5 Simpan nilai default di preferensi bersama

1.6 Baca nilai setelan yang diubah dari preferensi bersama

Hasil :

 

Tugas 2: Menggunakan template Settings Activity

2.1 Menjelajahi template Settings Activity

 

2.2 Tambahkan item menu Settings dan hubungkan ke aktivitas

Hasil :

 

2.3 Sesuaikan setelan yang disediakan oleh template

2.4 Tambahkan kode untuk menyetel nilai default untuk setelan

 

2.5 Tambahkan kode untuk membaca nilai untuk setelan

Hasil :

 

Lesson 8: Triggering, Scheduling, and Optimizing Background Tasks

Name                  : SAFIRA AINI

Student ID       : 1202154315

Class                   : SI-39-03

Lesson 8: Triggering, Scheduling, and Optimizing Background Tasks
8.1: Notifikasi

Tugas 1: Membuat notifikasi dasar

1.1 Membuat Proyek

 

1.2 Membuat notifikasi pertama

 

1.3 Menambahkan intent konten

1.4 Tambahkan prioritas dan default ke notifikasi Anda

 

Tugas 2. Memperbarui dan membatalkan notifikasi

2.1 Menambahkan tombol update dan cancel

 

2.2 Mengimplementasikan metode notifikasi pembatalan dan pembaruan

 

2.3 Mengalihkan keadaan tombol

 

Tugas 3. Menambahkan tindakan notifikasi

3.1 Mengimplementasikan tindakan “Learn More”

 

3.2 Mengimplementasikan tindakan “Update”

 

Hasil :

 

8.2: Alarm Manager

Tugas 1. Menyiapkan Stand Up! Proyek dan Tampilan

1.1 Membuat Stand Up! Layout proyek

 

 


Tugas 2. Menyiapkan Notifikasi

2.1 Membuat notifikasi

 

Tugas 3. Membuat Alarm Berulang

3.1 Menyiapkan intent tertunda siaran

 

3.2 Menyetel alarm berulang

 

3.3 Membuat Penerima Siaran

3.4 Memeriksa Status Alarm

 

Hasil :

 

8.3: Job Scheduler

Tugas 1. Mengimplementasikan JobService

1.1 Membuat Proyek dan NotificationJobService

1.2Mengimplementasikan onStartJob()

Tugas 2. Mengimplementasikan kondisi kerja

2.1 Mengimplementasikan batasan jaringan

Code :

<?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
xmlns:tools=”http://schemas.android.com/tools”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:paddingBottom=”@dimen/activity_vertical_margin”
android:paddingLeft=”@dimen/activity_horizontal_margin”
android:paddingRight=”@dimen/activity_horizontal_margin”
android:paddingTop=”@dimen/activity_vertical_margin”
android:orientation=”vertical”
tools:context=”com.example.android.notificationscheduler.MainActivity”>

<TextView
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”@string/required_network_type”
android:textAppearance=”@style/TextAppearance.AppCompat.Subhead”
android:layout_margin=”4dp”/>

<RadioGroup
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:orientation=”horizontal”
android:id=”@+id/networkOptions”
android:layout_margin=”4dp”>
<RadioButton
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”@string/no_network”
android:checked=”true”
android:id=”@+id/noNetwork”/>
<RadioButton
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”@string/any_network”
android:id=”@+id/anyNetwork”/>
<RadioButton
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”@string/wifi_network”
android:id=”@+id/wifiNetwork”/>
</RadioGroup>

<TextView
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”@string/requires”
android:textAppearance=”@style/TextAppearance.AppCompat.Subhead”
android:layout_margin=”4dp”/>

<LinearLayout
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:orientation=”horizontal”
android:layout_margin=”4dp”>
<Switch
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”@string/device_idle”
android:id=”@+id/idleSwitch”/>
<Switch
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”@string/device_charging”
android:id=”@+id/chargingSwitch”/>
</LinearLayout>

<Switch
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”@string/periodic”
android:id=”@+id/periodicSwitch”
android:layout_margin=”4dp”/>

<LinearLayout
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:orientation=”horizontal”
android:layout_margin=”4dp”>
<TextView
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”@string/override_deadline”
android:id=”@+id/seekBarLabel”
android:textAppearance=”@style/TextAppearance.AppCompat.Subhead”/>
<TextView
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:text=”@string/not_set”
android:id=”@+id/seekBarProgress”
android:textAppearance=”@style/TextAppearance.AppCompat.Subhead”/>

</LinearLayout>

<SeekBar
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:id=”@+id/seekBar”
android:layout_margin=”4dp”/>

<Button
android:id=”@+id/scheduleJobButton”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_margin=”4dp”
android:text=”@string/schedule_job”
android:layout_gravity=”center_horizontal”/>

<Button
android:id=”@+id/cancelJobsButton”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_margin=”4dp”
android:text=”@string/cancel_jobs”
android:layout_gravity=”center_horizontal”/>
</LinearLayout>



 

2.2 Memeriksa batasan

 

2.3 Mengimplementasikan batasan Device Idle dan Device Charging

 

2.4 Mengimplementasikan batasan Batas Waktu Pengganti

 

2.5 Mengimplementasikan batasan Periodik

 

Hasil :

Lesson 7: Background Tasks

Name                  : SAFIRA AINI

Student ID         : 1202154315

Class                   : SI-39-03

Lesson 7: Background Tasks
7.1: Membuat AsyncTask

Tugas 1: Menyiapkan Proyek SimpleAsyncTask

1.1 Membuat layout

 

Code :

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:paddingLeft="@dimen/activity_horizontal_margin"
     android:paddingRight="@dimen/activity_horizontal_margin"
     android:paddingTop="@dimen/activity_vertical_margin"
     android:paddingBottom="@dimen/activity_vertical_margin"
     android:orientation="vertical">
 
     <TextView
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="@string/ready_to_start"
         android:id = "@+id/textView1"
         android:textSize="24sp"/>
 
     <Button
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="@string/start_task"
         android:id="@+id/button"
         android:layout_marginTop="56dp"
         android:onClick="startTask" />
 </LinearLayout>

Tugas 2: Membuat subkelas AsyncTask

2.1 Menjadikan AsyncTask Subkelas

2.2 Mengimplementasikan doInBackground()

Code :

@Override
 protected String doInBackground(Void... voids) {
 
 
     Random r = new Random();
     int n = r.nextInt(11);
 
 
     int s = n * 200;
 
 
     try {
         Thread.sleep(s);
     } catch (InterruptedException e) {
         e.printStackTrace();
     }
 
     // Return a String result
     return "Awake at last after sleeping for " + s + " milliseconds!";
 }


2.3 Mengimplementasikan onPostExecute()

 

Tugas 3: Mengimplementasikan Langkah Terakhir

3.1 Implementasikan metode yang mulai dengan AsyncTask

 

3.2 Mengimplementasikan onSaveInstanceState()

Code :

 package android.example.com.simpleasynctask;
 
 import android.os.Bundle;
 import android.support.v7.app.AppCompatActivity;
 import android.view.View;
 import android.widget.TextView;
 
 
 public class MainActivity extends AppCompatActivity {
 
 
     private static final String TEXT_STATE = "currentText";
 
     private TextView mTextView;
 
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
         //  Initialize mTextView
         mTextView = (TextView) findViewById(R.id.textView1);
 
         // Restore TextView if there is a savedInstanceState
         if(savedInstanceState!=null){
            mTextView.setText(savedInstanceState.getString(TEXT_STATE));
         }
     }
 
  public void startTask (View view) {
         // Put a message in the text view
         mTextView.setText(R.string.napping);
 
         // Start the AsyncTask.
         // The AsyncTask has a callback that will update the text view.
         new SimpleAsyncTask(mTextView).execute();
     }
 
     @Override
     protected void onSaveInstanceState(Bundle outState) {
         super.onSaveInstanceState(outState);
         // Save the state of the TextView
         outState.putString(TEXT_STATE, mTextView.getText().toString());
     }
 }

 

Hasil :

 

7.2: Menghubungkan ke Internet dengan AsyncTask dan AsyncTaskLoader

Tugas 1. Menjelajahi Books API

1.1   Mengirimkan Permintaan API Books

 

1.2   Menganalisis Respons API Books

Tugas 2: Membuat “Who Wrote it?” Aplikasi

2.1 Membuat proyek dan antarmuka pengguna

 

2.2 Menyiapkan Aktivitas Utama

2.3 Membuat AsyncTask kosong

2.4 Membuat kelas NetworkUtils dan membangun URI

2.5 Membuat Permintaan

 

2.6 Menambahkan izin internet

 

2.7 Parse string JSON

 

Tugas 3. Mengimplementasikan praktik terbaik UI

3.1 Menyembunyikan Keyboard dan Memperbarui TextView

3.2 Mengelola status jaringan dan kasus bidang penelusuran kosong

 

Tugas 4. Migrasi ke AsyncTaskLoader

4.1 Membuat AsyncTaskLoader

4.2 Memodifikasi MainActivity

Hasil :

 

7.3: Penerima Siaran

Tugas 1. Menyiapkan Proyek PowerReceiver

1.1   Membuat Proyek

 

1.2 Mendaftarkan Penerima untuk siaran sistem

1.3 Mengimplementasikan onReceive() dalam BroadcastReceiver

 

1.4 Membatasi Penerima Siaran

 

Tugas 2. Mengirimkan dan Menerima Siaran Khusus

2.1 Mendefinisikan string Tindakan Siaran khusus

2.2 Tambahkan Tombol “Send Custom Broadcast”

2.3 Mengimplementasikan sendCustomBroadcast()

2.4 Mendaftarkan Siaran Khusus

2.5 Merespons Siaran Khusus

Hasil :

 

Lessons 5 :Delightful User Experience

NAMA           : SAFIRA AINI

NIM                : 1202154315

KELAS          : SI-39-03

Lessons 5 :Delightful User Experience

5.1: Drawable, Gaya, dan Tema

Tugas 1: Membuat Aplikasi Scorekeeper

1.1 Buat proyek “Scorekeeper”

 

1.2 Buat layout untuk aktivitas utama

 

Tambahkan aset vektor

 

1.3 Inisialisasi TextView Anda dan variabel hitungan skor

1.4 Implementasikan fungsionalitas onClick untuk tombol Anda.

 

package com.example.safiraaini.scorekeeper;
 
 import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
 import android.view.View;
 import android.widget.TextView;
 
 public class MainActivity extends AppCompatActivity {
 
     private int mScore1;
     private int mScore2;
 
     private TextView mScoreText1;
     private TextView mScoreText2;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
         mScoreText1 = (TextView)findViewById(R.id.tvscore1);
         mScoreText2 = (TextView)findViewById(R.id.tvscore2);
 
     }
 
     public void decreaseScore(View view) {
         //Get the ID of the button that was clicked
         int viewID = view.getId();
         switch (viewID){
             //If it was on Team 1
             case R.id.ib1min:
                 //Decrement the score and update the TextView
                 mScore1--;
                 mScoreText1.setText(String.valueOf(mScore1));
                 break;
             //If it was Team 2
             case R.id.ib2min:
                 //Decrement the score and update the TextView
                 mScore2--;
                 mScoreText2.setText(String.valueOf(mScore2));
     }
     }
 
     public void increaseScore(View view) {
         //Get the ID of the button that was clicked
         int viewID = view.getId();
         switch (viewID) {
             //If it was on Team 1
             case R.id.ib1plus:
                 //Increment the score and update the TextView
                 mScore1++;
                 mScoreText1.setText(String.valueOf(mScore1));
                 break;
             //If it was Team 2
             case R.id.ib2plus:
                 //Increment the score and update the TextView
                 mScore2++;
                 mScoreText2.setText(String.valueOf(mScore2));
         }
     }
Tugas 2: Membuat sumber daya Drawable

2.1 Buat Drawable Bentuk

2.2 Terapkan drawable bentuk sebagai latar belakang

Hasil :

 

Tugas 3: Tata gaya tampilan Anda

3.1 Buat gaya tombol

 

3.2 Buat gaya TextView

3.3 Memperbarui gaya

Hasil :

Tugas 4: Tema dan Sentuhan Akhir

4.1 Jelajahi tema

Hasil :

 

4.2 Tambahkan tombol tema ke menu

5.2: Desain Material Daftar, Kartu, dan Warna

Tugas 1: Mengunduh Kode Starter

1.1   Buka dan Jalankan Proyek Material Me

Tugas 2: Menambahkan CardView dan Gambar

2.1 Tambahkan CardView

 

2.2 Unduh gambar

 

2.3 Modifikasi objek Sport

 

2.4 Perbaiki metode initializeData()

 

2.5 Tambahkan ImageView ke item daftar

 

2.6 Muat gambar menggunakan Glide

Tugas 3: Membuat CardView Anda bisa digesek, dipindahkan, dan diklik

3.1 Implementasikan gesek untuk menutup

3.2 Implementasikan seret dan lepas

3.3 Implementasikan tampilan detail

 

Tugas 4: Tambahkan FAB dan pilih Palet Warna Material

4.1 Tambahkan FAB

 

4.2 Pilih Palet Material

Hasil :

 

5.3 Mendukung Lanskap, Beberapa Ukuran Layar, dan Pelokalan

Tugas 1: Mendukung Orientasi Lanskap

1.1 Ubah ke GridLayoutManager

1.2 Modifikasi MainActivity

 

Hasil :

 

Tugas 2 : Dukung Tablet

2.1 Buat Layout Menyesuaikan Tablet

 

2.2 Perbarui gaya item daftar tablet

2.3 Perbarui gaya detail olahraga tablet

Hasil :

 

Tugas 3: Melokalkan Aplikasi Anda

3.1 Tambahkan file strings.xml

Hasil :

Lesson 4: User Interaction

NAMA : SAFIRA AINI
NIM : 1202154315
KELAS : SI-39-03

4.1. Menggunakan Keyboard, Kontrol Masukan, Peringatan, dan Picker

Tugas 1: Bereksperimen dengan atribut keyboard entri teks

1.1 Membuat layout utama dan metode showText

 

Hasil :

 

1.2 Setel keyboard untuk menjadikan huruf besar di awal kalimat

 

Hasil :

1.3 Setel keyboard untuk menyembunyikan sandi saat memasukkannya

Hasil :

Tugas 2. Mengubah tipe keyboard

2.1 Menggunakan keyboard email

Hasil :

2.2 Menggunakan keypad ponsel

Hasil :

Tugas 3: Menambahkan kontrol masukan spinner untuk memilih label telepon

3.1 Salin proyek KeyboardSamples dan ubah layout

3.2 Tambahkan kode untuk mengaktifkan spinner dan listener-nya

3.3 Tambahkan kode untuk merespons pilihan pengguna

Hasil :

Tugas 4: Menggunakan dialog untuk peringatan yang memerlukan keputusan

4.1 Buat proyek baru dengan layout untuk menampilkan dialog peringatan

Hasil :

Tugas 5: Menggunakan picker untuk masukan pengguna

5.1 Membuat layout aktivitas utama

5.2 Buat fragmen baru untuk picker tanggal

 

5.3 Buat fragmen baru untuk picker waktu

Date Picker :

 

package com.example.android.DateTimePickers;
 
 
 import android.app.DatePickerDialog;
 import android.app.Dialog;
 import android.os.Bundle;
 import android.support.annotation.NonNull;
 import android.support.v4.app.DialogFragment;
 import android.support.v4.app.Fragment;
 import android.widget.DatePicker;
 
 import java.util.Calendar;
 
 public class DatePickerFragment extends DialogFragment
         implements DatePickerDialog.OnDateSetListener {
 
     /**
      * Creates the date picker dialog with the current date from Calendar.
      * @param savedInstanceState    Saved instance
      * @return DatePickerDialog     The date picker dialog
      */
     @NonNull
     @Override
     public Dialog onCreateDialog(Bundle savedInstanceState) {
         // Use the current date as the default date in the picker.
         final Calendar c = Calendar.getInstance();
         int year = c.get(Calendar.YEAR);
         int month = c.get(Calendar.MONTH);
         int day = c.get(Calendar.DAY_OF_MONTH);
 
         // Create a new instance of DatePickerDialog and return it.
         return new DatePickerDialog(getActivity(), this, year, month, day);
     }
 
         public void onDateSet(DatePicker view, int year, int month, int day) {
         // Convert the date elements to strings.
         // Set the activity to the Main Activity.
         MainActivity activity = (MainActivity) getActivity();
         // Invoke Main Activity's processDatePickerResult() method.
         activity.processDatePickerResult(year, month, day);
     }
 
 }





Main Activity

package com.example.android.DateTimePickers;
 
 import android.os.Bundle;
 import android.support.v4.app.DialogFragment;
 import android.support.v7.app.AppCompatActivity;
 import android.view.View;
 import android.widget.Toast;
 
 /**
  * This app shows the time and date pickers when you click the appropriate button.
  */
 public class MainActivity extends AppCompatActivity {
 
     /**
      * Creates the view based on the layout for the main activity.
      * @param savedInstanceState    Saved instance
      */
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
     }
 
     public void showDatePickerDialog(View v) {
         DialogFragment newFragment = new DatePickerFragment();
         newFragment.show(getSupportFragmentManager(), getString(R.string.date_picker));
     }
 
     public void showTimePickerDialog(View view) {
         DialogFragment newFragment = new TimePickerFragment();
         newFragment.show(getSupportFragmentManager(), getString(R.string.time_picker));
     }
 
     public void processDatePickerResult(int year, int month, int day) {
         // The month integer returned by the date picker starts counting at 0
         // for January, so you need to add 1 to show months starting at 1.
         String month_string = Integer.toString(month + 1);
         String day_string = Integer.toString(day);
         String year_string = Integer.toString(year);
         // Assign the concatenated strings to dateMessage.
         String dateMessage = (month_string + "/" + day_string + "/" + year_string);
         Toast.makeText(this, getString(R.string.date) + dateMessage, Toast.LENGTH_SHORT).show();
     }
 
     public void processTimePickerResult(int hourOfDay, int minute) {
         // Convert time elements into strings.
         String hour_string = Integer.toString(hourOfDay);
         String minute_string = Integer.toString(minute);
         // Assign the concatenated strings to timeMessage.
         String timeMessage = (hour_string + ":" + minute_string);
         Toast.makeText(this, getString(R.string.time) + timeMessage, Toast.LENGTH_SHORT).show();
     }
 
 } Time Picker :



package com.example.android.DateTimePickers;
 
 
 import android.app.Dialog;
 import android.app.TimePickerDialog;
 import android.os.Bundle;
 import android.support.annotation.NonNull;
 import android.support.v4.app.DialogFragment;
 import android.support.v4.app.Fragment;
 import android.text.format.DateFormat;
 import android.widget.TimePicker;
 
 import java.util.Calendar;
 
 /**
  * A simple {@link Fragment} subclass for a time picker.
  * Sets the current time for the picker using Calendar.
  */
 public class TimePickerFragment extends DialogFragment implements TimePickerDialog.OnTimeSetListener {
 
     /**
      * Creates the time picker dialog with the current time from Calendar.
      * @param savedInstanceState    Saved instance
      * @return TimePickerDialog     The time picker dialog
      */
     @NonNull
     @Override
     public Dialog onCreateDialog(Bundle savedInstanceState) {
         // Use the current time as the default values for the picker.
         final Calendar c = Calendar.getInstance();
         int hour = c.get(Calendar.HOUR_OF_DAY);
         int minute = c.get(Calendar.MINUTE);
 
         // Create a new instance of TimePickerDialog and return it.
         return new TimePickerDialog(getActivity(), this, hour, minute,
                 DateFormat.is24HourFormat(getActivity()));
     }
 
     /**
      * Grabs the time and converts it to a string to pass
      * to the Main Activity in order to show it with processTimePickerResult().
      * @param view          The time picker view
      * @param hourOfDay     The hour chosen
      * @param minute        The minute chosen
      */
     public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
         // Set the activity to the Main Activity.
         MainActivity activity = (MainActivity) getActivity();
         // Invoke Main Activity's processTimePickerResult() method.
         activity.processTimePickerResult(hourOfDay, minute);
     }
 }

Hasil :

 

Tugas 6: Menggunakan tampilan gambar sebagai tombol

6.1 Mulai proyek baru

 

6.2 Tambahkan gambar

 

6.3 Tambahkan metode onClick untuk tampilan gambar

Tugas 7: Menggunakan tombol radio

7.1 Tambahkan aktivitas lain

7.2 Tambahkan layout untuk tombol radio

7.3 Tambahkan handler klik tombol radio

 

Hasil :

 

4.2: Menggunakan Menu Opsi

Tugas 1: Menambahkan item ke menu opsi opsi

1.1 Periksa kode bilah aplikasi

Hasil :

Hasil:

H

Hasil :

4.3: Menggunakan Bilah Aplikasi dan Tab untuk Navigasi

Tugas 1. Menambahkan tombol Naik untuk navigasi ancestral

Hasil :

Tugas 2. Menambahkan navigasi tab dengan tampilan gesek

2.1 Buat layout untuk navigasi tab

 

2.2 Buat layout dan kelas untuk setiap fragmen

2.3 Add a PagerAdapter

2.4 Inflate the Toolbar and TabLayout

Hasil :

 

4.4 Membuat RecyclerView

Tugas 1. Membuat dan mengonfigurasi proyek baru

1.1Proyek

1.2 Buat layout untuk satu item daftar

 

Tugas 2. Membuat kumpulan data

Tugas 3: Membuat RecyclerView

3.1 Buat layout utama di activity_main.xml

3.2 Buat layout untuk satu item daftar

 

3.3 Buat gaya dari atribut TextView

3.4. Buat adapter dengan holder tampilan

 

Tugas 4. Membuat daftar agar interaktif

Tugas 5. Menambahkan FAB untuk menyisipkan item

5.1. Menambahkan Tombol Aksi Mengambang (FAB)

5.2 Tambahkan perilaku ke FAB

Hasil :

 

Lesson 3 : Testing, Debugging and using Support Library

Nama              : SAFIRA AINI

NIM                : 1202154315

Kelas               : SI-39-03

Lesson 3 : Testing, Debugging and using Support Library

3.1 : Menggunakan Debugger

Tugas 1. Membuat Proyek dan Aplikasi SimpleCalc

1.1   Unduh dan buka proyek SimpleCalc

 

1.2 Menjelajahi Layout

Hasil :

 

1.3 Jelajahi kode aplikasi

 

Tugas 2. Menjalankan SimpleCalc di Debugger

2.1 Memulai dan Menjalankan aplikasi dalam mode debug

 

2.2 Men-debug aplikasi yang berjalan

 

Tugas 3: Menjelajahi Fitur Debugger

3.1 Menyusuri eksekusi aplikasi

 

3.2 Bekerja dengan Breakpoint

3.3 Memeriksa dan memodifikasi variabel

 

3.2: Menguji Aplikasi dengan Pengujian Unit

Tugas 1. Menjelajahi dan menjalankan SimpleCalc di Android Studio

1.1 Menjelajahi rangkaian sumber dan SimpleCalc

package com.example.android.SimpleCalc;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
import android.test.suitebuilder.annotation.SmallTest;

import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.Matchers.closeTo;

import static org.junit.Assert.assertThat;

/**
* JUnit4 unit tests for the calculator logic. These are local unit tests; no device needed
*/
@RunWith(JUnit4.class)
@SmallTest
public class CalculatorTest {

private Calculator mCalculator;

/**
* Set up the environment for testing
*/
@Before
public void setUp() {
mCalculator = new Calculator();
}

/**
* Test for simple addition
*/
@Test
public void addTwoNumbers() {
double resultAdd = mCalculator.add(1d, 1d);
assertThat(resultAdd, is(equalTo(2d)));
}

}

1.2   Menjalankan pengujian dalam Android Studio

 

Tugas 2. Menambahkan lebih banyak pengujian unit ke CalculatorTest

2.1 Menambahkan lebih banyak pengujian untuk metode add()

 

2.2 Menambahkan pengujian unit untuk metode penghitungan lain


/*
  * Copyright 2016, Google Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
  *      http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
 package com.example.android.SimpleCalc;
 
         import org.junit.Before;
         import org.junit.Test;
         import org.junit.runner.RunWith;
         import org.junit.runners.JUnit4;
         import android.test.suitebuilder.annotation.SmallTest;
 
         import static org.hamcrest.CoreMatchers.equalTo;
         import static org.hamcrest.CoreMatchers.is;
         import static org.hamcrest.Matchers.closeTo;
 
         import static org.junit.Assert.assertThat;
 
 /**
  * JUnit4 unit tests for the calculator logic. These are local unit tests; no device needed
  */
 @RunWith(JUnit4.class)
 @SmallTest
 public class CalculatorTest {
 
     private Calculator mCalculator;
 
     /**
      * Set up the environment for testing
      */
     @Before
     public void setUp() {
         mCalculator = new Calculator();
     }
 
     /**
      * Test for simple addition
      */
     @Test
     public void addTwoNumbers() {
         double resultAdd = mCalculator.add(1d, 1d);
         assertThat(resultAdd, is(equalTo(2d)));
     }
 
     @Test
     public void addTwoNumbersNegative() {
         double resultAdd = mCalculator.add(-1d, 2d);
         assertThat(resultAdd, is(equalTo(1d)));
     }
 
     @Test
     public void addTwoNumbersFloats() {
         double resultAdd = mCalculator.add(1.111f, 1.111d);
         assertThat(resultAdd, is(closeTo(2.222, 0.01)));
     }
 
     @Test
     public void subTwoNumbers() {
         double resultSub = mCalculator.sub(1d, 1d);
         assertThat(resultSub, is(equalTo(0d)));
     }
     @Test
     public void subWorksWithNegativeResult() {
         double resultSub = mCalculator.sub(1d, 17d);
         assertThat(resultSub, is(equalTo(-16d)));
     }
     @Test
     public void mulTwoNumbers() {
         double resultMul = mCalculator.mul(32d, 2d);
         assertThat(resultMul, is(equalTo(64d)));
     }
     @Test
     public void divTwoNumbers() {
         double resultDiv = mCalculator.div(32d,2d);
         assertThat(resultDiv, is(equalTo(16d)));
     }
     @Test
     public void divTwoNumbersZero() {
         double resultDiv = mCalculator.div(32d,0);
         assertThat(resultDiv, is(equalTo(Double.POSITIVE_INFINITY)));
     }
 }


3.3: Menggunakan Pustaka Dukungan Android

Tugas 1. Menyiapkan proyek

1.1   Memverifikasi bahwa Pustaka Dukungan Android tersedia

 

1.2 Menyiapkan Proyek dan memeriksa build.gradle

 

1.3   Menambahkan layout dan warna

 

1.4 Menambahkan perilaku ke MainActivity

 

Tugas 2. Mengimplementasikan perilaku tombol

2.1 Tambahkan handler onClick changeButton()

 

2.2 Implementasikan tindakan tombol

 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:paddingTop="@dimen/ptop"
     android:paddingLeft="@dimen/pleft"
     android:paddingRight="@dimen/pright"
     android:paddingBottom="@dimen/pbottom"
     tools:context="com.example.safiraaini.hellocompat.MainActivity">
 
     <TextView
         android:id="@+id/hello_textview"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:text="@string/hello_text_string"
         android:gravity="center"
         android:textSize="100sp"
         android:textStyle="bold"
 
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintLeft_toLeftOf="parent"
         app:layout_constraintRight_toRightOf="parent"
         app:layout_constraintTop_toTopOf="parent" />
 
     <Button
         android:id="@+id/color_button"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_alignParentBottom="true"
         android:layout_centerHorizontal="true"
         android:layout_marginBottom="34dp"
         android:onClick="changeColor"
 
         android:text="@string/button_label" />
 
 </RelativeLayout>

MainActivity.java

package com.example.safiraaini.hellocompat;
 
 import android.support.v4.content.ContextCompat;
 import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
 import android.view.View;
 import android.widget.TextView;
 
 import java.util.Random;
 
 public class MainActivity extends AppCompatActivity {
 
     private TextView mHelloTextView;
 
     private String[] mColorArray = {"red", "pink", "purple", "deep_purple",
             "indigo", "blue", "light_blue", "cyan", "teal", "green",
             "light_green", "lime", "yellow", "amber", "orange", "deep_orange",
             "brown", "grey", "blue_grey", "black"
     };
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
 
         mHelloTextView = (TextView) findViewById(R.id.hello_textview);
 
         if (savedInstanceState != null) {
             mHelloTextView.setTextColor(savedInstanceState.getInt("color"));
         }
     }
 
     @Override
     public void onSaveInstanceState(Bundle outState) {
         super.onSaveInstanceState(outState);
 
         // save the current text color
         outState.putInt("color", mHelloTextView.getCurrentTextColor());
     }
 
     public void changeColor(View view) {
 
         Random random = new Random();
         String colorName = mColorArray[random.nextInt(20)];
         int colorResourceName = getResources().getIdentifier(colorName, "color",
                 getApplicationContext().getPackageName());
 
         int colorRes = ContextCompat.getColor(this, colorResourceName);
         mHelloTextView.setTextColor(colorRes);
     }
 }

colors.xml

<?xml version="1.0" encoding="utf-8"?>
 <resources>
     <color name="colorPrimary">#3F51B5</color>
     <color name="colorPrimaryDark">#303F9F</color>
     <color name="colorAccent">#FF4081</color>
     <color name="red">#F44336</color>
     <color name="pink">#E91E63</color>
     <color name="purple">#9C27B0</color>
     <color name="deep_purple">#673AB7</color>
     <color name="indigo">#3F51B5</color>
     <color name="blue">#2196F3</color>
     <color name="light_blue">#03A9F4</color>
     <color name="cyan">#00BCD4</color>
     <color name="teal">#009688</color>
     <color name="green">#4CAF50</color>
     <color name="light_green">#8BC34A</color>
     <color name="lime">#CDDC39</color>
     <color name="yellow">#FFEB3B</color>
     <color name="amber">#FFC107</color>
     <color name="orange">#FF9800</color>
     <color name="deep_orange">#FF5722</color>
     <color name="brown">#795548</color>
     <color name="grey">#9E9E9E</color>
     <color name="blue_grey">#607D8B</color>
     <color name="black">#000000</color>
 </resources>

 

dimens.xml

<?xml version=”1.0″ encoding=”utf-8″?>
<resources>

<dimen name=”ptop”>16sp</dimen>
<dimen name=”pleft”>16sp</dimen>
<dimen name=”pright”>16sp</dimen>
<dimen name=”pbottom”>16sp</dimen>
</resources>

Hasil:

Lesson 2 Activities

2.1: Membuat dan Memulai Aktivitas

Tugas 1. Membuat proyek TwoActivities

1.1   Membuat proyek TwoActivities

Menggunakan cara yang sama dengan pembuatan proyek sebelumnya

 

1.2 Definisikan layout untuk aktivitas utama

 

1.3 Mendefinisikan tindakan tombol

 

 

package com.example.safiraaini.twoactivities;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;

public class MainActivity extends AppCompatActivity {
private static final String LOG_TAG =
MainActivity.class.getSimpleName();

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

public void launchSecondActivity(View view) {
Log.d(LOG_TAG, “Button clicked!”);
}
}

Hasil :

Tugas 2. Membuat dan meluncurkan aktivitas kedua

2.1 Membuat aktivitas kedua

2.2 Memodifikasi manifes Android

 

<?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.example.safiraaini.twoactivities">
 
     <application
         android:allowBackup="true"
         android:icon="@mipmap/ic_launcher"
         android:label="@string/app_name"
         android:roundIcon="@mipmap/ic_launcher_round"
         android:supportsRtl="true"
         android:theme="@style/AppTheme">
         <activity android:name=".MainActivity">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
 
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
         <activity android:name=".SecondActivity"
             android:label="@string/activity2_name"
             android:parentActivityName=".MainActivity">
             <meta-data
                 android:name="android.support.PARENT_ACTIVITY"
                 android:value="com.example.safiraaini.twoactivities.MainActivity" />
         </activity>
     </application>
 
 </manifest>

2.3 Mendefinisikan layout untuk aktivitas utama

 

2.4 Menambahkan intent ke aktivitas utama

Pada MainActivity.java:

package com.example.safiraaini.twoactivities;
 
 import android.content.Intent;
 import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
 import android.util.Log;
 import android.view.View;
 
 public class MainActivity extends AppCompatActivity {
     private static final String LOG_TAG = MainActivity.class.getSimpleName();
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
     }
 
     public void launchSecondActivity(View view) {
         Log.d(LOG_TAG, "Button clicked!");
         Intent intent = new Intent(this, SecondActivity.class);
         startActivity(intent);
     }
 
 }

 

Pada second_activity.xml

<?xml version=”1.0″ encoding=”utf-8″?>
<RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android”
xmlns:app=”http://schemas.android.com/apk/res-auto”
xmlns:tools=”http://schemas.android.com/tools”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
tools:context=”com.example.safiraaini.twoactivities.SecondActivity”
>

<TextView
android:id=”@+id/text_header”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignParentLeft=”true”
android:layout_alignParentStart=”true”
android:layout_alignParentTop=”true”
android:layout_marginLeft=”@dimen/left_Margin”
android:layout_marginStart=”@dimen/start_Margin”
android:layout_marginTop=”@dimen/top_Margin”
android:text=”@string/text_header”
android:textAppearance=”?android:attr/textAppearanceMedium”
android:textStyle=”bold”
tools:layout_editor_absoluteX=”16dp”
tools:layout_editor_absoluteY=”6dp”
/>
</RelativeLayout>

Hasil :

 

Tugas 3. Mengirim data dari aktivitas utama ke aktivitas kedua

3.1 Menambahkan EditText ke layout aktivitas utama

 

3.2 Menambahkan string ke ekstra intent aktivitas utama

 

3.3 Menambahkan TextView ke aktivitas kedua untuk pesan

3.4 Memodifikasi aktivitas kedua untuk mendapatkan ekstra dan menampilkan pesan

package com.example.safiraaini.twoactivities;
 
 import android.content.Intent;
 import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
 import android.widget.TextView;
 
 public class SecondActivity extends AppCompatActivity {
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_second);
         Intent intent = getIntent();
 
         String message =
                 intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
 
         TextView textView = (TextView) findViewById(R.id.text_Message);
         textView.setText(message);
     }
 }

Tugas 4. Mengembalikan data ke aktivitas utama

4.1 Menambahkan EditText dan Tombol ke layout aktivitas kedua

 

4.2 Membuat intent respons dalam aktivitas kedua

 

4.3 Menambahkan TextViews ke layout aktivitas utama untuk menampilkan balasan

Activity_main.xml :

<?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
 
     tools:context="com.example.safiraaini.twoactivities.MainActivity">
 
     <TextView
         android:id="@+id/text_header_reply"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_alignParentLeft="true"
         android:layout_alignParentStart="true"
         android:layout_alignParentTop="true"
 
         android:text="@string/text_header_reply"
 
         android:textStyle="bold"
         android:visibility="invisible"
         />
 
     <TextView
         android:id="@+id/text_message_reply"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_alignEnd="@+id/text_header"
         android:layout_alignRight="@+id/text_header"
         android:layout_below="@+id/text_header_reply"
         android:layout_marginStart="20dp"
         android:layout_marginLeft="45dp"
 
         android:visibility="invisible"
         />
     <Button
         android:id="@+id/button_main"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_alignParentBottom="true"
         android:layout_alignParentEnd="true"
         android:layout_alignParentRight="true"
 
         android:layout_marginBottom="13dp"
         android:layout_marginEnd="18dp"
         android:layout_marginRight="18dp"
         android:onClick="launchSecondActivity"
         android:text="@string/button_main" />
 
     <EditText
         android:id="@+id/editText_main"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_toLeftOf="@+id/button_main"
         android:layout_toStartOf="@+id/button_main"
         android:layout_marginBottom="13dp"
         android:layout_marginLeft="18dp"
         android:layout_alignParentBottom="true"
         android:ems="10"
         android:inputType="textPersonName"
         android:hint="@string/editText_main" />
 </RelativeLayout>

 

Activity_second.xml

<?xml version=”1.0″ encoding=”utf-8″?>
<RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android”
xmlns:app=”http://schemas.android.com/apk/res-auto”
xmlns:tools=”http://schemas.android.com/tools”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
tools:context=”com.example.safiraaini.twoactivities.SecondActivity”
>

<TextView
android:id=”@+id/text_header”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignParentLeft=”true”
android:layout_alignParentStart=”true”
android:layout_alignParentTop=”true”
android:layout_marginLeft=”@dimen/left_Margin”
android:layout_marginStart=”@dimen/start_Margin”
android:layout_marginTop=”@dimen/top_Margin”
android:text=”@string/text_header”

android:textStyle=”bold”
tools:layout_editor_absoluteX=”16dp”
tools:layout_editor_absoluteY=”6dp”
/>

<TextView
android:id=”@+id/text_Message”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignEnd=”@+id/text_header”
android:layout_alignRight=”@+id/text_header”
android:layout_below=”@+id/text_header”
android:layout_marginEnd=”45dp”
android:layout_marginRight=”45dp”

/>

<Button
android:id=”@+id/button_second”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignParentBottom=”true”
android:layout_alignParentEnd=”true”
android:layout_alignParentRight=”true”

android:layout_marginBottom=”13dp”
android:layout_marginEnd=”18dp”
android:layout_marginRight=”18dp”
android:onClick=”returnReply”
android:text=”@string/button_second”
/>

<EditText
android:id=”@+id/editText_second”
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:layout_toLeftOf=”@+id/button_second”
android:layout_toStartOf=”@+id/button_second”
android:layout_marginBottom=”13dp”
android:layout_marginLeft=”18dp”
android:layout_alignParentBottom=”true”
android:ems=”10″
android:inputType=”textPersonName”
android:hint=”@string/editText_second”
/>

</RelativeLayout>

 

MainActivity.java

package com.example.safiraaini.twoactivities;
 
 import android.content.Intent;
 import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
 import android.util.Log;
 import android.view.View;
 import android.widget.EditText;
 import android.widget.TextView;
 
 
 public class MainActivity extends AppCompatActivity {
     private static final String LOG_TAG = MainActivity.class.getSimpleName();
 
     public static final String EXTRA_MESSAGE =
             "com.example.safiraaini.twoactivities.extra.MESSAGE";
 
     public static final int TEXT_REQUEST = 1;
 
     private EditText mMessageEditText;
     private TextView mReplyHeadTextView;
     private TextView mReplyTextView;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
 
         mMessageEditText = (EditText) findViewById(R.id.editText_main);
         mReplyHeadTextView = (TextView) findViewById(R.id.text_header_reply);
         mReplyTextView = (TextView) findViewById(R.id.text_message_reply);
 
         Log.d(LOG_TAG, "-------");
         Log.d(LOG_TAG, "onCreate");
 
         if (savedInstanceState != null) {
             boolean isVisible = savedInstanceState.getBoolean("reply_visible");
             // Show both the header and the message views. If isVisible is
             // false or missing from the bundle, use the default layout.
             if (isVisible) {
                 mReplyHeadTextView.setVisibility(View.VISIBLE);
 
                 mReplyTextView.setText(savedInstanceState.getString("reply_text"));
                 mReplyTextView.setVisibility(View.VISIBLE);
             }
         }
     }
     @Override
     public void onStart(){
         super.onStart();
         Log.d(LOG_TAG, "onStart");
     }
 
     @Override
     public void onRestart() {
         super.onRestart();
         Log.d(LOG_TAG, "onRestart");
     }
 
     @Override
     public void onResume() {
         super.onResume();
         Log.d(LOG_TAG, "onResume");
     }
 
     @Override
     public void onPause() {
         super.onPause();
         Log.d(LOG_TAG, "onPause");
     }
 
     @Override
     public void onStop() {
         super.onStop();
         Log.d(LOG_TAG, "onStop");
     }
 
     @Override
     public void onDestroy() {
         super.onDestroy();
         Log.d(LOG_TAG, "onDestroy");
     }
 
     @Override
     public void onSaveInstanceState(Bundle outState) {
         super.onSaveInstanceState(outState);
 
         // If the heading is visible, we have a message that needs to be saved.
         // Otherwise we're still using default layout.
         if (mReplyHeadTextView.getVisibility() == View.VISIBLE) {
             outState.putBoolean("reply_visible", true);
             outState.putString("reply_text", mReplyTextView.getText().toString());
         }
     }
 
     public void launchSecondActivity(View view) {
         Log.d(LOG_TAG, "Button clicked!");
         Intent intent = new Intent(this, SecondActivity.class);
 
         String message = mMessageEditText.getText().toString();
         intent.putExtra(EXTRA_MESSAGE, message);
         startActivityForResult(intent, TEXT_REQUEST);
     }
 
     public void onActivityResult(int requestCode, int resultCode,
                                  Intent data) {
         super.onActivityResult(requestCode, resultCode, data);
 
         if (requestCode == TEXT_REQUEST) {
             if (resultCode == RESULT_OK) {
                 String reply =
                         data.getStringExtra(SecondActivity.EXTRA_REPLY);
 
                 mReplyHeadTextView.setVisibility(View.VISIBLE);
                 mReplyTextView.setText(reply);
                 mReplyTextView.setVisibility(View.VISIBLE);
             }
         }
     }
 
 }


SecondActivity.java

package com.example.safiraaini.twoactivities;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

public class SecondActivity extends AppCompatActivity {

public static final String EXTRA_REPLY =
“com.example.safiraaini.twoactivities.extra.REPLY”;

private EditText mReply;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);

mReply = (EditText) findViewById(R.id.editText_second);
Intent intent = getIntent();

String message =
intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

TextView textView = (TextView) findViewById(R.id.text_Message);
textView.setText(message);
}

private static final String LOG_TAG =
SecondActivity.class.getSimpleName();

public void returnReply(View view) {
String reply = mReply.getText().toString();
Intent replyIntent = new Intent();
replyIntent.putExtra(EXTRA_REPLY, reply);
setResult(RESULT_OK, replyIntent);
Log.d(LOG_TAG, “End SecondActivity”);
finish();
}

@Override
protected void onStart() {
super.onStart();
Log.d(LOG_TAG, “onStart”);
}

@Override
public void onRestart() {
super.onRestart();
Log.d(LOG_TAG, “onRestart”);
}

@Override
public void onResume() {
super.onResume();
Log.d(LOG_TAG, “onResume”);
}

@Override
public void onPause() {
super.onPause();
Log.d(LOG_TAG, “onPause”);
}

@Override
public void onStop() {
super.onStop();
Log.d(LOG_TAG, “onStop”);
}

@Override
public void onDestroy() {
super.onDestroy();
Log.d(LOG_TAG, “onDestroy”);
}
}

Hasil :

 

2.2: Siklus Hidup Aktivitas dan Status Instance

Tugas 1. Menambahkan Callback Siklus Hidup ke TwoActivities

1.2 Mengimplementasikan callback ke MainActivity

package com.example.safiraaini.twoactivities;
 
 import android.content.Intent;
 import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
 import android.util.Log;
 import android.view.View;
 import android.widget.EditText;
 import android.widget.TextView;
 
 
 public class MainActivity extends AppCompatActivity {
     private static final String LOG_TAG = MainActivity.class.getSimpleName();
 
     public static final String EXTRA_MESSAGE =
             "com.example.safiraaini.twoactivities.extra.MESSAGE";
 
     public static final int TEXT_REQUEST = 1;
 
     private EditText mMessageEditText;
     private TextView mReplyHeadTextView;
     private TextView mReplyTextView;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
 
         mMessageEditText = (EditText) findViewById(R.id.editText_main);
         mReplyHeadTextView = (TextView) findViewById(R.id.text_header_reply);
         mReplyTextView = (TextView) findViewById(R.id.text_message_reply);
 
         Log.d(LOG_TAG, "-------");
         Log.d(LOG_TAG, "onCreate");
     }
     @Override
     public void onStart(){
         super.onStart();
         Log.d(LOG_TAG, "onStart");
     }
 
     @Override
     public void onRestart() {
         super.onRestart();
         Log.d(LOG_TAG, "onRestart");
     }
 
     @Override
     public void onResume() {
         super.onResume();
         Log.d(LOG_TAG, "onResume");
     }
 
     @Override
     public void onPause() {
         super.onPause();
         Log.d(LOG_TAG, "onPause");
     }
 
     @Override
     public void onStop() {
         super.onStop();
         Log.d(LOG_TAG, "onStop");
     }
 
     @Override
     public void onDestroy() {
         super.onDestroy();
         Log.d(LOG_TAG, "onDestroy");
     }
 
     public void launchSecondActivity(View view) {
         Log.d(LOG_TAG, "Button clicked!");
         Intent intent = new Intent(this, SecondActivity.class);
 
         String message = mMessageEditText.getText().toString();
         intent.putExtra(EXTRA_MESSAGE, message);
         startActivityForResult(intent, TEXT_REQUEST);
     }
 
     public void onActivityResult(int requestCode, int resultCode,
                                  Intent data) {
         super.onActivityResult(requestCode, resultCode, data);
 
         if (requestCode == TEXT_REQUEST) {
             if (resultCode == RESULT_OK) {
                 String reply =
                         data.getStringExtra(SecondActivity.EXTRA_REPLY);
 
                 mReplyHeadTextView.setVisibility(View.VISIBLE);
                 mReplyTextView.setText(reply);
                 mReplyTextView.setVisibility(View.VISIBLE);
             }
         }
     }
 
 }


 

1.3 Mengimplementasikan callback siklus hidup dalam SecondActivity

package com.example.safiraaini.twoactivities;
 
 import android.content.Intent;
 import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
 import android.util.Log;
 import android.view.View;
 import android.widget.EditText;
 import android.widget.TextView;
 
 public class SecondActivity extends AppCompatActivity {
 
     public static final String EXTRA_REPLY =
             "com.example.safiraaini.twoactivities.extra.REPLY";
 
     private EditText mReply;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_second);
 
         mReply = (EditText) findViewById(R.id.editText_second);
         Intent intent = getIntent();
 
         String message =
                 intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
 
         TextView textView = (TextView) findViewById(R.id.text_Message);
         textView.setText(message);
     }
 
     private static final String LOG_TAG =
             SecondActivity.class.getSimpleName();
 
     public void returnReply(View view) {
         String reply = mReply.getText().toString();
         Intent replyIntent = new Intent();
         replyIntent.putExtra(EXTRA_REPLY, reply);
         setResult(RESULT_OK, replyIntent);
         Log.d(LOG_TAG, "End SecondActivity");
         finish();
     }
 
     @Override
     protected void onStart() {
         super.onStart();
         Log.d(LOG_TAG, "onStart");
     }
 
     @Override
     public void onRestart() {
         super.onRestart();
         Log.d(LOG_TAG, "onRestart");
     }
 
     @Override
     public void onResume() {
         super.onResume();
         Log.d(LOG_TAG, "onResume");
     }
 
     @Override
     public void onPause() {
         super.onPause();
         Log.d(LOG_TAG, "onPause");
     }
 
     @Override
     public void onStop() {
         super.onStop();
         Log.d(LOG_TAG, "onStop");
     }
 
     @Override
     public void onDestroy() {
         super.onDestroy();
         Log.d(LOG_TAG, "onDestroy");
     }
 }

 

Tugas 2. Menyimpan dan memulihkan status instance aktivitas.

2.1 Simpan status instance aktivitas dengan onSaveInstanceState()

 

2.2. Memulihkan status instance aktivitas dalam onCreate()

 

2.3: Memulai Aktivitas dengan Intent Implisit

Tugas 1. Membuat proyek dan layout baru

1.1 Membuat proyek

 

Tugas 2. Mengimplementasikan “buka situs web”

2.1 Mendefinisikan metode openWebsite

 

Tugas 3. Mengimplementasikan “buka lokasi”

3.1 Definisikan metode openLocation

 

Tugas 4. Mengimplementasikan bagikan teks ini

4.1 Mengimplementasikan metode shareText

 

Tugas 5. Menerima Intent Implisit

5.1 Membuat Proyek & Layout

 

5.2 Memodifikasi Manifes Android untuk menambahkan filter intent

Activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:orientation="vertical"
     tools:context="com.example.safiraaini.implicitintents.MainActivity">
 
     <EditText
         android:id="@+id/website_edittext"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:ems="10"
         android:inputType="textPersonName"
         android:text="@string/edittext_uri"
         tools:layout_editor_absoluteX="16dp"
         tools:layout_editor_absoluteY="16dp" />
 
     <Button
         android:id="@+id/button"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="@string/open_website_button"
         tools:layout_editor_absoluteX="16dp"
         tools:layout_editor_absoluteY="62dp"
         android:layout_marginBottom="24dp"
         android:onClick="openWebsite"/>
 
     <EditText
         android:id="@+id/location_edittext"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:ems="10"
         android:inputType="textPersonName"
         android:text="@string/edittext_loc"
         tools:layout_editor_absoluteX="16dp"
         tools:layout_editor_absoluteY="123dp" />
 
     <Button
         android:id="@+id/open_location_button"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="@string/button_loc"
         tools:layout_editor_absoluteX="16dp"
         tools:layout_editor_absoluteY="169dp"
         android:onClick="openLocation"/>
 
     <EditText
         android:id="@+id/share_edittext"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:ems="10"
         android:inputType="textPersonName"
         android:text="@string/edittext_share"
         tools:layout_editor_absoluteX="16dp"
         tools:layout_editor_absoluteY="232dp" />
 
     <Button
         android:id="@+id/share_text_button"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="@string/button_share"
         tools:layout_editor_absoluteX="16dp"
         tools:layout_editor_absoluteY="278dp"
         android:onClick="shareText"/>
 
 </LinearLayout>

MainActivity.java

package com.example.safiraaini.implicitintents;
 
 import android.content.Intent;
 import android.net.Uri;
 import android.support.v4.app.ShareCompat;
 import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
 import android.util.Log;
 import android.view.View;
 import android.widget.EditText;
 
 public class MainActivity extends AppCompatActivity {
     private EditText mWebsiteEditText;
     private EditText mLocationEditText;
     private EditText mShareTextEditText;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
 
         mWebsiteEditText = (EditText) findViewById(R.id.website_edittext);
         mLocationEditText = (EditText) findViewById(R.id.location_edittext);
         mShareTextEditText = (EditText) findViewById(R.id.share_edittext);
 
     }
 
     public void openWebsite(View view) {
         String url = mWebsiteEditText.getText().toString();
 
         // Parse the URI and create the intent.
         Uri webpage = Uri.parse(url);
         Intent intent = new Intent(Intent.ACTION_VIEW, webpage);
 
         // Find an activity to hand the intent and start that activity.
         if (intent.resolveActivity(getPackageManager()) != null) {
             startActivity(intent);
         } else {
             Log.d("ImplicitIntents", "Can't handle this intent!");
         }
     }
 
     public void openLocation(View view) {
         String loc = mLocationEditText.getText().toString();
 
         // Parse the location and create the intent.
         Uri addressUri = Uri.parse("geo:0,0?q=" + loc);
         Intent intent = new Intent(Intent.ACTION_VIEW, addressUri);
 
         // Find an activity to handle the intent, and start that activity.
         if (intent.resolveActivity(getPackageManager()) != null) {
             startActivity(intent);
         } else {
             Log.d("ImplicitIntents", "Can't handle this intent!");
         }
     }
 
     public void shareText(View view) {
         String txt = mShareTextEditText.getText().toString();
         String mimeType = "text/plain";
 
         ShareCompat.IntentBuilder
                 .from(this)
                 .setType(mimeType)
                 .setChooserTitle("Share this text with: ")
                 .setText(txt)
                 .startChooser();
     }
 }

 

Hasil :

 

 

Lesson 1 Build Your First App

Nama  : Safira Aini

NIM    : 1202154315

Kelas   : SI-39-03

1.1 Memasang Android Studio dan Menjalankan Hello World

Tugas 1 : Memasang Android Studio

Pertama, melakukan pengecekkan java version. Jika versi javanya merupakan dibawah versi 7, dianjurkan untuk mendownload jdk terlebih dahulu. (Versi laptop saya : versi 8)

 

Melakukan proses instalasi android studio. Kemudian setelah instalasi selesai, pada Import Studio settings from pilih Do not import settings.

 

Proses instalasi android studio berhasil.

 

Melakukan download komponen-komponen android studio. Pada halaman utama, klik next

 

Memilih tipe setup untuk android studio, klik standard.

 

Melakukan verifikasi download component dengan klik Finish.

 

Proses downloading components.

 

Proses download component selesai. Klik Finish.

 

Tampilan awal Android Studio. Klik Start a new Studio project.

 

Tugas 2: Membuat aplikasi “Hello World”

Masukan nama aplikasi “Hello World’ dan tentukan lokasi penyimpanan.

 

Menu Target Android Divices.

 

Menambahkan aktivitas untuk mobile.

 

Deskripsi dari aktivitas yang kosong.

 

 

Menginstalasi komponen-komponen untuk Android Studio.

 

Membangun gradle dari project.

 

Tugas 3: Menjelajahi struktur dari project.

Melakukan expand pada menu Android Studio 

Melakukan instalasi terhadap komponen-komponen tambahan.

 

Melakukan expands terhadap menu manifest, java, res, value, gradle, dll.

 

Tugas 4 : Membuat Perangkat Virtual

Klik Tools > Android >AVD Manager

 

Klik +Create Virtual Device

 

Pilih Nexus 5 sebagai emulator.

 

Memilih system image API 27

 

Melakukan download dan install emulator.

 

Melakukan verifikasi konfigurasi emulator.

 

Emulator yang telah terpasang.

 

Tugas 5: Menjalankan aplikasi Anda di emulator

Pilih menu Run > Run App

 

Pilih emulator yang telah diinstall tadi.

 

Hasil :

 

Tugas 6 : Menambahkan pernyataan log ke aplikasi Anda

Menambahkan pernyataan log dengan menggunakan command :

Log.d(“MainActivity”, “Hello World”);


1.2 A: Membuat UI Interaktif Pertama Anda

Tugas 1 : Membuat Proyek Baru “Hello Toast”

Klik File > New > New Project…

 

Memberikan nama aplikasi “Hello Toast”

Selanjutnya mengikuti proses seperti pembuatan proyek Hello World….

 

Tugas 2 : Menambahkan tampilan untuk “Hello Toast” pada Layout Editor

2.1 Menjelajahi Layout Editor

Klik folder app > res > layout > activity_main.xml          

 

2.2 Mengubah grup tampilan ke LinearLayout

Pada panel Component Tree pilih Text.

 

Menambahkan command LinearLayout.

<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
xmlns:app=”http://schemas.android.com/apk/res-auto”
xmlns:tools=”http://schemas.android.com/tools”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:orientation=”vertical”
android:paddingBottom=”@dimen/activity_vertical_margin”
android:paddingLeft=”@dimen/activity_horizontal_margin”
android:paddingRight=”@dimen/activity_horizontal_margin”
android:paddingTop=”@dimen/activity_vertical_margin”
tools:context=”com.example.safiraaini.hellotoast.MainActivity”>

</LinearLayout>

2.3 Menambahkan tampilan ke Linear Layout

Menghapus Textview “Hello World”. Lalu, menambahkan button atas, textview, dan button bawah pada layout editor.

 

Tugas 3: Mengedit Layout “Hello Toast” dalam XML

3.1 Memeriksa properti pada Linear Layout dan mengeditnya.

 

3.2 Membuat sumber daya string pada setiap text dengan klik ALT + Enter pada setiap kata

 

3.3 Mengubah ukuran

 

3.4 Mengubah Warna Text dan Latar

Pada colors.xml:

<?xml version="1.0" encoding="utf-8"?>
 <resources>
     <color name="colorPrimary">#3F51B5</color>
     <color name="colorPrimaryDark">#303F9F</color>
     <color name="colorAccent">#FF4081</color>
     <color name="myBackgroundColor">#FFF043</color>
 </resources>

3.4 Gravitasi dan Berat

Pada dimens.xml:

<resources>
     <!-- Default screen margins, per the Android Design guidelines. -->
     <dimen name="activity_horizontal_margin">16dp</dimen>
     <dimen name="activity_vertical_margin">16dp</dimen>
     <dimen name="count_text_size">160sp</dimen>
 </resources>



<resources>
 <string name="app_name">Hello Toast</string>
 <string name="button_label_count">Count</string>
 <string name="button_label_toast">Toast</string>
 <string name="count_initial_value">0</string>
 <string name="toast_message">Hello Toast</string>
     </resources>

Pada styles.xml :

<resources>
 
     <!-- Base application theme. -->
     <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
         <!-- Customize your theme here. -->
         <item name="colorPrimary">@color/colorPrimary</item>
         <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
         <item name="colorAccent">@color/colorAccent</item>
     </style>
 
 </resources>

Tugas 4 : Menambahkan Handler OnClick

4.1 Menambahkan Properti OnClick

<?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
xmlns:app=”http://schemas.android.com/apk/res-auto”
xmlns:tools=”http://schemas.android.com/tools”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:orientation=”vertical”
android:paddingBottom=”@dimen/activity_vertical_margin”
android:paddingLeft=”@dimen/activity_horizontal_margin”
android:paddingRight=”@dimen/activity_horizontal_margin”
android:paddingTop=”@dimen/activity_vertical_margin”
tools:context=”com.example.safiraaini.hellotoast.MainActivity”
>

<Button
android:id=”@+id/button_toast”
android:onClick=”showToast”
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:text=”@string/button_label_toast”
android:background=”#010101″
android:textColor=”@android:color/white”
/>

<TextView
android:id=”@+id/show_count”
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:layout_weight=”2″
android:background=”#ffa7a9″
android:gravity=”center”
android:text=”@string/count_initial_value”
android:textColor=”#010101″
android:textSize=”@dimen/count_text_size”
android:textStyle=”bold”
/>

<Button
android:id=”@+id/button_count”
android:onClick=”countUp”
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:text=”@string/button_label_count”
android:background=”#010101″
android:textColor=”@android:color/white”
/>
</LinearLayout>

4.2 Menampilkan Toast dan meningkatkan hitungan pada tombol count

 

Hasil :

 


1.2B Menggunakan Layout

Tugas 1: Mengubah layout ke RelativeLayout

1.1  Menyalin dan melakukan refaktorisasi aplikasi Hello Toast

<resources>
<string name=”app_name”>Hello Relative</string>
<string name=”button_label_count”>Count</string>
<string name=”button_label_toast”>Toast</string>
<string name=”count_initial_value”>0</string>
<string name=”toast_message”>Hello Toast</string>
</resources>

1.2 Mengubah LinearLayout menjadi RelativeLayout

<?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res-auto"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical"
 android:paddingBottom="@dimen/activity_vertical_margin"
 android:paddingLeft="@dimen/activity_horizontal_margin"
 android:paddingRight="@dimen/activity_horizontal_margin"
 android:paddingTop="@dimen/activity_vertical_margin"
 tools:context="com.example.safiraaini.hellorelative.MainActivity">
 
 <Button
     android:id="@+id/button_toast"
     android:onClick="showToast"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:text="@string/button_label_toast"
     android:background="#010101"
     android:textColor="@android:color/white"/>
 
 <TextView
     android:id="@+id/show_count"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:layout_weight="2"
     android:background="#ffa7a9"
     android:gravity="center"
     android:text="@string/count_initial_value"
     android:textColor="#010101"
     android:textSize="@dimen/count_text_size"
     android:textStyle="bold" />
 
 <Button
     android:id="@+id/button_count"
     android:onClick="countUp"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:text="@string/button_label_count"
     android:background="#010101"
     android:textColor="@android:color/white"/>
 </RelativeLayout>

1.3    Atur ulang tampilan dengan tab Design

1.4    Memeriksa kode XML di tab Text

<?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:orientation="vertical"
     android:paddingBottom="@dimen/activity_vertical_margin"
     android:paddingLeft="@dimen/activity_horizontal_margin"
     android:paddingRight="@dimen/activity_horizontal_margin"
     android:paddingTop="@dimen/activity_vertical_margin"
     tools:context="com.example.safiraaini.hellorelative.MainActivity">
 
     <Button
         android:id="@+id/button_toast"
         android:onClick="showToast"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:text="@string/button_label_toast"
         android:background="#010101"
         android:textColor="@android:color/white"/>
 
     <TextView
         android:id="@+id/show_count"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_alignParentLeft="true"
         android:layout_alignParentStart="true"
         android:layout_below="@+id/button_toast"
         android:layout_weight="2"
         android:background="#ffa7a9"
         android:gravity="center"
         android:text="@string/count_initial_value"
         android:textColor="#010101"
         android:textSize="@dimen/count_text_size"
         android:textStyle="bold" />
 
     <Button
         android:id="@+id/button_count"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_alignParentLeft="true"
         android:layout_alignParentStart="true"
         android:layout_below="@+id/show_count"
         android:background="#010101"
         android:onClick="countUp"
         android:text="@string/button_label_count"
         android:textColor="@android:color/white" />
 </RelativeLayout>

1.5 Mengatur ulang elemen dalam RelativeLayout

<?xml version=”1.0″ encoding=”utf-8″?>
<RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android”
xmlns:app=”http://schemas.android.com/apk/res-auto”
xmlns:tools=”http://schemas.android.com/tools”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:orientation=”vertical”
android:paddingBottom=”@dimen/activity_vertical_margin”
android:paddingLeft=”@dimen/activity_horizontal_margin”
android:paddingRight=”@dimen/activity_horizontal_margin”
android:paddingTop=”@dimen/activity_vertical_margin”
tools:context=”com.example.safiraaini.hellorelative.MainActivity”
>

<Button
android:id=”@+id/button_toast”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:background=”#010101″
android:onClick=”showToast”
android:text=”@string/button_label_toast”
android:textColor=”@android:color/white”
/>

<TextView
android:id=”@+id/show_count”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignParentTop=”true”
android:layout_toEndOf=”@+id/button_toast”
android:layout_toRightOf=”@+id/button_toast”
android:layout_weight=”2″
android:background=”#ffa7a9″
android:gravity=”center”
android:text=”@string/count_initial_value”
android:textColor=”#010101″
android:textSize=”@dimen/count_text_size”
android:textStyle=”bold”
/>

<Button
android:id=”@+id/button_count”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_alignParentLeft=”true”
android:layout_alignParentStart=”true”
android:layout_below=”@+id/button_toast”
android:background=”#010101″
android:onClick=”countUp”
android:text=”@string/button_label_count”
android:textColor=”@android:color/white”
/>
</RelativeLayout>

Hasil :

  

Tugas 2 : Mengubah Layout menjadi ConstraintLayout

2.1 Menyalin dan Refaktorisasi dari HelloToast

 

2.2 Menambahkan ConstraintLayout ke proyek Anda

 

2.3 Mengonversikan Layout ke ConstraintLayout

 

 

2.4 Menjelajahi layout editor

 

2.5 Menghapus Pembatas

 

2.6 Mengubah Ukuran

 

2.7 Menambahkan pembatas ke tampilan

 

 

1.3: Working with TextView Elements

Tugas 1: Menambahkan beberapa tampilan teks

1.1 Membuat proyek dan elemen TextView

 

Melakukan proses yang sama dengan pembuatan proyek sebelumnya….

 

Menyalin dan Mengekstrak String

 

 

 

 

 

 

1.2 Menambahkan teks artikel

 

Tugas 2 : Menambah Tautan Web Aktif dan Scroll View

2.1 Menambah Autolink

2.2 Menambah Scroll View

 

 

<?xml version=”1.0″ encoding=”utf-8″?>
<RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android”
xmlns:app=”http://schemas.android.com/apk/res-auto”
xmlns:tools=”http://schemas.android.com/tools”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
tools:context=”com.example.safiraaini.scrollingtext.MainActivity”
>

<TextView
android:id=”@+id/article_heading”
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:background=”@color/colorPrimary”
android:padding=”@dimen/padding_regular”
android:text=”@string/article_title”
android:textAppearance=”@android:style/TextAppearance.Large”
android:textColor=”@android:color/white”
android:textStyle=”bold”
android:paddingBottom=”10dp”
android:paddingLeft=”10dp”
android:paddingRight=”10dp”
android:paddingTop=”10dp”
/>

<TextView
android:id=”@+id/article_subheading”
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:layout_below=”@id/article_heading”
android:padding=”@dimen/padding_regular”
android:paddingBottom=”10dp”
android:paddingLeft=”10dp”
android:paddingRight=”10dp”
android:paddingTop=”10dp”
android:text=”@string/article_subtitle”
android:textAppearance=”@android:style/TextAppearance”
/>

<ScrollView
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_below=”@id/article_subheading”
>

<TextView
android:id=”@+id/article”
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:layout_below=”@id/article_subheading”
android:autoLink=”web”
android:lineSpacingExtra=”@dimen/line_spacing”
android:text=”@string/article_text”
/>
</ScrollView>

</RelativeLayout>

Hasil :

 

Tugas 3 : Menggulir Beberapa Elemen

3.1 Menambahkan LinearLayout ke Scroll View

 

 

<?xml version=”1.0″ encoding=”utf-8″?>
<RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android”
xmlns:app=”http://schemas.android.com/apk/res-auto”
xmlns:tools=”http://schemas.android.com/tools”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
tools:context=”com.example.safiraaini.scrollingtext2.MainActivity”
>

<TextView
android:id=”@+id/article_heading”
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:background=”#010101″
android:padding=”@dimen/padding_regular”
android:text=”@string/article_title”
android:textAppearance=”@android:style/TextAppearance.Large”
android:textColor=”@android:color/white”
android:textStyle=”bold”
android:paddingBottom=”10dp”
android:paddingLeft=”10dp”
android:paddingRight=”10dp”
android:paddingTop=”10dp”
/>

<ScrollView
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android:layout_below=”@id/article_heading”
>

<LinearLayout
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:orientation=”vertical”
>
<TextView
android:id=”@+id/article_subheading”
android:layout_width=”match_parent”
android:layout_height=”wrap_content”

android:padding=”@dimen/padding_regular”
android:paddingBottom=”10dp”
android:paddingLeft=”10dp”
android:paddingRight=”10dp”
android:paddingTop=”10dp”
android:text=”@string/article_subtitle”
android:textAppearance=”@android:style/TextAppearance”
/>

<TextView
android:id=”@+id/article”
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:layout_below=”@id/article_subheading”
android:autoLink=”web”
android:lineSpacingExtra=”@dimen/line_spacing”
android:text=”@string/article_text”
/>
</LinearLayout>
</ScrollView>

</RelativeLayout>

Hasil :

 

 

1.4: Mempelajari Tentang Sumber Daya yang Tersedia

Tugas 1. Menjelajahi dokumentasi developer Android resmi

1.1.   Menjelajahi dokumentasi Android resmi

 

Tugas 2: Menggunakan template proyek

2.1. Menjelajahi arsitektur Basic Activity

 

 

 

 

2.2. Menjelajahi cara menambahkan aktivitas menggunakan template

 

 

 

Tugas 3: Belajar dari kode contoh

3.1. Contoh Kode Android

 

 

 

3.2 Dokumentasi Offline

 

 

 

 

Tugas 4: Sumber daya selengkapnya

4.1. Telusuri di Stack Overflow menggunakan tag

 

« Older posts

© 2024 Xaveera.

Theme by Anders NorenUp ↑