Академический Документы
Профессиональный Документы
Культура Документы
Android Studio
Cara Mengganti Icon Pada Android Studio:
1. Kita langsung saja pada sebuah project sederhana yang sudah kita buat sebelumnya. Pertama-
tama klik tanda panah pada directory “res” agar kelihatan sub directory yang ada diadalmnya.
Setelah itu pada directory “mipmap” klik kanan >> pilih new >> pilih Image Assets.
2. Maka akan muncul jendela configure Image Assets. Pada Assets Type pilih “Image”
kemudian pada Path, kamu cari gambar yang akan di jadikan icon aplikasi kamu.
Dan jangan lupa SHARE artikel ini jika bermanfaat menurut kalian, supaya lebih banyak lagi
orang yang tau. Sekian dari saya. Terimakasih, Salam Bacacoding.
Cara Membuat Splash Screen dengan
Mudah di Android Studio
Splash screen merupakan tampilan yang muncul saat pertama kali kita membuka sebuah aplikasi.
Splash screen biasanya menampilkan logo, nama, dan lainnya yang berhubungan dengan
aplikasi. Beberapa aplikasi yang menggunakan splash screen antara lain : facebook, youtube,
gojek dan lain sebagainya.
Baiklah tanpa panjang lebar inilah tutorial cara membuat splash screen pada android studio.
Tunggu sampai workspace android studio terbuka dengan baik dan siap digunakan.
2. Atur layout
Selanjutnya atur layout splash screennya pada activity_main.xml. Untuk logonya sendiri pada
tutorial cara membuat splash screen pada android studio ini menggunakan logo dari aplikasi
gojek. Bisa di download disini.
Jika sudah didownload masukan logo atau gambar yang ingin digunakan pada drawable dengan
cara :
<ImageView
android:layout_width="160dp"
android:layout_height="60dp"
android:id="@+id/logo"
android:src="@drawable/logogojek"
android:layout_centerVertical="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
</RelativeLayout>
Pada kode-kode di atas kita bisa melihat layout yang digunakan adalah relative layout dengan
ditambahkan satu widget imageview untuk menampilkan gambar.
3. Atur style
Pada styles.xml yang berada pada folder res kita akan menghilangkan app bar (action bar) dan
mengganti warna primarynya dengan warna putih. Silahkan masukan kode-kode dibawah ini.
<resources>
</resources>
4. Buat Activity_home
Splash screen yang dibuat pada tutorial ini hanya akan tampil selama 4 detik setelah itu akan
langsung ditampilkan menu utama dari aplikasi android yang sudah diberi splash screen.
Maka silahkan buat activity baru dengan nama activity home dengan cara klik kanan pada nama
package lalu :
pilih new
activity –> empty activity
beri nama home (activity_home)
Tambahkan kode-kode dibawah ini pada activity_home.xml :
tools:context=".home">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="halo ini adalah tutorial splash screen "
android:textSize="30sp"/>
</RelativeLayout>
6. MainActivity.java
Buka MainActivity.java lalu tambahkan kode-kode java berikut.
package badoystudio.com.splashscreengojek;
import android.content.Intent;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
//4000=4 detik
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
}
},waktu_loading);
}
}
Perhatikan kode di atas waktu_loading=4000 yaitu splash screen nantinya hanya akan muncul
selama 4 detik saja kemudian langsung pindah ke activity yang lain.
7. AndroidManifests.xml
Terakhir tambahkan script dibawah ini pada AndroidManifest.xml yang ada pada manifest
<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" />
</manifest>
Ditutorial cara membuat splash screen pada android studio ini penulis masih menjadikan
mainactivity untuk splash screennya. Sehingga tidak ada yang diubah pada android manifestnya
(defaultnya seperti kode-kode di atas).
8. Running Aplikasi
Running aplikasi bisa menggunakan android virtual device, emulator genymotion, atau langsung
ke smartphone yang kamu miliki. Maka akan tampil seperti dibawah ini
Penulis menggunakan oppo a3s untuk merunning aplikasi pada tutorial ini.
Itulah cara membuat splash screen pada android studio. Saya rasa cukup mudah bukan. Silahkan
praktekan dan modifikasi sesuai kebutuhan aplikasi android yang sedang kamu buat. Semoga
bermanfaat.
30 Menit Membuat Login UI Design Menarik
Android
January 12, 2018 Guntoro Android Simple Example
Pada tutorial kali ini kita akan belajar selama 30 Menit Membuat Login UI Design Menarik
Android menggunakan Android Studio.
Sebelumnya kita sudah belajar membuat ui dashboard menu menarik yang bisa kamu pelajari
pada tautan berikut ini.
Baca Juga :
Sesuai judul tutorial ini kita hanya akan fokus pada pembuatan UI designnya saja dan tidak ada
database ataupun coding java. Baiklah tanpa panjang lebar kita langsung praktekan membuat UI
design login android.
Buka android studio kemudian buat sebuah project baru dengan nama project ” Uilogin ” .
Kita akan membuat design UI login dengan tambahan material design agar tampilan lebih
kekinian. Tambahkan kode berikut pada build.gradle(module.app).
compile 'com.android.support:design:24.2.0'
Setelah ditambahkan jangan lupa klik sync now. Pastikan laptop terhubung ke internet.
3. Tambahkan Icon
4. Background Lingkaran
5. Buat Layout
Buka activity_main.xml. Disini kita akan membuat layout UI login menggunakan kode-kode
xml. Layout yang akan digunakan yaitu : Relative layout dan Linear Layout.
Layout utama ditandai dengan box no. 1 adalah Relative Layout. Kode xml yang digunakan :
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#4A9586"
android:orientation="vertical"
android:scrollbarAlwaysDrawVerticalTrack="true">
</RelativeLayout>
Background putih ditandai dengan box no. 2 adalah Relative Layout. Kode xml yang digunakan :
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/login_title"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:layout_marginTop="70dp"
android:background="#fff"
android:elevation="4dp"
android:orientation="vertical"
android:padding="20dp"
android:id="@+id/relativeLayout">
</RelativeLayout>
Untuk menempatkan button, textview dan edit text ditandai dengan box no. 3 adalah Linear
Layout :
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingTop="30dp">
</Linear Layout>
6. Tambahkan Widget
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/login_title"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:layout_marginTop="70dp"
android:background="#fff"
android:elevation="4dp"
android:orientation="vertical"
android:padding="20dp"
android:id="@+id/relativeLayout">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingTop="30dp">
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/username"
android:hint="User Name"
android:inputType="textEmailAddress" />
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:drawableLeft="@drawable/password"
android:hint="Password"
android:inputType="numberPassword" />
</android.support.design.widget.TextInputLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:paddingTop="5dp"
android:text="Forgot Password?" />
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="22dp"
android:background="#d67601"
android:text="Sign in"
android:textAllCaps="false"
android:textColor="#fff"
android:textSize="18sp" />
</LinearLayout>
</RelativeLayout>
<ImageButton
android:id="@+id/user_profile_photo"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_below="@+id/login_title"
android:layout_centerHorizontal="true"
android:layout_marginTop="16dp"
android:background="@drawable/background_profile"
android:elevation="4dp"
android:src="@drawable/user_icon" />
<TextView
android:id="@+id/login_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="26dp"
android:gravity="center_horizontal"
android:text="Login "
android:textColor="#fff"
android:textSize="26sp"
android:textStyle="bold"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true" />
</RelativeLayout>
7. Running Aplikasi
Jika sudah tidak ada error silahkan running melalui android virtual device (AVD), emulator
genymotion, atau langsung ke smartphone android yang kamu punya.
Mudah bukan untuk membuat Login UI Design Menggunakan Material Design?.
Silahkan dicoba dan dimodifikasi sesuai kebutuhan, semoga bermanfaat dan jangan lupa tekan
tombol share.
Jika sebelumnya kita pernah belajar membuat ui login desain menarik dalam 30
menit menggunakan android studio. Kali ini kita akan belajar membuat form login android pada
android studio dengan menggunakan sqlite database. Tutorial ini juga dilengkapi source code
yang bisa kamu download secara gratis (Link download ada di akhir).
Untuk aplikasi login sqlite yang sudah running kamu bisa melihatnya pada video dibawah ini.
Membuat Login Android Dengan SQLite Database
Tanpa basa basi langsung saja kita praktekan membuat login android menggunakan sqlite
database.
Langkah pertama silahkan buat project baru di android studio dengan menggunakan nama
project loginsqlite. Jika masih bingung kamu bisa membaca tutorial membuat project pertama di
android.
Tambahkan library material design dengan cara klik gradle (module:app) > masukan 1 baris
kode berikut pada dependencies > klik sync now (pastikan terknoneksi dengan internet )
implementation 'com.android.support:design:26.1.0'
3. Edit String
Edit string yang nantinya digunakan untuk nama aplikasi dan beberapa komponen widget.
Buka res > values > string.xml. disiniKamu bisa pelajari struktur folder android .
<resources>
<string name="app_name">LoginRegisterScreenDesign</string>
<string name="create_account"><font color="#00ff00">text</font></string>
<string name="email">Email</string>
<string name="password">Password</string>
<string name="login">Login</string>
<string name="username">Username</string>
<string name="register">Register</string>
<string name="back_to_login">Back to Login</string>
</resources>
4. Edit Color
Edit warna yang dengan cara buka res > values > colors.xml.
Copykan gambar/ icon pendukung (download disini ). Caranya klik kanan pada drawable
> klik paste.
6. Edit Style
Edit tema pada res > values > styles.xml. Dalam aplikasi yang akan kita buat ini kita tidak akan
menampilkan action bar (app bar). Sehingga kode-kodenya kita edit menjadi seperti seperti
berikut.
<resources>
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<style name="AppTheme.AppBarOverlay"
parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
</resources>
7. Activity Login
Buat activity login dengan cara klik folder java > klik kanan nama package > New > Activity
> Empty Activity > Isikan Nama LoginActivity. Sehingga akan terdapat class java
LoginActivity.java dan layout activity_login.xml.
LoginActivity.java
import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.Snackbar;
import android.support.design.widget.TextInputLayout;
import android.support.v7.app.AppCompatActivity;
import android.text.Html;
import android.text.Spanned;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
//Declaration EditTexts
EditText editTextEmail;
EditText editTextPassword;
//Declaration TextInputLayout
TextInputLayout textInputLayoutEmail;
TextInputLayout textInputLayoutPassword;
//Declaration Button
Button buttonLogin;
//Declaration SqliteHelper
SqliteHelper sqliteHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
sqliteHelper = new SqliteHelper(this);
initCreateAccountTextView();
initViews();
//Authenticate user
User currentUser = sqliteHelper.Authenticate(new
User(null, null, Email, Password));
} else {
}
}
}
});
//this method used to set Create account TextView text and click event(
maltipal colors
// for TextView yet not supported in Xml so i have done it
programmatically)
private void initCreateAccountTextView() {
TextView textViewCreateAccount = (TextView)
findViewById(R.id.textViewCreateAccount);
textViewCreateAccount.setText(fromHtml("<font color='#ffffff'>I don't
have account yet. </font><font color='#0c0099'>create one</font>"));
textViewCreateAccount.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(LoginActivity.this,
RegisterActivity.class);
startActivity(intent);
}
});
}
return valid;
}
activity_login.xml
Untuk membuat layout halaman login, silahkan ketikan kode-kode dibawah ini.
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:orientation="vertical">
<ImageView
android:id="@+id/imageView"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center_horizontal"
android:layout_margin="16dp"
android:src="@drawable/usericon" />
<android.support.design.widget.TextInputLayout
android:id="@+id/textInputLayoutEmail"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
app:errorEnabled="true">
<android.support.design.widget.TextInputEditText
android:id="@+id/editTextEmail"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/email"
android:inputType="textEmailAddress" />
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:id="@+id/textInputLayoutPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
app:errorEnabled="true"
app:passwordToggleEnabled="true"
app:passwordToggleTint="@color/colorAccent">
<android.support.design.widget.TextInputEditText
android:id="@+id/editTextPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/password"
android:inputType="textPassword" />
</android.support.design.widget.TextInputLayout>
<Button
android:id="@+id/buttonLogin"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="16dp"
android:background="@color/colorAccent"
android:text="@string/login"
android:textColor="@android:color/white" />
<TextView
android:id="@+id/textViewCreateAccount"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:layout_marginTop="16dp"
android:gravity="center_horizontal" />
</LinearLayout>
</ScrollView>
Layout Login
8. Activity Register
Buat activity register dengan cara klik java > klik kanan nama package > New > Activity >
Empty Activity > Isikan Nama RegisterActivity. Sehingga akan terdapat class java
RegisterActivity.java dan layout activity_register.xml.
RegisterActivity.java
import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.Nullable;
import android.support.design.widget.Snackbar;
import android.support.design.widget.TextInputLayout;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class RegisterActivity extends AppCompatActivity {
//Declaration EditTexts
EditText editTextUserName;
EditText editTextEmail;
EditText editTextPassword;
//Declaration TextInputLayout
TextInputLayout textInputLayoutUserName;
TextInputLayout textInputLayoutEmail;
TextInputLayout textInputLayoutPassword;
//Declaration Button
Button buttonRegister;
//Declaration SqliteHelper
SqliteHelper sqliteHelper;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
sqliteHelper = new SqliteHelper(this);
initTextViewLogin();
initViews();
buttonRegister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (validate()) {
String UserName = editTextUserName.getText().toString();
String Email = editTextEmail.getText().toString();
String Password = editTextPassword.getText().toString();
return valid;
}
}
activity_register.xml
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:orientation="vertical">
<ImageView
android:id="@+id/imageView"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center_horizontal"
android:layout_margin="10dp"
android:src="@drawable/usericon" />
<android.support.design.widget.TextInputLayout
app:errorEnabled="true"
android:id="@+id/textInputLayoutUserName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp">
<android.support.design.widget.TextInputEditText
android:id="@+id/editTextUserName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/username"
android:inputType="textPersonName" />
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:id="@+id/textInputLayoutEmail"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
app:errorEnabled="true">
<android.support.design.widget.TextInputEditText
android:id="@+id/editTextEmail"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/email"
android:inputType="textEmailAddress" />
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:id="@+id/textInputLayoutPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
app:errorEnabled="true"
app:passwordToggleEnabled="true"
app:passwordToggleTint="@color/colorAccent">
<android.support.design.widget.TextInputEditText
android:id="@+id/editTextPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/password"
android:inputType="textPassword" />
</android.support.design.widget.TextInputLayout>
<Button
android:id="@+id/buttonRegister"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@android:color/white"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:layout_weight="1"
android:background="@color/colorAccent"
android:text="@string/register" />
<TextView
android:id="@+id/textViewLogin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:gravity="center"
android:text="@string/back_to_login"
android:textColor="@android:color/white" />
</LinearLayout>
</ScrollView>
Layout Register
9. Class SqliteHelper
Tambahkan class SqliteHelper. Untuk membuatnya silahkan klik folder java > klik kanan
pada nama package > pilih new > class > beri nama class SqliteHelper. Masukan kode-kode
berikut ini pada SqliteHelper.java (tempatkan dibawah nama package).
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
//DATABASE NAME
public static final String DATABASE_NAME = "loopwiki.com";
//DATABASE VERSION
public static final int DATABASE_VERSION = 1;
//TABLE NAME
public static final String TABLE_USERS = "users";
//COLUMN email
public static final String KEY_EMAIL = "email";
//COLUMN password
public static final String KEY_PASSWORD = "password";
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
//Create Table when oncreate gets called
sqLiteDatabase.execSQL(SQL_TABLE_USERS);
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
//drop table to create new one if database version updated
sqLiteDatabase.execSQL(" DROP TABLE IF EXISTS " + TABLE_USERS);
}
// insert row
long todo_id = db.insert(TABLE_USERS, null, values);
}
//if user password does not matches or there is no record with that
email then return @false
return null;
}
Nama database
Versi database
Tabel
Kolom
Tambahkan class User yang akan dijadikan model dari user. Untuk membuatnya sama seperti
point 8, lalu beri nama class User. Tambahkan kode-kode dibawah ini pada User.java.
Jika login berhasil maka aplikasi akan menampilkan home screen. Home screen yang kita buat
kali ini hanya menampilkan komponen TextView.Tambahkan kode-kode dibawah ini
pada activity_main.xml.
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:text="Kamu telah berhasil login "
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
Buka AndroidManifest.xml yang ada pada folder app > manifest. Edit kode-kodenya sehingga
menjadi seperti dibawah ini(pakcagenya sesuaikan dengan nama package yang kamu buat).
<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=".LoginActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".RegisterActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar" />
<activity
android:name=".MainActivity"
android:label="Home Screen"
android:theme="@style/AppTheme.NoActionBar" />
</application>
</manifest>
Running project menggunakan emulator bawaan anroid, genymotion, atau langsung melalui
smartphone android yang kamu miliki. Maka hasil akhirnya adalah seperti gambar dibawah ini.
implementation 'com.android.support:gridlayout-v7:26.1.0'
3. Tambahkan Icon
Tambahkan icon-icon pada drawable. Icon-icon yang saya gunakan didownload dari
freepick.com. Namun untuk mempermudah silahkan unduh dari file pendukung
pembelajaran yang sudah penulis disediakan. Klik unduh icon.
Untuk menambahkannya bisa dengan cara klik kanan pada folder drawable >
pilih show in explorer > lalu pastekan icon pada folder drawable.
Bisa juga dengan langsung mengcopykan icon dan langsung pastekan pada folder
drawable. Jika masih bingung pelajari tutorial dibawah ini.
4. Edit Layout
Relative Layout
Frame Layout
Grid Layout
<FrameLayout
app:layout_columnWeight="1"
app:layout_rowWeight="1"
android:background="#5F9EA0"
>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:id="@+id/user"
android:src="@drawable/user"/>
<TextView
android:layout_width="wrap_content"
android:layout_marginTop="10dp"
android:textSize="20sp"
android:textColor="#FFFFFF"
android:layout_height="wrap_content"
android:layout_below="@+id/user"
android:layout_centerHorizontal="true"
android:text="Profile"/>
</RelativeLayout>
</FrameLayout>
<FrameLayout
app:layout_columnWeight="1"
app:layout_rowWeight="1"
android:background="#D2691E">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:id="@+id/job"
android:src="@drawable/pin"/>
<TextView
android:layout_width="wrap_content"
android:layout_marginTop="10dp"
android:textSize="20sp"
android:textColor="#FFFFFF"
android:layout_height="wrap_content"
android:layout_below="@+id/job"
android:layout_centerHorizontal="true"
android:text="Search Job"/>
</RelativeLayout>
</FrameLayout>
<FrameLayout
app:layout_columnWeight="1"
app:layout_rowWeight="1"
android:background="#CD5C5C">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:id="@+id/notif"
android:src="@drawable/bell"/>
<TextView
android:layout_width="wrap_content"
android:layout_marginTop="10dp"
android:textSize="20sp"
android:textColor="#FFFFFF"
android:layout_height="wrap_content"
android:layout_below="@+id/notif"
android:layout_centerHorizontal="true"
android:text="Notification"/>
</RelativeLayout>
</FrameLayout>
<FrameLayout
app:layout_columnWeight="1"
app:layout_rowWeight="1"
android:background="#B8860B"
>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:id="@+id/mail"
android:src="@drawable/mail"/>
<TextView
android:layout_width="wrap_content"
android:layout_marginTop="10dp"
android:textColor="#FFFFFF"
android:textSize="20sp"
android:layout_height="wrap_content"
android:layout_below="@+id/mail"
android:layout_centerHorizontal="true"
android:text="Messages"/>
</RelativeLayout>
</FrameLayout>
<FrameLayout
app:layout_columnWeight="1"
app:layout_rowWeight="1"
android:background="#2E8B57"
>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:id="@+id/rate"
android:src="@drawable/star"/>
<TextView
android:layout_width="wrap_content"
android:layout_marginTop="10dp"
android:textColor="#FFFFFF"
android:textSize="20sp"
android:layout_height="wrap_content"
android:layout_below="@+id/rate"
android:layout_centerHorizontal="true"
android:text="Rate Card"/>
</RelativeLayout>
</FrameLayout>
<FrameLayout
app:layout_columnWeight="1"
app:layout_rowWeight="1"
android:background="#BC8F8F">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:id="@+id/rev"
android:src="@drawable/like"/>
<TextView
android:layout_width="wrap_content"
android:layout_marginTop="10dp"
android:textSize="20sp"
android:layout_height="wrap_content"
android:layout_below="@+id/rev"
android:layout_centerHorizontal="true"
android:textColor="#FFFFFF"
android:text="Review "/>
</RelativeLayout>
</FrameLayout>
</android.support.v7.widget.GridLayout>
5. Edit String
Kita ubah nama appnya menggunakan nama “ Dashboard “. Tambahkan kode-kode
berikut pada Strings.xml.
<resources>
<string name="app_name">Dashboard</string>
</resources>
6. Edit Color
7. Running Aplikasi
Jika sudah tidak ada error pada kode-kode diatas silahkan running aplikasi dashboard ini
menggunakan :
Disini saya menggunakan OPPO A3S untuk merunningnya. Dan hasilnya seperti gambar
dibawah ini.
Kesimpulan
Tutorial ini hanya menekankan pada pembuatan UI saja makanya tidak ada penambahan bahasa
java pada MainActivity.java. Untuk memberikan action ke halaman lain ketika salah satu icon
di klik, silahkan tambahkan Intent. Tutorialnya bisa dibaca di : Cara menggunakan intent pada
android studio.
Cukup mudah bukan untuk membuat tampilan dashboard ? silahkan dicoba dan dimodifikasi
sesuai kebutuhan aplikasi teman-teman. Jangan lupa tekan tombol sharenya dan Semoga
bermanfaat.
Contoh kasus : Badoystudio.com hanya bisa diakses melalui web tidak mempunyai aplikasi
android. Maka dengan WebView kita bisa membuat aplikasi androidnya (berbentuk apk)
tentunya dapat diinstall pada smartphone android sehingga ketika kita ingin mengakses
badoystudio.com hanya perlu menyentuh icon badoystudio yang sudah terinstall dismartphone
android.
<WebView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:id="@+id/webView"
/>
Untuk memuat url web ke WebView, gunakan metode loadUrl (String url) dari kelas WebView,
dengan script :
webView.loadUrl("https://badoystudio.com");
Layout webview badoystudio.com ini akan ditambahkan progress bar supaya saat proses load
website akan menampilkan icon loading. Untuk script lengkapnya yaitu sebagai berikut :
<WebView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:id="@+id/webView"
/>
<ProgressBar
style="?android:attr/progressBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="110dp"
android:id="@+id/progressBar2"
/>
</RelativeLayout>
2. MainActivity.java
Tambahkan script untuk memanggil url website, object class Webview, dan proses progress bar
pada MainActivity.java yaitu sebagai berikut :
package badoystudio.com.webview;
import android.graphics.Bitmap;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return super.shouldOverrideUrlLoading(view, url);
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if((keyCode==KeyEvent.KEYCODE_BACK) && webView.canGoBack()){
webView.goBack();
return true;
}
Script Dibawah Digunakan Untuk Back Ke Webview ketika kita sudah membuka konten yang
terdapat pada website.
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if((keyCode==KeyEvent.KEYCODE_BACK) && webView.canGoBack()){
webView.goBack();
return true;
}
3. Style.xml
Agar terlihat lebih baik ui nya hilangkan actionbar webview dengan script dibawah ini :
<resources>
</resources>
4. AndroidManifests.xml
<uses-permission android:name="android.permission.INTERNET"/>
<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.VIEW" />
<action android:name="android.intent.action.MAIN" />
</manifest>
Silahkan running project melalui android virtual device, emulator genymotion, atau langsung
menggunakan smartphone yang kamu miliki. Maka hasilnya akan seperti gambar berikut :
Mudah bukan untuk membuat web kita menjadi apk webview pada android studio. Share ya jika
Tutorial kali ini kita akan membuat intro slider menggunakan android studio. Intro Slider
nantinya akan menampilkan beberapa slide yang bisa di geser oleh user sebelum masuk ke menu
utama pada sebuah aplikasi.
Kita akan menambahkan 2 button lewati dan lanjut, jika ditekan lewati (skip) itu artinya user
tidak ingin melihat slider melainkan ingin langsung ke menu utama. Jika ditekan lanjut
(next) maka slider akan tampil / menggeser sampai dengan slider terakhir baru akan ditampilkan
menu utamanya.
Buat project baru pada android studio, kemudian pilih empty activity
Tambahkan icon pendukung pada drawable yang nantinya akan ditampilkan pada slider
download gambar disini. (icon didownload dari flaticon.com)
2. Atur Warna
Buka color.xml atur warna background, dan warna lingkaran kecil untuk perpindahan slider.
Untuk warnanya bisa anda sesuaikan sendiri dengan kode-kode warna menggunakan
hexadesimal. Kemudian Tambahkan script berikut :
<resources>
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color>
<array name="array_dot_active">
<item>@color/dot_light_screen1</item>
<item>@color/dot_light_screen2</item>
<item>@color/dot_light_screen3</item>
<item>@color/dot_light_screen4</item>
</array>
<array name="array_dot_inactive">
<item>@color/dot_dark_screen1</item>
<item>@color/dot_dark_screen2</item>
<item>@color/dot_dark_screen3</item>
<item>@color/dot_dark_screen4</item>
</array>
</resources>
Buka string.xml kemudian atur teks yang nantinya akan ditampilkan pada intro slider (teks
button, content slider). Adapun script yang saya gunakan yaitu :
<resources>
<string name="app_name">Intro Slider</string>
<string name="title_activity_welcome">Home Screen</string>
<string name="next">LANJUT</string>
<string name="skip">LEWATI</string>
<string name="start">MULAI</string>
<string name="slide_1_title">KULINER</string>
<string name="slide_1_desc">Rasakan Berbagai Kuliner yang Akan
Memanjakan Lidahmu</string>
<string name="slide_2_title">HOTEL</string>
<string name="slide_2_desc">Temukan Hotel yang Nyaman Untuk
Istirahat Perjalananmu</string>
<string name="slide_3_title">WISATA</string>
<string name="slide_3_desc">Destinasi Menarik Menantimu. Segera
Pilih Destinasi Wisatamu</string>
<string name="slide_4_title">GUIDE</string>
<string name="slide_4_desc">Cari Guide Untuk Menemani Perjalananmu
Agar semakin asyik </string>
</resources>
<resources>
<style name="AppTheme.AppBarOverlay"
parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
</resources>
<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="fab_margin">16dp</dimen>
<dimen name="dots_height">30dp</dimen>
<dimen name="dots_margin_bottom">20dp</dimen>
<dimen name="img_width_height">120dp</dimen>
<dimen name="slide_title">30dp</dimen>
<dimen name="slide_desc">16dp</dimen>
<dimen name="desc_padding">40dp</dimen>
</resources>
Intro Slider hanya akan tampil satu kali yaitu ketika aplikasi sudah selesai diinstall dan dibuka
pertama kali. setelah itu tidak akan tampil lagi. Namun disini kita akan menambahkan tombol
pada homescreen agar bisa mengulang slider yang ditampilkan.
adalah mekanisme untuk menyimpan pasangan key-value untuk tipe data primitif (integer,
double, string, booelan). SP cocok untuk penggunaan data kecil seperti menyimpan setting
aplikasi dan informasi mengenai user interface. Data dalam shared preferences disimpan dalam
device android dalam bentuk XML. Sumber http://indonesiaberkicau.com/
5. Buat Class baru
package badoystudio.com.introslider;
import android.content.Context;
import android.content.SharedPreferences;
6. Buat Slide
Kita akan membuat 4 slide dengan nama layout : slide1, slide2, slide3, slide4. Caranya yaitu klik
kanan pada layout -> new -> xml -> pilih empty .
Tambahkan script berikut pada slide1.xml :
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:gravity="center_horizontal"
android:orientation="vertical">
<ImageView
android:layout_width="@dimen/img_width_height"
android:layout_height="@dimen/img_width_height"
android:src="@drawable/ic_kuliner" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/slide_1_title"
android:textColor="@android:color/white"
android:textSize="@dimen/slide_title"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:paddingLeft="@dimen/desc_padding"
android:paddingRight="@dimen/desc_padding"
android:text="@string/slide_1_desc"
android:textAlignment="center"
android:textColor="@android:color/white"
android:textSize="@dimen/slide_desc" />
</LinearLayout>
</RelativeLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:gravity="center_horizontal"
android:orientation="vertical">
<ImageView
android:layout_width="@dimen/img_width_height"
android:layout_height="@dimen/img_width_height"
android:src="@drawable/ic_hotel" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/slide_2_title"
android:textColor="@android:color/white"
android:textSize="@dimen/slide_title"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:paddingLeft="@dimen/desc_padding"
android:paddingRight="@dimen/desc_padding"
android:text="@string/slide_2_desc"
android:textAlignment="center"
android:textColor="@android:color/white"
android:textSize="@dimen/slide_desc" />
</LinearLayout>
</RelativeLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:gravity="center_horizontal"
android:orientation="vertical">
<ImageView
android:layout_width="@dimen/img_width_height"
android:layout_height="@dimen/img_width_height"
android:src="@drawable/ic_wisata" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/slide_3_title"
android:textColor="@android:color/white"
android:textSize="@dimen/slide_title"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:paddingLeft="@dimen/desc_padding"
android:paddingRight="@dimen/desc_padding"
android:text="@string/slide_3_desc"
android:textAlignment="center"
android:textColor="@android:color/white"
android:textSize="@dimen/slide_desc" />
</LinearLayout>
</RelativeLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:gravity="center_horizontal"
android:orientation="vertical">
<ImageView
android:layout_width="@dimen/img_width_height"
android:layout_height="@dimen/img_width_height"
android:src="@drawable/ic_guide" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/slide_4_title"
android:textColor="@android:color/white"
android:textSize="@dimen/slide_title"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:paddingLeft="@dimen/desc_padding"
android:paddingRight="@dimen/desc_padding"
android:text="@string/slide_4_desc"
android:textAlignment="center"
android:textColor="@android:color/white"
android:textSize="@dimen/slide_desc" />
</LinearLayout>
</RelativeLayout>
Buat baru dengan nama WelcomeActivity.java dengan cara klik kanan pada package -> New -
>Activity -> Empty Activity .
8. Atur Activity
<android.support.v4.view.ViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<LinearLayout
android:id="@+id/layoutDots"
android:layout_width="match_parent"
android:layout_height="@dimen/dots_height"
android:layout_alignParentBottom="true"
android:layout_marginBottom="@dimen/dots_margin_bottom"
android:gravity="center"
android:orientation="horizontal"></LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:alpha=".5"
android:layout_above="@id/layoutDots"
android:background="@android:color/white" />
<Button
android:id="@+id/btn_next"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:background="@null"
android:text="@string/next"
android:textColor="@android:color/white" />
<Button
android:id="@+id/btn_skip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:background="@null"
android:text="@string/skip"
android:textColor="@android:color/white" />
</RelativeLayout>
9. Buka WelcomeActivity.java
package badoystudio.com.introslider;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_S
TABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}
setContentView(R.layout.activity_welcome);
btnSkip.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
launchHomeScreen();
}
});
btnNext.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// mengecek page terakhir (slide 4)
// jika activity home sudah tampil
int current = getItem(+1);
if (current < layouts.length) {
// move to next screen
viewPager.setCurrentItem(current);
} else {
launchHomeScreen();
}
}
});
}
int[] colorsActive =
getResources().getIntArray(R.array.array_dot_active);
int[] colorsInactive =
getResources().getIntArray(R.array.array_dot_inactive);
dotsLayout.removeAllViews();
for (int i = 0; i < dots.length; i++) {
dots[i] = new TextView(this);
dots[i].setText(Html.fromHtml("•"));
dots[i].setTextSize(35);
dots[i].setTextColor(colorsInactive[currentPage]);
dotsLayout.addView(dots[i]);
}
if (dots.length > 0)
dots[currentPage].setTextColor(colorsActive[currentPage]);
}
@Override
public void onPageSelected(int position) {
addBottomDots(position);
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
@Override
public void onPageScrollStateChanged(int arg0) {
}
};
/**
* Making notification bar transparent
*/
private void changeStatusBarColor() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
;
window.setStatusBarColor(Color.TRANSPARENT);
}
}
/**
* View pager adapter
*/
public class MyViewPagerAdapter extends PagerAdapter {
private LayoutInflater layoutInflater;
public MyViewPagerAdapter() {
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
layoutInflater = (LayoutInflater)
getSystemService(Context.LAYOUT_INFLATER_SERVICE);
return view;
}
@Override
public int getCount() {
return layouts.length;
}
@Override
public boolean isViewFromObject(View view, Object obj) {
return view == obj;
}
@Override
public void destroyItem(ViewGroup container, int position, Object
object) {
View view = (View) object;
container.removeView(view);
}
}
}
Buka activity_main.xml tambahkan script untuk membuat tombol mengulang slider yaitu
sebagai berikut berikut :
<?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:id="@+id/activity_main"
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:background="#E0FFFF"
tools:context="badoystudio.com.introslider.MainActivity">
<Button
android:layout_width="300dp"
android:layout_height="70dp"
android:text="Mulai Lagi Slider"
android:layout_below="@+id/textView"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="43dp"
android:id="@+id/button"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30sp"
android:text="Home Screen!"
android:id="@+id/textView"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
</RelativeLayout>
package badoystudio.com.introslider;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.button).setOnClickListener(new
View.OnClickListener() {
@Override
public void onClick(View v) {
PrefManager prefManager = new
PrefManager(getApplicationContext());
prefManager.setFirstTimeLaunch(true);
startActivity(new Intent(MainActivity.this,
WelcomeActivity.class));
finish();
}
});
}
}
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".WelcomeActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</manifest>
Oke sampai disini sudah selesai silahkan di running menggunakan android virtual device,
emulator genymotion, atau langsung di smartphone yang kamu punya. Maka akan tampil seperti
dibawah ini :
Silahkan dipraktekan dan dipelajari kode-kodenya ya. semoga bermanfaat.
Dengan animasi transisi kita bisa mengatur pergantian/perpindahan dari satu activity
(antarmuka) ke activity lainnya dengan memberikan sentuhan efek animasi supaya terlihat lebih
menarik.
Pada tutorial kali ini kita akan membuat aplikasi sederhana menyalakan dan mematikan lampu
yang mana ketika tombol switch on/off ditekan akan terlihat efek animasi transisi (perpindahan)
dari lampu yang mati (off) ke lampu yang menyala (on) ataupun sebaliknya.
Langkah-langkah :
Silahkan Buka android studionya dan buat project baru dengan nama Transition, tentukan sdk,
activity dan lainnya sampai dengan finish dan workspace android studio tampil.
2. Tambahkan Gambar
Tambahkan dua gambar yaitu gambar lampu dalam keadaan off dan juga gambar lampu dalam
keadaan on pada drawable.
Untuk memudahkan proses belajar disini saya sudah menyediakan gambarnya silahkan klik
download
3. Buat Layout Baru
Buat dua layout baru pada directory drawable dengan cara klik kanan pada drawable > New >
Xml > Nama Layout
Layout trans_off.xml
Layout trans_on.xml
<item android:drawable="@drawable/on"/>
<item android:drawable="@drawable/off"/>
</transition>
<item android:drawable="@drawable/off"/>
<item android:drawable="@drawable/on"/>
</transition>
Buka Activity_Main.xml
Ubah background color menjadi warna hitam dengan kode-kode sebagai berikut :
<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:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000000"
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="badoystudio.com.transition.MainActivity">
Tambahkan ImageView, untuk srcnya pilih drawable layout trans_on.xml dengan kode-kode
berikut :
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/trans_on"
android:scaleType="centerInside"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:id="@+id/imageView" />
<Button
android:text="ON / OFF"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="34dp"
android:id="@+id/button" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:srcCompat="@drawable/trans_on"
android:scaleType="centerInside"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:id="@+id/imageView" />
<Button
android:text="ON / OFF"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="34dp"
android:id="@+id/button" />
</RelativeLayout>
5. Atur MainActivity.java
Pada MainActivity. java kita akan memasukan kode-kode java diantaranya yaitu :
kode untuk memberikan action pada button (on/off) yang telah dibuat
pada ActivityMain.xml dan juga pengaturan animasi transisi termasuk waktu berapa lama efek
transisi tampil dengan kode-kode :
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(!turnOn){
imageview.setImageResource(R.drawable.trans_on);
((TransitionDrawable)imageview.getDrawable()).startTransition(3000);
turnOn=true;
}else {
imageview.setImageResource(R.drawable.trans_off);
((TransitionDrawable)imageview.getDrawable()).startTransition(3000);
turnOn=false;
package badoystudio.com.transition;
import android.graphics.drawable.TransitionDrawable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
ImageView imageview;
Button button;
Boolean turnOn=false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageview=(ImageView)findViewById(R.id.imageView);
button=(Button)findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(!turnOn){
imageview.setImageResource(R.drawable.trans_on);
((TransitionDrawable)imageview.getDrawable()).startTransition(3000);
turnOn=true;
}else {
imageview.setImageResource(R.drawable.trans_off);
((TransitionDrawable)imageview.getDrawable()).startTransition(3000);
turnOn=false;
}
});
}
}
<resources>
<string name="app_name">Animasi Transisi</string>
</resources>
Jika sudah diikuti langkah-langkah diatas, silahkan jalankan aplikasi menggunakan android
virtual device, emulator genymotion, atau langsung ke device android dan Lihat hasilnya.
Mudah bukan membuat animasi transisi ? Bila terdapat error atau ingin request tutorial silahkan
komentar dibawah ini. So semoga bermanfaat dan bisa dipraktekan pada aplikasi yang kamu buat
nanti.
Mengimplementasikan custom font pada android studio sangat mudah. Langsung saja kita
praktekan bagaimana menggunakan custom font. Langkah-langkahnya sebagai berikut :
1. Download Font
Siapkan font yang nantinya akan digunakan diaplikasi android dengan cara mendownloadnya
dari internet. Dalam tutorial ini saya mendownload font Knight Brush Demo.otf dan Studio
Gothic dari 1001 font .
Buat project baru pada android studio beri nama project font (sesuaikan) kemudian atur minimun
sdk, layout atau lainnya sampai dengan workspace android studio tampil.
3. Activity_main.xml
Pada Activity_main.xml tambahkan teks sesuai dengan properti yang kita inginkan
menggunakan widget TextView. Adapun kode-kode yang saya gunakan yaitu :
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textAlignment="center"
android:textSize="55sp"
android:textColor="@color/colorAccent"
android:text="Badoy Studio "
android:id="@+id/font"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="45dp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textAlignment="center"
android:textSize="35sp"
android:textColor="@color/colorAccent"
android:text="Selamat Belajar Membuat Aplikasi Android Menggunakan
Android Studio "
android:id="@+id/font2"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="45dp" />
</LinearLayout>
Klik project > app > src > main (klik kanan pada folder main) > New > Directory > beri nama
assets
Klik kanan pada folder assets yang sudah dibuat > New > Directory > beri nama font . Untuk
langkahnya seperti pada point 4.
6. Copykan Font
Setelah folder assets dan font dibuat copykan font yang sudah didownload dari internet kedalam
folder font dengan cara klik kanan paste.
membuat folder font
7. MainActivity.java
package badoystudio.com.font;
import android.graphics.Typeface;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
teks=(TextView)findViewById(R.id.font);
teks2=(TextView)findViewById(R.id.font2);
Typeface customfont=Typeface.createFromAsset(getAssets(),"font/Knight
Brush Demo.otf");
teks.setTypeface(customfont);
Typeface
customfont2=Typeface.createFromAsset(getAssets(),"font/StudioGothicAlternate-
ExtraLigh Trial.ttf");
teks2.setTypeface(customfont2);
}
}
Pada tampilan preview memang tidak akan terlihat perubahan font yang sudah di custom. Kita
bisa melihatnya ketika aplikasi sudah di running. Maka silahkan running aplikasi dan lihat
hasilnya.
Custom Font ketika di running pada Android Studio
So, cukup mudah bukan untuk custom font pada android stuido. selamat mencoba dan jangan
lupa share
Untuk menggunakan kamera pada aplikasi yang kita buat kita perlu memanggil intent
MediaStore. ACTION_IMAGE_CAPTURE. Adapun langkah-langkahnya yaitu :
1. Buat project baru
Buka android studio kemudian klik creat new project. Kemudian isi :
Jika sudah diisi silahkan klik finish dan tunggu sampai proses gradle selesai.
2. Pembuatan layout
Buka activity_main.xml kemudian tambahkan atur layout menjadi relative layout . Silahkan
modifikasi sesuai script xml dibawah ini.
</RelativeLayout>
3. Pengkodingan java
Buka MainActivity.java lalu tambahkan kode-kode dibawah ini
package badoystudio.com.androidcamera;
import android.Manifest;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import android.provider.Settings;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
if (getFromPref(this, ALLOW_KEY)) {
showSettingsAlert();
} else if (ContextCompat.checkSelfPermission(this,
Manifest.permission.CAMERA)
!= PackageManager.PERMISSION_GRANTED) {
}
public static void saveToPreferences(Context context, String key, Boolean
allowed) {
SharedPreferences myPrefs = context.getSharedPreferences(CAMERA_PREF,
Context.MODE_PRIVATE);
SharedPreferences.Editor prefsEditor = myPrefs.edit();
prefsEditor.putBoolean(key, allowed);
prefsEditor.commit();
}
alertDialog.setButton(AlertDialog.BUTTON_POSITIVE, "ALLOW",
new DialogInterface.OnClickListener() {
alertDialog.setButton(AlertDialog.BUTTON_POSITIVE, "SETTINGS",
new DialogInterface.OnClickListener() {
alertDialog.show();
}
@Override
public void onRequestPermissionsResult(int requestCode, String
permissions[], int[] grantResults) {
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_CAMERA: {
for (int i = 0, len = permissions.length; i < len; i++) {
String permission = permissions[i];
if (grantResults[i] == PackageManager.PERMISSION_DENIED)
{
boolean
showRationale =
ActivityCompat.shouldShowRequestPermissionRationale(
this, permission);
if (showRationale) {
showAlert();
} else if (!showRationale) {
// user denied flagging NEVER ASK AGAIN
// you can either enable some fall back,
// disable features of your app
// or open another dialog explaining
// again the permission and directing to
// the app setting
saveToPreferences(MainActivity.this, ALLOW_KEY,
true);
}
}
}
}
@Override
protected void onResume() {
super.onResume();
}
<uses-permission
android:name="android.permission.CAMERA"/>
<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" />
</manifest>
5. Running aplikasi
Running aplikasi yang sudah kita tambahkan fitur kamera menggunakan android virtual device,
genymotion, atau langsung ke smartphone android yang kita miliki.
Pada latihan ini saya merunnng aplikasi menggunakan smartphone Oppo A3s dan hasilnya :
Itulah tutorial Cara Menggunakan Fitur Kamera pada Android Studio. Silahkan di praktekan dan
jangan lupa share.
Cara Membuat Aplikasi Konversi Uang
Sederhana
Beberapa hari yang lalu nilai dollar sempat mencapai angka Rp. 15 ribu. Akhirnya saya
kepikiran untuk membuat tutorial cara membuat aplikasi konversi uang sederhana menggunakan
android studio.
Langsung saja silahkan ikuti tutorial cara membuat aplikasi konversi uang sederhana berikut ini.
1. Penjelasan Aplikasi
Aplikasi android yang akan dibuat ini tidak begitu rumit yaitu ketika kita memasukan nilai
rupiah lalu menekan tombol rupiah ke dollar maka akan ditampilkan berapa hasil dalam versi
dollar atau mata uang yang lainnya.
Karena seperti biasanya tutorial yang disajikan adalah tutorial membuat aplikasi android
sederhana yang ditujukan untuk mengasah logika pembuatan aplikasi saja.
2. Requirements
Sebelum mempelajari tutorial ini ada baiknya kamu mempelajari tutorial-tutorial dasar yang ada
dibawah ini :
4. LinearLayout
Jika workspace android studio sudah siap digunakan. Klik tab Activity_main.xml lalu ubah
layoutnya menggunakan layout linearlayout.
<?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:orientation="vertical"
android:gravity="center"
android:padding="20dp"
tools:context="badoystudio.com.konversimatauang.MainActivity">
</LinearLayout>
5. ImageView
Tambahkan gambar menggunakan widget ImageView didalam linearlayout yang sudah
ditambahkan pada langkah ke empat. sebelumnya silahkan kamu masukan dulu gambar
pendukungnya ke folder drawable. Disini saya menggunakan gambar / icon dari flaticon.
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/bank"/>
<LinearLayout
android:padding="20dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText
android:layout_width="120dp"
android:layout_height="wrap_content"
android:id="@+id/uang_input"
android:textSize="20sp"
android:hint="0 Rupiah"/>
<TextView
android:layout_margin="5dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="="
android:textSize="20sp"/>
<TextView
android:layout_margin="5dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/hasil_konversi"
android:text="Hasil Konversi"
android:background="#FFFFFF"
android:textSize="20sp"/>
</LinearLayout>
7. Button
Pada langkah ini kita akan menambahkan 3 widget button dengan teks :
rp > usd
rp > yen
rp > euro
fungsi dari ketiga button tersebut yaitu mengubah nilai rupiah ke mata uang yang telah
ditentukan. Tambahkan kode-kode dibawah ini pada linearlayout yang mengapit edittext dan
textview.
<Button
android:layout_width="270dp"
android:layout_marginTop="10dp"
android:layout_height="wrap_content"
android:text="Rp > USD"
android:textSize="20sp"
android:textColor="#FFFFFF"
android:background="#FF0000"
android:onClick="toUSD"
android:id="@+id/rpusd"/>
<Button
android:layout_width="270dp"
android:layout_marginTop="10dp"
android:textSize="20sp"
android:layout_height="wrap_content"
android:text="Rp > YEN"
android:textColor="#FFFFFF"
android:background="#483D8B "
android:onClick="toYEN"
android:id="@+id/rpyen"/>
<Button
android:layout_width="270dp"
android:textColor="#FFFFFF"
android:background="#A52A2A"
android:layout_marginTop="10dp"
android:layout_height="wrap_content"
android:text="Rp > Euro"
android:textSize="20sp"
android:onClick="toEuro"
android:id="@+id/rpeuro"/>
8. Activity_main. xml
Kode lengkap xml dari langkah 3 sampai dengan 7 yaitu :
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/bank"/>
<LinearLayout
android:padding="20dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText
android:layout_width="120dp"
android:layout_height="wrap_content"
android:id="@+id/uang_input"
android:textSize="20sp"
android:hint="0 Rupiah"/>
<TextView
android:layout_margin="5dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="="
android:textSize="20sp"/>
<TextView
android:layout_margin="5dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/hasil_konversi"
android:text="Hasil Konversi"
android:background="#FFFFFF"
android:textSize="20sp"/>
</LinearLayout>
<Button
android:layout_width="270dp"
android:layout_marginTop="10dp"
android:layout_height="wrap_content"
android:text="Rp > USD"
android:textSize="20sp"
android:textColor="#FFFFFF"
android:background="#FF0000"
android:onClick="toUSD"
android:id="@+id/rpusd"/>
<Button
android:layout_width="270dp"
android:layout_marginTop="10dp"
android:textSize="20sp"
android:layout_height="wrap_content"
android:text="Rp > YEN"
android:textColor="#FFFFFF"
android:background="#483D8B "
android:onClick="toYEN"
android:id="@+id/rpyen"/>
<Button
android:layout_width="270dp"
android:textColor="#FFFFFF"
android:background="#A52A2A"
android:layout_marginTop="10dp"
android:layout_height="wrap_content"
android:text="Rp > Euro"
android:textSize="20sp"
android:onClick="toEuro"
android:id="@+id/rpeuro"/>
</LinearLayout>
package badoystudio.com.konversimatauang;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import java.text.NumberFormat;
import java.util.Locale;
double angka;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try{
angka = Double.parseDouble(input_uang.getText().toString());
}catch(Exception ex){
Toast.makeText(this, "Masukkan angka",
Toast.LENGTH_SHORT).show();
}
hasil_konversi.setText(NumberFormat.getCurrencyInstance(Locale.JAPAN).format(
hasil));
Toast.makeText(this, "1 Yen = Rp 132", Toast.LENGTH_SHORT).show();
}
try{
angka = Double.parseDouble(input_uang.getText().toString());
}catch(Exception e){
Toast.makeText(this, "Masukkan angka",
Toast.LENGTH_SHORT).show();
}
hasil_konversi.setText(NumberFormat.getCurrencyInstance(Locale.GERMANY).forma
t(hasil));
Toast.makeText(this, "1 Euro = Rp 17.228",
Toast.LENGTH_SHORT).show();
}
try{
angka = Double.parseDouble(input_uang.getText().toString());
}catch(Exception e){
Toast.makeText(this, "Masukkan angka",
Toast.LENGTH_SHORT).show();
}
hasil_konversi.setText(NumberFormat.getCurrencyInstance(Locale.US).format(has
il));
Toast.makeText(this, "1 U$D = Rp 14808", Toast.LENGTH_SHORT).show();
}
}
menggunakan android studio. Bagaimana cara membuatnya ? Mudah ko Langsung saja kita
buat sekarang, inilah langkah-langkahnya.
Buat project baru pada android studio dengan nama project app ” calculator ” atau kamu bisa
menyesuaikan sendiri.
2. Ubah Icon
Icon default aplikasi bawaan dari android yaitu logo android (robot hijau). Kali ini kita akan
merubah icon aplikasi dengan icon yang sudah kita download (icon calculator ) dengan cara
sebagai berikut.
Klik folder res > klik kanan pada folder mipmap > New Image Asset
Setelah itu ubah nama ic_launcher menjadi ic_calc > pilih image pada asset type > pilih icon dari
komputer kita pada path > Next > Finish
3. Buat Layout
Buat layout kalkulator pada activity_main.xml. Kita akan menggunakan beberapa widget yaitu :
TextView
Button
TextView akan digunakan sebagai layar angka kalkulator ditambah beberapa tombol yang
diperlukan. TextView juga digunakan sebagai pengganti EditText, untuk mencegah input
pengguna manual menggunakan keypad default Android.
Relative Layout
Linear Layout
<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=".MainActivity">
<TextView
android:id="@+id/txtScreen"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:gravity="right|center_vertical"
android:maxLength="16"
android:padding="10dp"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textSize="30sp"
android:typeface="serif" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/txtScreen"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:textSize="30sp"
android:id="@+id/btnSeven"
android:text="7" />
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:textSize="30sp"
android:id="@+id/btnEight"
android:text="8" />
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:textSize="30sp"
android:id="@+id/btnNine"
android:text="9"/>
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:textSize="30sp"
android:id="@+id/btnDivide"
android:text="/"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:textSize="30sp"
android:id="@+id/btnFour"
android:text="4"/>
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:textSize="30sp"
android:id="@+id/btnFive"
android:text="5" />
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:textSize="30sp"
android:id="@+id/btnSix"
android:text="6" />
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:textSize="30sp"
android:id="@+id/btnMultiply"
android:text="*" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:textSize="30sp"
android:id="@+id/btnOne"
android:text="1" />
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:textSize="30sp"
android:id="@+id/btnTwo"
android:text="2" />
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:textSize="30sp"
android:id="@+id/btnThree"
android:text="3" />
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:textSize="30sp"
android:id="@+id/btnSubtract"
android:text="-" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:textSize="30sp"
android:id="@+id/btnDot"
android:text="." />
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:textSize="30sp"
android:id="@+id/btnZero"
android:text="0" />
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:textSize="30sp"
android:id="@+id/btnClear"
android:text="C" />
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:textSize="30sp"
android:id="@+id/btnAdd"
android:text="+" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:textSize="30sp"
android:id="@+id/btnEqual"
android:text="=" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
Maka pada bagian preveiw akan terlihat seperti gambar dibawah ini layoutnya :
4. Style pada Button
Button pada layout yang sudah dibuat pada langkah ke 3 terlihat kurang menarik. Kita akan
memberikan style pada button agar lebih menarik. Caranya yaitu :
Klik folder res > Klik kanan pada drawable > Pilih New > Pilih Drawable resource file
5. Background button
Setelah kamu buat file button.xml pada drawable. Maka langkah selanjutnya gunakan button.xml
sebagai background button pada activity_main.xml.
Tambahkan kode berikut pada setiap button.
android:background="@drawable/button"
<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=".MainActivity">
<TextView
android:id="@+id/txtScreen"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:gravity="right|center_vertical"
android:maxLength="16"
android:padding="10dp"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textSize="30sp"
android:typeface="serif" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/txtScreen"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<Button
android:background="@drawable/button"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:textSize="30sp"
android:id="@+id/btnSeven"
android:text="7" />
<Button
android:layout_width="0dp"
android:background="@drawable/button"
android:layout_height="match_parent"
android:layout_weight="1"
android:textSize="30sp"
android:id="@+id/btnEight"
android:text="8" />
<Button
android:layout_width="0dp"
android:background="@drawable/button"
android:layout_height="match_parent"
android:layout_weight="1"
android:textSize="30sp"
android:id="@+id/btnNine"
android:text="9"/>
<Button
android:layout_width="0dp"
android:background="@drawable/button"
android:layout_height="match_parent"
android:layout_weight="1"
android:textSize="30sp"
android:id="@+id/btnDivide"
android:text="/"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<Button
android:layout_width="0dp"
android:background="@drawable/button"
android:layout_height="match_parent"
android:layout_weight="1"
android:textSize="30sp"
android:id="@+id/btnFour"
android:text="4"/>
<Button
android:layout_width="0dp"
android:background="@drawable/button"
android:layout_height="match_parent"
android:layout_weight="1"
android:textSize="30sp"
android:id="@+id/btnFive"
android:text="5" />
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:textSize="30sp"
android:background="@drawable/button"
android:id="@+id/btnSix"
android:text="6" />
<Button
android:layout_width="0dp"
android:background="@drawable/button"
android:layout_height="match_parent"
android:layout_weight="1"
android:textSize="30sp"
android:id="@+id/btnMultiply"
android:text="*" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<Button
android:layout_width="0dp"
android:background="@drawable/button"
android:layout_height="match_parent"
android:layout_weight="1"
android:textSize="30sp"
android:id="@+id/btnOne"
android:text="1" />
<Button
android:layout_width="0dp"
android:background="@drawable/button"
android:layout_height="match_parent"
android:layout_weight="1"
android:textSize="30sp"
android:id="@+id/btnTwo"
android:text="2" />
<Button
android:layout_width="0dp"
android:background="@drawable/button"
android:layout_height="match_parent"
android:layout_weight="1"
android:textSize="30sp"
android:id="@+id/btnThree"
android:text="3" />
<Button
android:layout_width="0dp"
android:background="@drawable/button"
android:layout_height="match_parent"
android:layout_weight="1"
android:textSize="30sp"
android:id="@+id/btnSubtract"
android:text="-" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<Button
android:layout_width="0dp"
android:background="@drawable/button"
android:layout_height="match_parent"
android:layout_weight="1"
android:textSize="30sp"
android:id="@+id/btnDot"
android:text="." />
<Button
android:layout_width="0dp"
android:background="@drawable/button"
android:layout_height="match_parent"
android:layout_weight="1"
android:textSize="30sp"
android:id="@+id/btnZero"
android:text="0" />
<Button
android:layout_width="0dp"
android:background="@drawable/button"
android:layout_height="match_parent"
android:layout_weight="1"
android:textSize="30sp"
android:id="@+id/btnClear"
android:text="C" />
<Button
android:layout_width="0dp"
android:background="@drawable/button"
android:layout_height="match_parent"
android:layout_weight="1"
android:textSize="30sp"
android:id="@+id/btnAdd"
android:text="+" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:background="@drawable/button"
android:layout_weight="1"
android:textSize="30sp"
android:id="@+id/btnEqual"
android:text="=" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
Untuk mengevaluasi ekspresi aritmatika, library exp4J digunakan dalam pembuatan kalkulator
ini.
Buka file “build.gradle (Module: app)” dari skrip Gradle. Tambahkan kode berikut :
compile 'net.objecthunter:exp4j:0.4.4'
Ubah MainActivity.java seperti yang kode-kode di bawah ini. Deskripsi lengkap tentang kode
diberikan pada tag komentar.
package badoystudio.com.simplecalculator;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import net.objecthunter.exp4j.Expression;
import net.objecthunter.exp4j.ExpressionBuilder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Find the TextView
this.txtScreen = (TextView) findViewById(R.id.txtScreen);
// Find and set OnClickListener to numeric buttons
setNumericOnClickListener();
// Find and set OnClickListener to operator buttons, equal button and
decimal point button
setOperatorOnClickListener();
}
/**
* Find and set OnClickListener to numeric buttons.
*/
private void setNumericOnClickListener() {
// Create a common OnClickListener
View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
// Just append/set the text of clicked button
Button button = (Button) v;
if (stateError) {
// If current state is Error, replace the error message
txtScreen.setText(button.getText());
stateError = false;
} else {
// If not, already there is a valid expression so append
to it
txtScreen.append(button.getText());
}
// Set the flag
lastNumeric = true;
}
};
// Assign the listener to all the numeric buttons
for (int id : numericButtons) {
findViewById(id).setOnClickListener(listener);
}
}
/**
* Find and set OnClickListener to operator buttons, equal button and
decimal point button.
*/
private void setOperatorOnClickListener() {
// Create a common OnClickListener for operators
View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
// If the current state is Error do not append the operator
// If the last input is number only, append the operator
if (lastNumeric && !stateError) {
Button button = (Button) v;
txtScreen.append(button.getText());
lastNumeric = false;
lastDot = false; // Reset the DOT flag
}
}
};
// Assign the listener to all the operator buttons
for (int id : operatorButtons) {
findViewById(id).setOnClickListener(listener);
}
// Decimal point
findViewById(R.id.btnDot).setOnClickListener(new
View.OnClickListener() {
@Override
public void onClick(View v) {
if (lastNumeric && !stateError && !lastDot) {
txtScreen.append(".");
lastNumeric = false;
lastDot = true;
}
}
});
// Clear button
findViewById(R.id.btnClear).setOnClickListener(new
View.OnClickListener() {
@Override
public void onClick(View v) {
txtScreen.setText(""); // Clear the screen
// Reset all the states and flags
lastNumeric = false;
stateError = false;
lastDot = false;
}
});
// Equal button
findViewById(R.id.btnEqual).setOnClickListener(new
View.OnClickListener() {
@Override
public void onClick(View v) {
onEqual();
}
});
}
/**
* Logic to calculate the solution.
*/
private void onEqual() {
// If the current state is error, nothing to do.
// If the last input is a number only, solution can be found.
if (lastNumeric && !stateError) {
// Read the expression
String txt = txtScreen.getText().toString();
// Create an Expression (A class from exp4j library)
Expression expression = new ExpressionBuilder(txt).build();
try {
// Calculate the result and display
double result = expression.evaluate();
txtScreen.setText(Double.toString(result));
lastDot = true; // Result contains a dot
} catch (ArithmeticException ex) {
// Display an error message
txtScreen.setText("Error");
stateError = true;
lastNumeric = false;
}
}
}
}
8. AndroidManifest.xml
Ubah android:icon menjadi @mipmap/ic_calc agar icon tidak lagi robot hijau.
<application
android:allowBackup="true"
android:icon="@mipmap/ic_calc"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme" >
<activity android:name=".MainActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</manifest>
9. Running App
Silahkan kamu jalankan aplikasi pada android virtual device, emulator genymotion, atau
langsung menggunakan device android.
Tujuan dari tutorial ini bukanlah untuk membuat kalkulator yang sempurna seperti pada aplikasi
bawaan android. Setidaknya kita bisa mengetahui cara dasar pembuatan kalkulator sederhana
dari tutorial ini.