X

Thursday, October 10, 2019

Cara Melihat Sertifikat Penandatanganan debug SHA-1 di Project Android Studio


Dalam pembuatan aplikasi Android Studio menggunakan Firebase diharuskan memberikan SHA-1 dari sertifikat penandatanganan, sehingga Firebase dapat membuat klien OAuth2 dan kunci API untuk aplikasi.

Untuk melihat SHA-1 ini anda bisa mengikuti langkah-langkah di bawah ini.

A. Versi Debug


1. Buka project android studio anda yang ingin dilihat sertifikat SHA-1.

2. Pada layar kerja android studio silahkan klik menu Grandle yang ada di bagian kanan seperti gambar dibawah.



3. Klik :app -> Tasks -> android -> signingReport.



4. Maka akan muncul kode sertifikat SHA-1 seperti gambar di bawah.


B. Versi Release

Pertama-tama anda harus membuat keystore di project anda untuk mendapatkan SHA-1 versi release. Jika sudah ada silahkan ikuti langkah berikut :

1. Buka cmd dan ketikkan perintah "keytool -list -v -keystore tempat_file_keystore  -alias nama_alias_keystore", contoh "keytool -list -v -keystore E:\project\tes\tes.jks -alias tes" lalu tekan enter.
2. Masukkan password keystore anda dan tekan enter (password tidak akan muncul saat diketik).
3. Jika berhasil akan muncul SHA-1 versi rilis seperti pada gambar.



Kode tersebut dapat digunakan dalam pembuatan aplikase dengan Firebase atau API Google lainnya.

Cara Migrasi ke AndroidX pada Project Android Studio


AndroidX merupakan project open source yang digunakan tim Android dalam mengembangkan, menguji, mengemas, membuat versi, dan merilis library di dalam Jatpack (sekumpulan library). Untuk semua perkembangan baru semua akan di perbarui di AndroidX.

Syarat untuk migrasi ke AndroidX, anda harus menggunakan kompilasi (compiler) ke android versi 9.0 (API level 28) atau yang lebih tinggi. Cara migrasi ke AndroidX juga sangat mudah karena Android Studio sudah menyediakan menu untuk itu.

Langkah-langkah Migrasi ke AndroidX

  • Pada halaman project Android Studio klik menu Refactor -> Migrate to AndroidX...

     
  • Akan muncul pemberitahuan apakah anda ingin backup project saat ini. Silahkan centang Backup project as Zip file, atau lepaskan centang jika tidak ingin. Selanjutnya klik Migrate.

     
  • Setelah itu akan muncul tampilan seperti di bawah. Klik Do Refactor lalu tunggu proses migrasi hingga selesai.
  • Jika sudah selesai maka akan muncul dua baris baru dalam file grandle.properties yaitu android.enableJetifier=true dan android.useAndroidX=true.

     
  • Selanjutnya buka MainActivity.java dan lihat ada kode yang error, ini dikarenakan project masih menggunakan import android.support.v7.app.AppCompatActivity; jadi silahkan ganti kode tersebut menjadi import androidx.appcompat.app.AppCompatActivity;

     
  • Selesai anda berhasil migrasi ke AndroidX.


7 Framework PHP Terbaik dan Terpopuler versi Coding Rakitan


PHP merupakan singkatan dari Personal Home Page yaitu salah satu bahasa pemrograman berbasis web. Sebagai bahasa pemrograman web PHP menjadi primadona dikarenakan banyaknya framework yang menggunakan bahasa ini. Berikut beberapa framework PHP terkenal yang banyak digunakan.

Laravel

Laravel merupkan framework PHP yang selalu up-to-date dengan versi PHP. Laravel mengusung konsep MVC (Model, View, Controller) dalam penggunaanya. Laravel dirancang dengan tujuan meningkatkan kualitas aplikasi dengan murangi biaya pengembangan awal.

Untuk mengetahui lebih lanjut tentang laravel silahkan kunjungi Mengenal Apa Itu Laravel dan Cara Penginstalannya.

Codeigniter

Codeigniter merupakan salah satu framework PHP yang mengusung konsep MVC sama halnya seperti laravel. CI atau Codeigniter pertama kali dirilis pada tanggal 28 Februari 2006.

Untuk mengetahui lebih lanjut tentang Codeigniter silahkan kunjungi postingan Mengenal Apa itu Codeigniter (CI) beserta Sejarahnya

Symfony

Symfony dirilis pada tahun 2005 oleh Fabien Potencier. Dalam hal kualitas, tidak perlu dipertanyakan lagi sebab Symfony disusun berdasarkan standar PSR (PHP standard recommendation). Ketersediaan integrasi dari vendor library yang lain, menjadi salah satu keunggulan framework ini.

Symfony memiliki banyak dokumentasi yang ditulis dengan cermat, mencakup semua fituy Symfony. Untuk mendownload sekaligus melihat dokumentasi dari symfony silahkan kunjungi langsung halaman resminya disini.

CakePHP

CakePHP merupakan framework PHP bersifat open source yang dikembangkan oleh Cake Software Foundation. Tujuan utama dari CakePHP adalah menyediakan framework yang memungkinkan pengguna bekerja secara terstruktur dan cepat tanpa kehilangan fleksibilitas.

Dukungan dari tim pengembang serta komunitas yang aktif menjadi nilai tambah bagi CakePHP dalam mengait pengguna. Untuk mengetahui manfaat lain dari CakePHP silahkan kunjungi langsung disini.

Yii

Yii merupakan framework PHP yang dikembangkan oleh Yii Software LLC. Yii lahir dengan mengadopsi konsep MVC dalam struktur pemrogramannya.

Framework ini dirancang sebagai krangka kerja php berbasis komponen dengan performa tinggi untuk pembuatan aplikasi web berskala besar.

Diawal pengembangannya sejak 1 Januari 2008 oleh Qiang Xue (programer asal Tiongkok), framework Yii menggunakan bahasa kerangka kerja PRADO. Yii versi 1.0 akhirnya secara resmi di rilis pada 3 Desember 2008 setelah mengalami koreksi dan penyempurnaan.

The Zend Framework

Zend Framework merupakan framework php yang dikembangkan oleh Zend Technologies yaitu sebuah perusahaan perangkat lunak asal Amerika Serikat. Seperti halnya framework PHP kebanyakan, Zend juga mengadopsi konsep Model View Controller.

Framework ini juga bisa menggunakan Composer dalam penginstalan packagenya.

Hal yang membuat framework ini menjadi unik, dikarenakan Zend Framework menyediakan sertifikat resmi bagi yang ingin menjadi professional Zend Framework.

Zend Framework diluncurkan pertama kali pada 3 Maret 2006, untuk versi stabil 3.0.0 pada 28 Juni 2016. Framework ini ditulis dalam bahasa PHP 7 dan mendukung lintas platform.

FuelPHP

Salah satu framework PHP yang memiliki pengguna cukup banyak adalah FuelPHP. Framework ini termasuk sederhana dan fleksibel serta memiliki dukungan komunitas developer yang baik.

Pengguna FuelPHP akan disuguhi dengan kinerja framework ini yang minimalis, cepat, dan ringan serta clean syntax. Selain itu FuelPHP juga mendukung Composer, yang akan memudahkan programer dalam instalasi dependency FuelPHP pada project yang di kerjakan.

Pengguna Laravel atau Codeigniter tidak akan sulit beredaptasi dengan Framework ini dikarenakan FuelPHP juga mengusung konsep MVC.


Monday, October 7, 2019

Membuat Card View Seperti Facebook dengan Android Studio


Membuat file Server

Sebelum memulai pemrograman di Android Studio terlebih dahulu buatlah file json di server atau folder htdocs anda. Untuk yang belum tahu silahkan baca postingan Mengenal dan Menginstall XAMPP.

  • Buat folder di htdocs dengan nama card_view
  • Buat folder baru di card_view dengan nama gambar dan buat sebuah file baru dengan nama data.json.
     

    Isi folder gambar dengan gambar-gambar anda. Gambar ini nantinya akan ditampilkan pada aplikasi android.

     

    Sedangkan file json isi dengan kode:

    {
                "data":[
                {
                    "nama": "Coding Rakitan",
                    "gambar_user": "logo_coding_rakitan.jpg",
                    "status": "Saya sedang belajar membuat card view",
                    "jam": 1,
                    "gambar_status": [],
                    "like": 20,
                    "komen": 2
                },
                {
                    "nama": "User 1",
                    "gambar_user": "none",
                    "status": "Card View dengan satu gambar status",
                    "jam": 1,
                    "gambar_status": ["g1.jpg"],
                    "like": 20,
                    "komen": 2
                },
                {
                    "nama": "User 2",
                    "gambar_user": "none",
                    "status": "Card View dengan dua gambar status",
                    "jam": 1,
                    "gambar_status": ["g2.jpg", "g3.jpg"],
                    "like": 20,
                    "komen": 2
                },
                {
                    "nama": "User 3",
                    "gambar_user": "none",
                    "status": "Card View dengan tiga gambar status",
                    "jam": 1,
                    "gambar_status": ["g17.jpg", "g5.jpg", "g6.jpg"],
                    "like": 20,
                    "komen": 2
                },
                {
                    "nama": "User 4",
                    "gambar_user": "none",
                    "status": "Card View dengan empat gambar status",
                    "jam": 1,
                    "gambar_status": ["g7.jpg", "g8.jpg", "g9.jpg", "g10.jpg"],
                    "like": 20,
                    "komen": 2
                },
                {
                    "nama": "User 4",
                    "gambar_user": "none",
                    "status": "Card View lebih dari empat gambar status",
                    "jam": 1,
                    "gambar_status": ["g4.jpg", "g12.jpg", "g13.jpg", "g14.jpg", "g15.jpg", "g16.jpg", "g17.jpg"],
                    "like": 20,
                    "komen": 2
                }
            ]
            }
     
    Pada bagian gambar_status isinya adalah nama-nama gambar yang ada di folder gambar tadi. Sedangkan gambar_user juga terletak di folder gambar. Jika tidak ingin menambahkan gambar user silahkan isi dengan none.

Struktur File Aplikasi Android

Sebelum memulai ada baiknya anda mengetahui struktur file yang akan kita buat.
  • Layout -> Struktur yang pertama adalah layout dimana akan ada 5 file.
     
  • Java -> Terdiri dari 2 file yaitu MainActivity dan GambarStatus.
     
  • Drawable -> Untuk mengetahui ikon-ikon yang perlu di tambahkan akan di jelaskan di tahap selanjutnya. Dibawah ini adalah strukturnya saja.
     

Pembuatan Aplikasi

Buatlah sebuah project baru dengan nama CardView. Belum tahu cara membuat project baru ? silahkan baca Cara Membuat Project Baru di Android Studio. Format lainnya silahkan lihat di gambar.

1. Menambahkan Ikon kedalam drwable.

Berkut ikon-ikon yang ditambahkan kedalam folder drawable.

 

Jika anda belum tahu cara menambahkan ikon-ikon tersebut silahkan baca postingan Cara Menggunakan Icon Vector Asset bawahan Android Studio

2. Mengimport Library

Ada dua library yang kita perlukan yaitu.
  • Volley -> Untuk melakukan koneksi data ke server, dimana terdapat filde data.json
  • android-networking -> Untuk menampilkan gambar dari server/internet.
Untuk menambahkannya silahkan buka file build.gradle (Module.app) dan tambahkan kode dibawah pada bagian dependencies.

implementation 'eu.the4thfloor.volley:com.android.volley:2015.05.28'
implementation 'com.amitshekhar.android:android-networking:1.0.2'

Hingga hasilnya seperti gambar berikut.





Selanjutnya silahkan sync atau syncronisasi (biasanya berjalan otomatis). Pastikan komputer anda terhubung dengan internet sebab ada beberapa file yang harus di download selama proses ini.

3. Membuat Layout

Sperti pada struktur di atas buatlah 5 layout activity_main (biasanya sudah ada tinggal di edit), card_view, dua_gambar, tiga_gambar, dan empat_gambar. Lalu isi dengan kode berikut.

  • 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:background="@color/background_utama"
        tools:context=".MainActivity">

        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <LinearLayout
                android:id="@+id/kontent"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical" />
        </ScrollView>
    </RelativeLayout>


  • card_view.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:padding="5dp">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@android:drawable/dialog_holo_light_frame"
            android:orientation="vertical">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:padding="10dp">

                <com.androidnetworking.widget.ANImageView
                    android:id="@+id/gambar_profile"
                    android:layout_width="50dp"
                    android:layout_height="50dp"
                    android:scaleType="fitXY"
                    app:srcCompat="@mipmap/ic_launcher" />

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="10dp"
                    android:orientation="vertical">

                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:gravity="center_vertical"
                        android:orientation="horizontal">

                        <TextView
                            android:id="@+id/nama"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:layout_weight="1"
                            android:text="Coding Rakitan"
                            android:textColor="@android:color/black"
                            android:textStyle="bold" />

                        <ImageView
                            android:id="@+id/imageView2"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            app:srcCompat="@drawable/ic_more_horiz_black"
                            tools:ignore="VectorDrawableCompat" />
                    </LinearLayout>

                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:gravity="center_vertical"
                        android:orientation="horizontal">

                        <TextView
                            android:id="@+id/jam"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="2 jam yang lalu"
                            android:textSize="12sp" />

                        <ImageView
                            android:id="@+id/imageView7"
                            android:layout_width="7dp"
                            android:layout_height="wrap_content"
                            android:layout_marginLeft="5dp"
                            android:layout_marginRight="5dp"
                            android:adjustViewBounds="true"
                            android:tint="@color/abu_abu"
                            app:srcCompat="@drawable/ic_lens_black"
                            tools:ignore="VectorDrawableCompat" />

                        <ImageView
                            android:id="@+id/imageView8"
                            android:layout_width="15dp"
                            android:layout_height="wrap_content"
                            android:adjustViewBounds="true"
                            android:tint="@color/abu_abu"
                            app:srcCompat="@drawable/ic_public_black"
                            tools:ignore="VectorDrawableCompat" />
                    </LinearLayout>

                </LinearLayout>
            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:padding="10dp">

                <TextView
                    android:id="@+id/status"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="TextView"
                    android:textColor="@android:color/black"
                    android:textSize="18sp" />
            </LinearLayout>

            <FrameLayout
                android:id="@+id/frame_gambar"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <LinearLayout
                    android:id="@+id/ly_gambar"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="vertical" />
            </FrameLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:padding="10dp">

                <TextView
                    android:id="@+id/like"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="22 Like"
                    android:textSize="12sp" />

                <TextView
                    android:id="@+id/komen"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="10dp"
                    android:text="10 Comment"
                    android:textSize="12sp" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:padding="20dp">

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:orientation="horizontal">

                    <ImageView
                        android:id="@+id/imageView4"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:tint="@color/abu_abu"
                        app:srcCompat="@drawable/ic_thumb_up_black"
                        tools:ignore="VectorDrawableCompat" />

                    <TextView
                        android:id="@+id/textView5"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:text="Like" />
                </LinearLayout>

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:orientation="horizontal">

                    <ImageView
                        android:id="@+id/imageView5"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:tint="@color/abu_abu"
                        app:srcCompat="@drawable/ic_mode_comment_black"
                        tools:ignore="VectorDrawableCompat" />

                    <TextView
                        android:id="@+id/textView6"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:text="Comment" />
                </LinearLayout>

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:orientation="horizontal">

                    <ImageView
                        android:id="@+id/imageView6"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:tint="@color/abu_abu"
                        app:srcCompat="@drawable/ic_reply_black"
                        tools:ignore="VectorDrawableCompat" />

                    <TextView
                        android:id="@+id/textView7"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:text="Share" />
                </LinearLayout>
            </LinearLayout>
        </LinearLayout>

    </LinearLayout>


  • dua_gambar.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"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/darker_gray"
        android:orientation="horizontal">

        <com.androidnetworking.widget.ANImageView
            android:id="@+id/gd_satu"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginRight="1dp"
            android:layout_weight="1"
            android:adjustViewBounds="true"
            android:scaleType="centerCrop" />

        <com.androidnetworking.widget.ANImageView
            android:id="@+id/gd_dua"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginLeft="1dp"
            android:layout_weight="1"
            android:adjustViewBounds="true"
            android:scaleType="centerCrop" />

    </LinearLayout>


  • tiga_gambar.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="wrap_content"
        android:background="@android:color/darker_gray"
        android:orientation="horizontal">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginRight="1dp"
            android:layout_weight="1"
            android:orientation="vertical">

            <com.androidnetworking.widget.ANImageView
                android:id="@+id/eg_satu"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:adjustViewBounds="true"
                android:scaleType="centerCrop"/>
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginLeft="1dp"
            android:layout_weight="1"
            android:orientation="vertical">

            <com.androidnetworking.widget.ANImageView
                android:id="@+id/eg_dua"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_marginBottom="1dp"
                android:layout_weight="1"
                android:adjustViewBounds="false"
                android:scaleType="centerCrop"
                tools:ignore="VectorDrawableCompat" />

            <com.androidnetworking.widget.ANImageView
                android:id="@+id/eg_tiga"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_marginTop="1dp"
                android:layout_weight="1"
                android:adjustViewBounds="true"
                android:scaleType="centerCrop" />

        </LinearLayout>
    </LinearLayout>


  • empat_gambar.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"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/darker_gray"
        android:orientation="vertical">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginBottom="1dp"
            android:layout_weight="1"
            android:orientation="horizontal">

            <com.androidnetworking.widget.ANImageView
                android:id="@+id/gt_satu"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginRight="1dp"
                android:layout_weight="1"
                android:adjustViewBounds="true"
                android:scaleType="fitXY" />

            <com.androidnetworking.widget.ANImageView
                android:id="@+id/gt_dua"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_marginLeft="1dp"
                android:layout_weight="1"
                android:adjustViewBounds="true"
                android:scaleType="fitXY"/>
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="1dp"
            android:layout_weight="1"
            android:orientation="horizontal">

            <com.androidnetworking.widget.ANImageView
                android:id="@+id/gt_tiga"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginRight="1dp"
                android:layout_weight="1"
                android:adjustViewBounds="true"
                android:scaleType="fitXY"/>

            <FrameLayout
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_weight="1">

                <com.androidnetworking.widget.ANImageView
                    android:id="@+id/gt_empat"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="1dp"
                    android:layout_weight="1"
                    android:adjustViewBounds="true"
                    android:scaleType="fitXY" />

                <LinearLayout
                    android:id="@+id/ly_lebih"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:background="@color/transparan"
                    android:gravity="center"
                    android:orientation="vertical">

                    <TextView
                        android:id="@+id/tx_lebih"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="2 +"
                        android:textColor="@android:color/white"
                        android:textSize="18sp"
                        android:textStyle="bold" />
                </LinearLayout>

            </FrameLayout>

        </LinearLayout>
    </LinearLayout>


4. Membuat File Java

Ada dua file java yang harus dibuat yaitu MainActivity (biasanya tersedia secara otomatis/tinggal di edit), dan GambarStatus. Isi kode java dengan kode di bawah ini.

  • MainActivity.java

  • package codingrakitan.blogspot.cardview;

    import android.content.res.Resources;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.widget.FrameLayout;
    import android.widget.LinearLayout;
    import android.widget.TextView;

    import com.android.volley.Request;
    import com.android.volley.RequestQueue;
    import com.android.volley.Response;
    import com.android.volley.VolleyError;
    import com.android.volley.toolbox.StringRequest;
    import com.android.volley.toolbox.Volley;
    import com.androidnetworking.widget.ANImageView;

    import org.json.JSONArray;
    import org.json.JSONException;
    import org.json.JSONObject;

    import java.lang.ref.ReferenceQueue;


    public class MainActivity extends AppCompatActivity {

        private LayoutInflater inf;
        private LinearLayout konten;
        private String url="http://IP_ADDRESS_ANDA/card_view/";
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            inf = (LayoutInflater) getSystemService(this.LAYOUT_INFLATER_SERVICE);
            konten = findViewById(R.id.kontent);


            ambilData();
        }

        private void ambilData() {
            RequestQueue req = Volley.newRequestQueue(this);
            StringRequest stringRequest = new StringRequest(Request.Method.GET, url+"data.json", new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    Log.d("data :", "success");
                    try {
                        JSONObject obj = new JSONObject(response);
                        JSONArray ja = obj.getJSONArray("data");
                        buatIsiKonten(ja);
                    }catch (Exception e){
                        e.printStackTrace();
                    }
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Log.d("errot :", ""+error);
                }
            });
            req.add(stringRequest);
        }

        private void buatIsiKonten(JSONArray ja) {

            for (int i = 0; i<ja.length();i++){
                View v = inf.inflate(R.layout.card_view, null);
                try {
                    JSONObject jo = ja.getJSONObject(i);
                    isiCardView(v, i, jo);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                konten.addView(v);

            }
        }

        private void isiCardView(View v, int i, JSONObject jo) {
            TextView t_user = v.findViewById(R.id.nama);
            TextView t_jam = v.findViewById(R.id.jam);
            TextView t_status = v.findViewById(R.id.status);
            TextView t_like = v.findViewById(R.id.like);
            TextView t_komen = v.findViewById(R.id.komen);
            ANImageView gm_profile = v.findViewById(R.id.gambar_profile);

            try {
                t_user.setText(jo.getString("nama"));
                t_jam.setText(jo.getInt("jam")+" jam yang lalu");
                t_status.setText(jo.getString("status"));
                t_like.setText(jo.getInt("like")+" Like");
                t_komen.setText(jo.getInt("komen")+" Komentar");
                if (jo.getString("gambar_user")!="none"){
                    gm_profile.setImageUrl(url+"gambar/"+jo.getString("gambar_user"));
                }
                JSONArray gm = jo.getJSONArray("gambar_status");
                GambarStatus gambarStatus = new GambarStatus();
                gambarStatus.GambarStatus(this, inf, v);
                gambarStatus.buatGambarStatus(jo);

            } catch (JSONException e) {
                e.printStackTrace();
            }


        }
    }




  • GambarStatus.java

  • package codingrakitan.blogspot.cardview;

    import android.content.Context;
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.widget.FrameLayout;
    import android.widget.ImageView;
    import android.widget.LinearLayout;
    import android.widget.TextView;

    import com.androidnetworking.widget.ANImageView;

    import org.json.JSONArray;
    import org.json.JSONException;
    import org.json.JSONObject;

    import java.util.ArrayList;

    class GambarStatus {

        private Context context;
        private LayoutInflater inf;
        private View v;
        private LinearLayout ly_gambar;
        private String url="http://IP_ADDRESS_ANDA/card_view/gambar/";
        private ArrayList<String> gambar;

        public void GambarStatus(Context context, LayoutInflater inf, View v){
            this.context = context;
            this.inf = inf;
            this.v = v;
            ly_gambar = v.findViewById(R.id.ly_gambar);
        }

        public void buatGambarStatus(JSONObject gm) {
            Log.d("gmb", ""+gm);
            gambar = new ArrayList<String>();
            try {
                JSONArray ja = gm.getJSONArray("gambar_status");
                for (int i=0;i<ja.length();i++){
                    gambar.add(ja.get(i).toString());
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }

            if (gambar.size()>0){
                switch (gambar.size()){
                    case 1:
                        buatSatu(gambar.get(0).toString());
                        break;
                    case 2:
                        buatDua(gambar.get(0).toString(), gambar.get(1).toString());
                        break;
                    case 3:
                        buatTiga(gambar.get(0).toString(), gambar.get(1).toString(), gambar.get(2).toString());
                        break;
                    case 4:
                        buatEmpat(gambar.get(0).toString(), gambar.get(1).toString(), gambar.get(2).toString(), gambar.get(3).toString(), false);
                        break;
                    default:
                        buatEmpat(gambar.get(0).toString(), gambar.get(1).toString(), gambar.get(2).toString(), gambar.get(3).toString(), true);
                        break;

                }


            }
        }




        private void buatSatu(String s) {
           ANImageView img = new ANImageView(context);
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                    LinearLayout.LayoutParams.MATCH_PARENT,
                    LinearLayout.LayoutParams.WRAP_CONTENT
            );
            img.setLayoutParams(params);
            img.setImageUrl(url+s);
            ly_gambar.addView(img);
        }
        private void buatDua(String s, String s2) {
           View ly = inf.inflate(R.layout.dua_gambar, null);
           ANImageView img = ly.findViewById(R.id.gd_satu);
            ANImageView img2 = ly.findViewById(R.id.gd_dua);
            img.setImageUrl(url+s);
            img2.setImageUrl(url+s2);
           ly_gambar.addView(ly);
        }
        private void buatTiga(String s1, String s2, String s3) {
            View ly = inf.inflate(R.layout.tiga_gambar, null);
            ANImageView img = ly.findViewById(R.id.eg_satu);
            ANImageView img2 = ly.findViewById(R.id.eg_dua);
            ANImageView img3 = ly.findViewById(R.id.eg_tiga);
            img.setImageUrl(url+s1);
            img2.setImageUrl(url+s2);
            img3.setImageUrl(url+s3);
            ly_gambar.addView(ly);
        }
        private void buatEmpat(String s1, String s2, String s3, String s4, boolean b) {
            View ly = inf.inflate(R.layout.empat_gambar, null);
            LinearLayout li = ly.findViewById(R.id.ly_lebih);
            TextView tx = ly.findViewById(R.id.tx_lebih);
            ANImageView img = ly.findViewById(R.id.gt_satu);
            ANImageView img2 = ly.findViewById(R.id.gt_dua);
            ANImageView img3 = ly.findViewById(R.id.gt_tiga);
            ANImageView img4 = ly.findViewById(R.id.gt_empat);
            img.setImageUrl(url+s1);
            img2.setImageUrl(url+s2);
            img3.setImageUrl(url+s3);
            img4.setImageUrl(url+s4);
            ly_gambar.addView(ly);
            if (b==false){
                li.setVisibility(View.GONE);
            }else{
                int si = gambar.size()-4;
                tx.setText(si+"+");
            }
        }
    }
Ganti kata "IP_ADDRESS_ANDA" pada bagian url="http://IP_ADDRESS_ANDA/card_view/" MainAtivity dan pada url="http://IP_ADDRESS_ANDA/card_view/gambar/" GambarStatus.

Jika IP Address anda adalah "192.168.0.1" maka ubah menjadi "url="http://192.168.0.1/card_view/" di file atau class MainActivity.java serta di file GambarStatus.java menjadi url="http://192.168.0.1/card_view/gambar/".

Untuk melihat IP address anda silahkan baca postingan Cara Melihat IP Address di CMD Windows

Serta Pastikan pada bagian paling atas yaitu package codingrakitan.blogspot.cardview; sama dengan nama package anda, jika tidak maka program akan error.

5. Edit Values Color

Silahkan lakukan pengeditan pada colors.xml dan isi dengan kode dibawah.

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#002C85</color>
    <color name="colorPrimaryDark">#00574B</color>
    <color name="colorAccent">#D81B60</color>
    <color name="abu_abu">#9197a3</color>
    <color name="background_utama">#dcdee3</color>
    <color name="transparan">#B3000000</color>
</resources>

6. Uji Coba dengan Emulator

Pada tahapan terakhir silahkan uji coba aplikasi menggunakan emulator atau debug via USB langsung ke Smarthphone. Disini saya menggunakan emulator nox untuk uji coba, dan hasilnya seperti ini.





Cara Melihat IP Address di CMD Windows


IP Address merupakan alamat identifikasi untuk komputer host dalam jaringan Internet. IP ini berupa deretan angka biner antara 32 bit sampai 128 bit.

Ibaratkan komputer sebagai rumah maka untuk mendapatkan rumah diperlukan yang namanya alamat, IP inilah yang menjadi alamat komputer. Alamat ini diperlukan agar komputer satu dengan yang lainnya dapat melakukan pertukaran data. Bayangkan jika tidak ada alamat tentunya komputer akan pusing mengirimkan data kemana.

Untuk mengecek IP anda bisa melihatnya melalui CMD (Command Prompt) dengan cara CTRL+R ketikkan cmd dan enter. Jika cmd sudah terbuka ketikkan perintah di bawah.

ipconfig


Hasilnya anda bisa melihat pada bagian IPv4 Address.




Mengenal dan Menginstall XAMPP



XAMPP merupakan aplikasi atau perangkat lunak yang berfungsi sebagai server yang berdiri sendiri (localhost). Aplikasi ini bersifat open source yang dapat di install di berbagai platform seperti Windows, Linux, serta Mac OS.

Nama XAMPP adalah singkatan dari X (sistem operasi), Apache, MySQL, PHP dan Pearl. Seperti namanya XAMPP memang terdiri dari beberapa aplikasi yang disatukan. Aplikasi ini akan sangat membantu pengembang web dalam membangung sebuah aplikasi Web.

Kegunaan XAMPP

Ada beberapa kegunaan XAMPP yang perlu diketahui oleh pemula. Berikut kegunaan XAMPP tersebut.

  • Sebagai server
  • Seperti yang sudah dikatakan diatas fungsi utama XAMPP adalah sebagai server, sebuah web dimana diserver tersebut di atur file-file yang akan di tampilkan pada halaman web.
  • Penghubung ke Database
  • Dalam membangun sebuah web database sangat diperlukan untuk menyimpan sebuah data. XAMPP berfungsi sebagai penghubung web dengan database yaitu database MYSQL.
  • Membantu perancangan aplikasi web secara offline
  • XAMPP membantu programer dalam membangun aplikasi web secara offline sebelum akhirnya di onlinekan di Internet.

Cara Instalasi XAMPP

Untuk menginstall XAMPP tidaklah sulit anda hanya perlu mengunduh file masternya disini.
  • Eksekusi hasil file yang telah di download.
  • Pada jendela baru klik Next
     
  • Centang semua aplikasi yang ada pada jendela selanjutnya lalu klik Next.
     
  • Jendela selanjutnya adalah untuk mengatur letak file instalasi XAMPP diletakkan, nantinya folder htdocs tempat anda meletakkan project web juga diletakkan disini. Jadi pastikan folder ini sudah sesuai dengan yang anda inginkan. Secara default folder instalasinya berada di C:\xampp
     
  • Silahkan klik Next untuk jendela-jendela yang muncul selanjutnya. Hingga proses instalasi dimulai seperti pada gambar dibawah.
     
  • Terakhir klik finish
Memulai Membuat Project dengan XAMPP
Project pertama ini kita mulai dengan membuat sebuah web sederhana yaitu hello world. Tutorial ini saya tujukan untuk pemula dalam dunia pemrograman web khususnya pemula dalam menggunakan XAMPP. Ikuti langkah-langkah di bawah ini.

  • Buka aplikasi XAMPP.
  • Klik tombol start pada Apache dan Mysql hingga warnanya menjadi hijau serta tombol statrt menjadi tombol stop seperti gambar dibawah.
     
  • Sekarang buka folder htdocs di lokasi penginstalan tadi. Saya sendiri lokasinya ada di C:\xampp\htdocs. Silahkan buat folder baru di dalam folder tersebut dengan nama "belajar" seperti gambar dibawah. Folder dengan lingkaran merah adalah folder yang baru saya buat sedangkan yang lainnya adalah project web yang pernah dibuat sebelumnya.
     
  • Buat sebuah file dengan nama index.html. Anda bisa menggunakan editor seperti sublime text, notepad++, atau sejenisnya.
  • Kemudian edit file index.html tersebut dengan kode seperti dibawah.

    <!DOCTYPE html>
    <html>
    <head>
        <title>Belajar XAMPP</title>
    </head>
    <body>
        <h1>Hello World !!</h1>
    </body>
    </html>

  • Buka browser internet anda seperti Mozilla atau Chrome. Ketikkan di alamt urlnya dengan localhost/belajar
     
  • Selamat belajar membuat aplikasi-aplikasi selanjutnya.