Skip to content

Instantly share code, notes, and snippets.

@hinoobmaster
Last active December 7, 2018 15:49
Show Gist options
  • Save hinoobmaster/e784e47c3c8b1d0260039dc1e8975aaa to your computer and use it in GitHub Desktop.
Save hinoobmaster/e784e47c3c8b1d0260039dc1e8975aaa to your computer and use it in GitHub Desktop.
Android Cheat Sheet -

Membuat Splash Screen

Goal: Membuat tampilan splash screen dan akan muncul sebelum Activity utama dimuat.

  1. Buat buat activity baru, misal dengan nama Splash, akan menghasilkan 2 file, yaitu Splash.java dan activity-splash.xml.

  2. Kreasikan tampilah splashscreen di file activity-splash.xml misal dengan menampilkan logo di tengah-tengah layar dan sebuah spinner (ProgressBar) dibawahnya:

    <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:background="@color/cl_green"
        tools:context=".Spalsh">
    
        <ImageView
            android:layout_width="120dp"
            android:layout_height="120dp"
            android:src="@drawable/people64"/>
    
        <ProgressBar
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:progressTint="@android:color/white"
            android:layout_marginTop="40dp"
            android:layout_marginBottom="20dp"/>
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="@android:color/holo_blue_dark"
            android:text="Latihan Android"
            android:textSize="20sp"/>
    </LinearLayout>
  3. Menghilangkan Action Bar (Title Bar) - Langkah selanjutnya adalah membuat Theme baru yang tidak menampilkan action bar, agar SplashScreen yang kita buat tampil secara penuh seperti SplashScreen aplikasi pada umumnya. Caranya adalah dengan mengedit file style.xml yang terdapat pada:

    src/main/res/values/style.xml

    tambahkan style berikut ini:

    <resources>
        <!-- Theme yang lainnya -->
        
        <!-- ================== -->
        <style name="AppTheme.NoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
            <item name="windowActionBar">false</item>
            <item name="windowNoTitle">true</item>
        </style>
    </resources>
  4. Edit AndroidManifest.xml - Kita mengubah urutan entry point aplikasi dari menampilkan MainActivity ke manampilkan SplashScreen terlebih dahulu. Kita juga akan menset theme AppTheme.NoActionBar yang sebelumnya dita buat ke SplashScreen.

    	<!-- UBAH BAGIAN INI -->
    <activity
            android:name=".MainActivity"
            android:label="Home" />
    <activity
            android:name=".Splash"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
    </activity>
  5. Edit Splash.java - edit Splash.java untuk menjeda selama 5 detik sebelum akhirnya menampilkan MainActivity

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);
    
        //dalam JAVASCRIPT dikenal sebagai setTimeout(Fx,time)
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                Intent home = new Intent(Splash.this, MainActivity.class);
                startActivity(home); //memulai MainActivity
                finish(); //mengakhiri SplashScreen (Current Activity)
            }
        }, delay);
    }

Theme: Hide Action Bar - style.xml

 <style name="AppTheme.NoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
     <item name="windowActionBar">false</item>
     <item name="windowNoTitle">true</item>
 </style>

Button Click (metode onClick)

Buat public void dengan parameter View pada file activity.java:

    public void fungsiClick(View v){
        //jalankan perintah anda disini
    }

Panggil fungsi tersebut dengan menambahkan keterangan onClick di komponen button:

   <Button
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="Klik Saya!"
       android:onClick="fungsiClick"/>

Layout size: wrap_content [vs] match_parent

wrap_content = ukuran layout object akan menyesuaikan dengan besar isinya

enter image description here

match_parent = ukuran layout object akan mengisi penuh space yang disediakan induknya

enter image description here

Sensors

Membaca sensor:

Di bagian import library, tambahkan:

import android.hardware.SensorManager;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.Sensor;
import android.content.Context;

Definisikan objek sensor

SensorManager sensorManager;
Sensor ssTemperature;
TextView txt_temp;

Tambahkan Method baru untuk Listener data sensor:

//tambahkan method baru untuk Listener data sensor
    private final SensorEventListener SS_TempListener = new SensorEventListener() {
        @Override
        public void onSensorChanged(SensorEvent event) {
	    //pastikan bahwa sensor tersebut berisi data temperature
            if(event.sensor.getType() == Sensor.TYPE_AMBIENT_TEMPERATURE){
	        //nilai sensor berada di event.values[0]
	        //misal kita akan menampilkannya di layar
	        //sebelumnya txt_temp sudah diregistrasikan di method onCreate ya :)
                txt_temp.setText(event.values[0] + "'C");
            }
        }

        @Override
        public void onAccuracyChanged(Sensor sensor, int accuracy) {
        }
    };

Jangan lupa Override method onPause, onStop dan onResume untuk menghandle life cycle dari aplikasi, (wajib untuk Activity yang menggunakan sensor)

@Override
    protected void onResume() {
        super.onResume();
        registerAllSensorListener();
    }

    @Override
    protected void onPause() {
        super.onPause();
        unregisterAllSensorListener();
    }

    @Override
    protected void onStop(){
        super.onStop();
        unregisterAllSensorListener();
    }



    private void registerAllSS(){
        //Periksa apakah sensor tersebut ada di smartphone, jika ada registerkan Listener
        if(ssTemperature != null){
	    //kondisi jika sensor ada di smartphone
	    //registrasikan listener :)
	    //sensorManager.registerListener(nama_method_listener, nama_sensor, delay/waktu jeda) 
            sensorManager.registerListener(SS_TempListener, ssTemperature, SensorManager.SENSOR_DELAY_NORMAL);
        }else{
	    //kondisi jika sensor tidak ada :D
	    //dibawah ini bebas aja mau ngapain, misal menampilkan pesan seperti berikut
            txt_temp.setText("Sensor nya tidak ada :(");
            txt_temp.setTextColor(Color.RED);
        }
    }

    private void unregisterAllSensorListener(){
        sensorManager.unregisterListener(SS_TempListener);
    }

Terakhir, kita inisialisasi semuanya di method onCreate

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

        //Inisialisasi UI (Binding)
        txt_temp = (TextView) findViewById(R.id.txt_temp);

        //Inisialisasi SENSOR
        sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        ssTemperature = sensorManager.getDefaultSensor(Sensor.TYPE_AMBIENT_TEMPERATURE);
    }

Sensor Suhu (TYPE_AMBIENT_TEMPERATURE)

Sensor suhu, menghasilkan nilai dalam Celcius

//Inisialisasi
ssTemperature = sensorManager.getDefaultSensor(Sensor.TYPE_AMBIENT_TEMPERATURE);

//Pembacaan
if(event.sensor.getType() == Sensor.TYPE_AMBIENT_TEMPERATURE){
                //event.values[0] = suhu dalam derajat celcius
}

Sensor Kelembapan/Humidity (TYPE_RELATIVE_HUMIDITY)

Sensor humidity, menghasilkan nilai persentasi kelembapan ruangan (%)

//Inisialisasi
ssHumidity = sensorManager.getDefaultSensor(Sensor.TYPE_RELATIVE_HUMIDITY);

//Pembacaan
if(event.sensor.getType() == Sensor.TYPE_RELATIVE_HUMIDITY){
                //event.values[0] = humidity dalam %
}

Sensor Proximity (TYPE_PROXIMITY)

Sensor proximity, mendeteksi adanya atau tidaknya object didepannya, hanya menghasilkan 2 nilai yaitu 5.00 (tidak ada object) dan 0 (ada object). Digunakan untuk mematikan layar dan disable touchscreen saat menelpon.

//Inisialisasi
ssProximity = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);

//Pembacaan
if(event.sensor.getType() == Sensor.TYPE_PROXIMITY){
                //event.values[0] = 5(tidak ada object), 0(ada object)
}

Sensor Cahaya (TYPE_LIGHT)

Sensor cahaya, menghasilkan nilai intensitas cahaya dalam flux

//Inisialisasi
ssLight = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);

//Pembacaan
if(event.sensor.getType() == Sensor.TYPE_LIGHT){
                //event.values[0] = intensitas cahaya dalam flux
}

Sensor Suhu (TYPE_PRESSURE)

Sensor tekanan, menghasilkan nilai tekanan dalam satuan bar

//Inisialisasi
ssPressure = sensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE);

//Pembacaan
if(event.sensor.getType() == Sensor.TYPE_PRESSURE){
                //event.values[0] = tekanan dalam bar
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment