AdityaDees: Android_Studio

Hot

https://publishers.chitika.com/

Contact us for advertising.
Showing posts with label Android_Studio. Show all posts
Showing posts with label Android_Studio. Show all posts

10 May 2021

Keunggulan dan Kekurangan Android Studio yang Perlu Dipahami

17:20 0

Bagi seorang programmer pasti sudah tidak asing dengan yang namanya Android Studio. Bahkan bisa saja mereka juga paham betul dengan keunggulan dan kekurangan Android Studio tersebut. Masyarakat awam juga perlu mengenal apa itu Android Studio.


Sebagian besar pengguna ponsel pintar di dunia menggunakan sistem operasi Android pada ponsel mereka. Masyarakat sudah tidak asing lagi dengan istilah Android, hanya saja mereka mungkin tidak tahu apa itu Android Studio.


Secara sederhananya Android Studio tersebut merupakan software yang digunakan untuk membuat aplikasi smartphone. Jadi aplikasi yang anda pakai di ponsel, dibuat dan dikembangkan pada Android Studio ini. oleh karena itu perannya sebenarnya sangat penting.


Mengenal Lebih Dekat Android Studio


Sebelum kita melihat apa saja keunggulan dan kekurangan Android Studio ada baiknya kita pahami terlebih dahulu bagimana cara kerja Android Studio tersebut. Android Studio ini diperkenalkan pada tahun 2013 lalu saat acara Google I/o Conference.


Android Studio ini sepenuhnya sudah diakusisi oleh Google, sehingga perkembangannya semakin pesat. Sosok dibalik pembuatan Android Studio ini adalah Jet Brains. Android Studio ini tersedia untuk beberapa platform seperti Windows, desktop Mac, dan juga Linux. 


Fungsi utama dari software ini adalah membuat, merancang, dan mengambangkan aplikasi Android. Semua aplikasi yang anda temukan di Play Store misalnya dibuat melalui Android Studio ini. Jadi jika anda ingin belajar pemrograman, maka harus paham cara menggunakan Android Studio. 


Apa Saja Keunggulan Android Studio


Saat ini memang sudah banyak bermunculan software pembuat aplikasi. Meskipun demikian tetap saja kebanyakan programmer lebih memilih menggunakan Android Studio tersebut dalam membuat aplikasi. Alasannya tentu saja karena Android Studio memiliki banyak keunggulan.


  • Terdapat Banyak Fitur Pada Emulatornya


Salah satu alasan mengapa para programmer menyukai Android Studio ini karena pada emulatornya banyak disediakan fitur yang bisa dimanfaatkan. Bisa dibilang bahwa Android Studio ini merupakan yang terbaik dalam hal emulator.


Lewat banyaknya fitur emulator ini, anda nantinya bisa melakukan uji langsung aplikasi yang dibuat pada ponsel atau juga pada smartv. Dengan demikian dapat diketahui letak kekurangan atau hal lainnya.
Menariknya lagi adalah lewat adanya emulator tersebut, anda bisa langsung membuat simulasi di perangkat keras lainnya, misalnya pada baterai, pada sensor, gps, dan yang lain. Bisa dibilang bahwa dengan kehadiran Android Studio proses kerja jadi lebih efektif. 

 

  • Bisa Digunakan Secara Tim


Membuat suatu aplikasi tentu bukan pekerjaan mudah. Dibutuhkan kreativitas , ketelitian, dan pengetahuan luas untuk membuat aplikasi yang sempurna. Oleh karena itu kebanyakan orang membuat aplikasi secara tim, sehingga hasil kerja lebih cepat dan lebih efektif.


Dengan menggunakan Android Studio, maka anda bisa mengembangkan aplikasi tersebut secara tim. Pada Android Studio terdapat layanan Github dan Subversion. Layanan ini memungkinkan anda berkolaborasi dengan orang lain dalam mengembangkan aplikasi Android tersebut.


Bisa dipastikan bahwa hasil kerja jauh lebih baik bila dikerjakan bersama orang – orang ahli. Bisa saja ada kesalahan yang luput dari perhatian anda, tetapi ditemukan oleh anggota tim. Proses kerja semakin cepat dan hasilnya juga pasti semakin maksimal. 

  • Memiliki Sistem yang Sangat Fleksibel


Di balik  keunggulan dan kekurangan Android Studio jelas software ini sangat bermanfaat. Android Studio memiliki sistem yang sangat fleksibel. Fleksibel artinya otomatisasi, manejemen dependensi, dan konfigurasi versinya dapat disesuaikan dengan keperluan anda.


Pada sistem ini, setiap varian versi nantinya disertakan juga dengan kode yang berbeda. Jadi sangat tepat digunakan untuk membuat beragam aplikasi, yang sesuai dengan kebutuhan anda. Keunggulan ini sulit ditemukan pada software pengembang lainnya. 

  • Adanya Fitur Layout Editor


Fitur layout editor juga menjadi salah satu keunggulan yang ditawarkan oleh Android Studio ini. Fitur ini membuat proses pembuatan layout jadi lebih efisien. Anda nantinya cukup melaukan drag elemen UI tersebut ke desain editor. Jadi tidak perlu lagi membuat layout XML nya.


Dengan adanya layout editor, anda bisa langsung melihat desain yang anda buat, baik dari versinya, ukuran layarnya, atau juga perangkat Android yang berbeda. Dengan kata lain, proses pembuatan aplikasi jadi semakin praktis. 

  • Cocok Digunakan Pada Semua Perangkat Android


Saat ini kebanyakan prangkat elektronik menggunakan sistem operasi Android. Google sendiri masih menjadi raja mesin pencarian, sehingga kebanyakan orang lebih menyukai perangkat Android. Ini juga lah yang menjadi salah satu alasan mengapa Android Studio lebih diminati.


Jika anda mengembangkan aplikasi lewat Android Studio, maka aplikasi tersebut nantinya bisa digunakan pada semua perangkat Android. Jika anda menggunakan software pengembang lain, belum tentu bisa dioperasikan pada perangkat Android.


Aplikasi yang dibuat lewat Android Studio ini, pasti bisa dijalankan dengan mudah pada semua perangkat Android, karena memang masih selaras. Anda bisa menerapkan di smart tv, smart watch dan perangkat lainnya. 


  • Memiliki Fitur Intelligence Code Editor


Intelligence code editor pada Android Studio merupakan salah satu fitur yang sangat bermanfaat. Lewat fitur ini, maka penulisan kode tidak lagi rumit. Intelligence code ini akan memberikan saran kode untuk anda, jadi prosesnya jadi lebih praktis.


Fitur ini juga mampu menganalisis kesalahan kode, memperkirakan kode yang akan dibuat, dan yang lainnya. Jadi kode yang dibuat pada aplikasi tersebut bisa terhindar dari kesalahan, proses penulisannya semakin cepat dan juga efektif. 


Kekurangan Software Android Studio


Terlepas dari segala kelebihan yang dimilikinya tetap saja Android Studio masih menyimpan beberapa kekurangan. Kekurangan ini sebenarnya tidak terlalu besar, karena tetap Android Studio menjadi yang terbaik dalam pembuatan aplikasi. Beberapa kekurangannya adalah sebagai berikut.


  • Proses Implementasi Cukup Panjang


Salah satu kekurangan dari Android Studio ini adalah proses implementasinya masih tergolong panjang dan sedikit rumit. Jadi pemula yang ingin menggunakannya harus belajar ekstra dan sabar dalam melakukannya. 


Walaupun anda misalnya membuat aplikasi yang sederhana, masih perlu melalui proses implementasi yang panjang. Jadi jika ingin membuat aplikasi, dibutuhkan kesungguhan saat menggunakan software Android Studio tersebut. 


  • Sulit Mendeteksi Error

Kekurangan lain dari Android Studio adalah jika saat proses pembuatan aplikasi terdapat kesalahan, maka relative sulit mendeteksi kesalahan tersebut. Saat anda sistem yang error misalnya, anda tidak langsung tahu di mana letak error tersebut.
Jadi programmer harus memeriksa secara perlahan penulisan dan kesalahan yang mereka buat. Dalam membuat aplikasi memang dibutuhkan ketelitian, jadi jika ada sistem error, maka anda harus segera memperbaikinya.


Saat ini hampir semua hal sudah memiliki aplikasi, karena aplikasi tersebut membuat kehidupan manusia jadi lebih mudah. Tidak ada salahnya belajar membuat aplikasi, karena hal ini bisa menjadi peluang bisnis untuk anda.


Android Studio merupakan salah satu software pengembang aplikasi terbaik saat ini, yang akan memudahkan segala pekerjaan anda. itu lah informasi terkait keunggulan dan kekurangan Android Studio.

Read More

18 March 2021

REST API CLIENT DENGAN RETROFIT 2 ANDROID STUDIO

17:47 0

 


Jika sebelumnya saya lebih banyak menggunakan volley untuk rest api client, maka kali ini kita akan menggunakan library berbeda yaitu Retrofit 2.

Pada tutorial kita akan mencoba mengambil data berformat JSON dengan menggunakan retrofit.

Silahkan ikuti langkah-langkah di bawah ini :

1. Persiapkan data yang akan di ambil contohnya disini saya menggunakan data biasa yang saya tulis sendiri dalam format JSON.


{
"id" : 123456,
"nama" : "coding rakitan",
"umur" : 23,
"username" : "coding_rakitan"
}




2. Buka project yang ini di implementasikan penggunaan retrofit 2.

3. Buka build.gradle (Module: app) kemudian tambahkan dependencies berikut kemudian klik sync now.

// Retrofit
implementation 'com.squareup.retrofit2:retrofit:2.1.0'

// JSON Parsing
implementation 'com.google.code.gson:gson:2.6.1'
implementation 'com.squareup.retrofit2:converter-gson:2.1.0'


4. Tambahkan izin penggunaan internet pada AndroidManifest.xml

...
<uses-permission android:name="android.permission.INTERNET"/>
...


Dan tambahkan pula code android:usesCleartextTraffic="true" kedalam tag aplication di AndroidManifest.xml.

...
<application
...
android:usesCleartextTraffic="true"
>
...


5. Buat sebuah package baru dengan nama "data" yang akan menampung 3 calass seperti DataModel, RetrofitClient, dan APIService.





6. Isi DataModel seperti berikut :

public class DataModel {
@SerializedName("id")
@Expose
private Integer id;

@SerializedName("nama")
@Expose
private String nama;

@SerializedName("umur")
@Expose
private Integer umur;

@SerializedName("username")
@Expose
private String username;



public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public String getNama() {
return nama;
}

public void setNama(String nama) {
this.nama = nama;
}

public Integer getUmur() {
return umur;
}

public void setUmur(Integer umur) {
this.umur = umur;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}
}




7. Isi RetrofitClient seperti berikut :

public class RetrofitClient {
private static Retrofit retrofit = null;
private static final String IP = "192.168.43.140";
public static final String BASE_URL = "http://" +IP + "/retrofit/";

public static Retrofit getClient() {
if (retrofit==null) {
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
return retrofit;
}
}


Catatan : Ganti ip dengan ip atau domain server kalian.

8. Isi APIService seperti berikut :

public interface APIService {
@GET("data.json")
Call<DataModel> getData();
}



9. Sekarang kode sudah bisa dijalankan pada activity ataupun class lain untuk mengambil data json. Sebagai contoh penggunaan pada MainActivity seperti berikut :

public class MainActivity extends AppCompatActivity {

Call<DataModel> data;
APIService apiService;

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

apiService = RetrofitClient.getClient().create(APIService.class);


data = apiService.getData();
data.enqueue(new Callback<DataModel>() {
@Override
public void onResponse(Call<DataModel> call, Response<DataModel> response) {
Log.d("DataModel", ""+new Gson().toJson(response.body()));
if (response.isSuccessful()){

Toast.makeText(MainActivity.this, "success", Toast.LENGTH_SHORT).show();
}else{
Log.d("errt", ""+response.errorBody());
Toast.makeText(MainActivity.this, ""+response.errorBody(), Toast.LENGTH_SHORT).show();
}
}

@Override
public void onFailure(Call<DataModel> call, Throwable t) {
Log.d("DataModel", ""+t.getMessage());
Toast.makeText(getApplicationContext(), "Error : " + t.getMessage(), Toast.LENGTH_LONG).show();
}
});

}
}



Pada kode di atas menginstruksikan program untuk menampilkan respon JSON pada log maka anda bisa melihat hasilnya pada logchat seperti berikut :





Read More

16 March 2021

Membuat CRUD SQLite di Android Studio

14:15 0


 

SQLite merupakan sebuah database yang dapat dipasang pada Aplikasi Android Studio. Buat yang sering menggunakan database MYSQL tidak akan sulit beradaptasi dengan database SQLite sebab keduanya memiliki query yang sama.

Pada postingan ini kita akan membuat CRUD SQLite di Android Studio. Saya tidak akan memberikan kode berupa satu aplikasi full, hanya berupa code CRUD saja jadi sisanya tinggal teman-teman sesuaikan dengan aplikasi sendiri.

Sebagai contoh pembuatan database CODING_RAKITAN dengan tabel artikel. langkah yang harus dilakukan adalah :

1. Buat class baru dengan nama DBHistori kemudian isi dengan kode dibawah :


...

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.provider.BaseColumns;

import java.util.ArrayList;
import java.util.HashMap;

public class DBArtikel extends SQLiteOpenHelper {

public static final int DATABASE_VERSION = 1;
public static final String DATABASE_NAME = "CODING_RAKITAN.db";

public DBArtikel(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}


public static class FeedEntry implements BaseColumns {
public static final String TABLE_NAME = "artikel_tersimpan";
public static final String TITLE = "title";
public static final String URL = "url";
public static final String CONTENT = "content";
public static final String PUBLISHED = "published";
public static final String AUTHOR = "author";
public static final String DISPLAY_NAME = "displayName";
public static final String TANGGAL_SIMPAN = "tanggal_simpan";
public static final String GAMBAR_UTAMA = "gambar_utama";
}


@Override
public void onCreate(SQLiteDatabase db) {
String TABEL =
"CREATE TABLE " + DBArtikel.FeedEntry.TABLE_NAME + " (" +
DBArtikel.FeedEntry._ID + " INTEGER PRIMARY KEY," +
DBArtikel.FeedEntry.TITLE + " TEXT," +
DBArtikel.FeedEntry.URL+ " TEXT,"+
DBArtikel.FeedEntry.CONTENT+ " TEXT,"+
DBArtikel.FeedEntry.PUBLISHED+ " TEXT,"+
DBArtikel.FeedEntry.AUTHOR+ " TEXT,"+
DBArtikel.FeedEntry.DISPLAY_NAME+ " TEXT,"+
DBArtikel.FeedEntry.GAMBAR_UTAMA+ " TEXT,"+
DBArtikel.FeedEntry.TANGGAL_SIMPAN+" DATETIME DEFAULT CURRENT_TIMESTAMP)";

db.execSQL(TABEL);
}

@Override
public void onUpgrade(SQLiteDatabase db, int i, int i1) {
String SQL_DELETE_ENTRIES =
"DROP TABLE IF EXISTS " + DBHistori.FeedEntry.TABLE_NAME;
String SQL_DELETE_ENTRIES_2 =
"DROP TABLE IF EXISTS " + DBArtikel.FeedEntry.TABLE_NAME;
db.execSQL(SQL_DELETE_ENTRIES);
db.execSQL(SQL_DELETE_ENTRIES_2);
onCreate(db);
}
public void insert_satu(String title, String url, String content, String publish, String author, String display_name, String gambar){
SQLiteDatabase db = this.getWritableDatabase();
String query = "INSERT INTO "+ FeedEntry.TABLE_NAME+ "("+
FeedEntry.TITLE +","+
FeedEntry.URL+","+
FeedEntry.CONTENT+","+
FeedEntry.PUBLISHED+","+
FeedEntry.AUTHOR+","+
FeedEntry.DISPLAY_NAME+","+
FeedEntry.GAMBAR_UTAMA+")"+
"VALUES ('"+title+"', '"+
url+"', '"+
content+"','"+
publish+"', '"+
author+"', '"+
display_name+"', '"+
gambar+"')";
db.execSQL(query);
db.close();
}
public void insert_dua(ContentValues values){

SQLiteDatabase db = this.getWritableDatabase();
db.insert(FeedEntry.TABLE_NAME, null, values);
}
public ArrayList<HashMap<String, String>> select_all(){
ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();
String query = "SELECT * FROM "+ FeedEntry.TABLE_NAME+" ORDER BY "+ FeedEntry.TANGGAL_SIMPAN+" desc";
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(query, null);
if (cursor.moveToFirst()){
do {
HashMap<String, String> map = new HashMap<String, String>();
map.put(FeedEntry._ID, cursor.getString(0));
map.put(FeedEntry.TITLE, cursor.getString(1));
map.put(FeedEntry.URL, cursor.getString(2));
map.put(FeedEntry.CONTENT, cursor.getString(3));
map.put(FeedEntry.PUBLISHED, cursor.getString(4));
map.put(FeedEntry.AUTHOR, cursor.getString(5));
map.put(FeedEntry.DISPLAY_NAME, cursor.getString(6));
map.put(FeedEntry.GAMBAR_UTAMA, cursor.getString(7));
map.put(FeedEntry.TANGGAL_SIMPAN, cursor.getString(8));
list.add(map);

}while (cursor.moveToNext());
}
db.close();
return list;
}
public ArrayList<HashMap<String, String>> select_where(String where){
ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();
String query = "SELECT * FROM "+ FeedEntry.TABLE_NAME+" WHERE "+where+" ORDER BY "+ FeedEntry.TANGGAL_SIMPAN+" desc";
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(query, null);
if (cursor.moveToFirst()){
do {
HashMap<String, String> map = new HashMap<String, String>();
map.put(FeedEntry._ID, cursor.getString(0));
map.put(FeedEntry.TITLE, cursor.getString(1));
map.put(FeedEntry.URL, cursor.getString(2));
map.put(FeedEntry.CONTENT, cursor.getString(3));
map.put(FeedEntry.PUBLISHED, cursor.getString(4));
map.put(FeedEntry.AUTHOR, cursor.getString(5));
map.put(FeedEntry.DISPLAY_NAME, cursor.getString(6));
map.put(FeedEntry.GAMBAR_UTAMA, cursor.getString(7));
map.put(FeedEntry.TANGGAL_SIMPAN, cursor.getString(8));
list.add(map);

}while (cursor.moveToNext());
}
db.close();
return list;
}
public void update(String title, String url, String content, String publish,
String author, String display_name, String gambar, String id) {
SQLiteDatabase database = this.getWritableDatabase();

String query = "UPDATE " + FeedEntry.TABLE_NAME + " SET "
+ FeedEntry.TITLE + "='" + title + "', "
+ FeedEntry.URL + "='" + url + "', "
+ FeedEntry.CONTENT + "='" + content + "', "
+ FeedEntry.PUBLISHED + "='" + publish + "', "
+ FeedEntry.AUTHOR + "='" + author + "', "
+ FeedEntry.DISPLAY_NAME + "='" + author + "', "
+ FeedEntry.GAMBAR_UTAMA + "='" + display_name + "'"
+ " WHERE " + FeedEntry._ID + "=" + "'" + id + "'";
database.execSQL(query);
database.close();
}

public void delete_where(int id) {
SQLiteDatabase database = this.getWritableDatabase();
String updateQuery = "DELETE FROM " + FeedEntry.TABLE_NAME + " WHERE " + FeedEntry._ID + "=" + "'" + id + "'";
database.execSQL(updateQuery);
database.close();
}

public void delete() {
SQLiteDatabase database = this.getWritableDatabase();
String updateQuery = "DELETE FROM " + FeedEntry.TABLE_NAME;
database.execSQL(updateQuery);
database.close();
}
}


2. Definisikan class pada Activity ataupun fragment dengan code :

...
private DBArtikel dbArtikel;
...
dbArtikel = new DBArtikel(context);
...


3. Insert data ke SQLite menggunakan metode 1

dbArtikel.insert_satu("isi_title", "isi content", "isi publish", "isi author", "isi display_name", "isi" gambar");


4. Insert data ke SQLite menggunakan metode 2

ContentValues values = new ContentValues();
values.put("title", "");
values.put("url", "");
values.put("content", "");
values.put("published", "");
values.put("author", "");
values.put("displayName", "");
values.put("gambar_utama", "");
dbArtikel.Insert(values);


Catatan isi tanda "" sesuai dengan data yang ingin disimpan contohnya values.put("gambar_utama", "data gambarku");.

5. Select data

ArrayList> a = dbArtikel.select_all();


Selain kode di atas bisa juga melakukan select berdasarkan field :

ArrayList> a = dbArtikel.select_where("query");


6. Update data

...
dbArtikel.update("", "", "", "", "", "", "", "");
...


Silahkan isi "" sesuai dengan field pada code

public void update(String title, String url, String content, String publish,
String author, String display_name, String gambar, String id) {
SQLiteDatabase database = this.getWritableDatabase();

String query = "UPDATE " + FeedEntry.TABLE_NAME + " SET "
+ FeedEntry.TITLE + "='" + title + "', "
+ FeedEntry.URL + "='" + url + "', "
+ FeedEntry.CONTENT + "='" + content + "', "
+ FeedEntry.PUBLISHED + "='" + publish + "', "
+ FeedEntry.AUTHOR + "='" + author + "', "
+ FeedEntry.DISPLAY_NAME + "='" + author + "', "
+ FeedEntry.GAMBAR_UTAMA + "='" + display_name + "'"
+ " WHERE " + FeedEntry._ID + "=" + "'" + id + "'";
database.execSQL(query);
database.close();
}


7. Delete data

...
dbArtikel.delete();
...


Untuk menghapus data tertentu gunakan perintah

...
dbArtikel.delete_where(id);
...


Ganti id berdasarkan id data yang ingin dihapus dimana id merupakan tipe data int.
Read More

12 March 2021

Membuat Aplikasi Pesan Chat di Android Studio Bagian 1

07:58 0

 


Aplikasi pesan merupakan salah satu aplikasi wajib di install di perangkat Smartphone Android. Banyak aplikasi pesan chat yang dapat ditemukan di playstore, beberapa aplikasi yang terkenal seperti WhatsApp, Line, Telegram, KakaoTalk, dan masih banyak lagi.

Pada postingan kali ini kita akan membuat aplikasi pesan chat sama seperti WhatsApp ataupun Telegram. Agar mudah untuk dipahami, pembuatan aplikasi ini akan dibagi menjadi beberapa bagian dimana pada bagian pertama ini berfokus pada tampilan aplikasi.

Tampilan aplikasi pada bagian pertama nantinya akan tampak seperti gambar dibawah :

Langsung saja ikuti langkah-langkah berikut :

1. Buat Project baru dengan nama Pesan Kilat
2. Buat beberapa class dan folder seperti pada gambar.




Bisa di lihat pada gambar diatas terdapat 2 class activity yaitu MainActivity, dan TampilPesan, serta terdapat satu class fragment yang berada dalam package fregment dengan nama FragmentChat. Berikut kode dari ketiga class tersebut :

MainActivity

package com.adityadee.pesankilat;

import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.Window;

import com.adityadee.pesankilat.fragment.FragmentChat;

public class MainActivity extends AppCompatActivity {

private FragmentTransaction ft;
private FragmentManager fm;
private FragmentChat fragmentChat;
private AppCompatActivity activity;
private Context context;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getSupportActionBar().hide();
setContentView(R.layout.activity_main);

context=this;
activity = this;

fm = getSupportFragmentManager();
ft = fm.beginTransaction();

BuatFragment();
}

private void BuatFragment() {
fragmentChat = new FragmentChat(activity, context);

ft.add(R.id.konten, fragmentChat);
ft.commit();
}

public void TampilPesan() {
Intent i = new Intent(MainActivity.this, TampilPesan.class);
startActivity(i);
onPause();
}
}



TampilPesan

package com.adityadee.pesankilat;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;

public class TampilPesan extends AppCompatActivity {

private LinearLayout pesan;
private Context context;
private LinearLayout send;
private EditText text;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getSupportActionBar().hide();
setContentView(R.layout.activity_tampil_pesan);

context = this;
pesan = findViewById(R.id.pesan);
send = findViewById(R.id.send);
text = findViewById(R.id.editText);

send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String s = text.getText().toString();
CardMyPesan(s);
}
});

Kontent();
}

private void CardMyPesan(String s) {
View v = getLayoutInflater().inflate(R.layout.card_pesan_b, null);
LinearLayout konten_pesan = v.findViewById(R.id.konten_pesan);
TextView textView = new TextView(context);
ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
textView.setLayoutParams(lp);

textView.setText(""+s);
textView.setTextSize(14);
textView.setTextColor(getResources().getColor(R.color.hitam));
konten_pesan.addView(textView);

pesan.addView(v);
text.setText("");

}

private void Kontent() {
View v = getLayoutInflater().inflate(R.layout.card_pesan_a, null);
LinearLayout konten_pesan = v.findViewById(R.id.konten_pesan);
TextView textView = new TextView(context);
ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
textView.setLayoutParams(lp);

textView.setText("selamat datang !");
textView.setTextSize(14);
textView.setTextColor(getResources().getColor(R.color.hitam));
konten_pesan.addView(textView);

pesan.addView(v);
}
}



FragmentChat

package com.adityadee.pesankilat.fragment;

import android.annotation.SuppressLint;
import android.content.Context;
import android.os.Build;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;

import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;

import com.adityadee.pesankilat.MainActivity;
import com.adityadee.pesankilat.R;


@SuppressLint("ValidFragment")
public class FragmentChat extends Fragment {

private AppCompatActivity activity;
private Context context;
private LinearLayout isi;
private LayoutInflater inf;

public FragmentChat(AppCompatActivity activity, Context context) {
this.context = context;
this.activity = activity;
}

@RequiresApi(api = Build.VERSION_CODES.M)
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View view = inflater.inflate(R.layout.fragment_chat, container, false);
isi = view.findViewById(R.id.isi);
inf = inflater;
for (int i=0;i<10;i++){
BuatCard();
}
return view;
}

private void BuatCard() {
View v = inf.inflate(R.layout.card_chat, null);
isi.addView(v);
v.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
((MainActivity) getActivity()).TampilPesan();
}
});
}
}

Catatan : Jangan lupa untuk mengganti "package com.adityadee.pesankilat;" yang berada pada baris atas sesuai dengan package kalian.

3. Masukkan 2 drawabel baru dengan nama "ic_arrow_back_black.xml" dan "ic_send_black.xml".





Gambar drawable ini bisa anda buat sendiri ataupun menggunakan asset yang telah disediakan AndroidStudio. Baca Cara Menggunakan Icon Vector Asset bawahan Android Studio, Cara Menggunakan Icon Sendiri di Android Studio.

4. Buka colors.xml yang berada pada res -> values -> colors.xml, kemudian isi dengan kode berikut :

<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#008577</color>
<color name="colorPrimaryDark">#00574B</color>
<color name="colorAccent">#D81B60</color>
<color name="biru">#0073A0</color>
<color name="abu_abu">#8A8A8A</color>
<color name="hijau">#00D423</color>
<color name="abu_abu_dua">#E3E3E3</color>
<color name="hitam">#000000</color>
<color name="putih">#FFFFFF</color>
<color name="hijau_pesan">#e2ffc7</color>
<color name="waktu">#869b72</color>

</resources>




5. Buat layout seperti pada gambar dibawah :





Adapun kode dari layout-layout tersebut :

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"
tools:context=".MainActivity" >

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/biru"
android:gravity="center_vertical"
android:orientation="vertical"
android:padding="20dp">

<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="PesanKilat"
android:textColor="@android:color/white"
android:textSize="24sp"
android:textStyle="bold" />
</LinearLayout>

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

</LinearLayout>

</RelativeLayout>



activity_tampil_pesan.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/abu_abu_dua"
android:orientation="vertical"
tools:context=".TampilPesan">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:scrollbars="none">

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

<LinearLayout
android:id="@+id/pesan"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:orientation="vertical"
android:paddingTop="50dp"></LinearLayout>
</LinearLayout>
</ScrollView>

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

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

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginBottom="5dp"
android:layout_weight="1"
android:background="@android:color/white"
android:gravity="center_vertical"
android:orientation="vertical"
android:padding="10dp">

<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:ems="10"
android:hint="Tulis pesan"
android:inputType="textPersonName"
android:textSize="14sp" />
</LinearLayout>

<LinearLayout
android:id="@+id/send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="5dp"
android:layout_marginBottom="5dp"
android:background="@color/biru"
android:orientation="vertical"
android:padding="20dp">

<ImageView
android:id="@+id/imageView4"
android:layout_width="20dp"
android:layout_height="20dp"
android:adjustViewBounds="true"
android:tint="@android:color/white"
app:srcCompat="@drawable/ic_send_black"
tools:ignore="VectorDrawableCompat" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="@color/biru"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingLeft="20dp"
android:paddingRight="20dp">

<ImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:tint="@android:color/white"
app:srcCompat="@drawable/ic_arrow_back_black"
tools:ignore="VectorDrawableCompat" />

<ImageView
android:id="@+id/imageView3"
android:layout_width="30dp"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:adjustViewBounds="true"
app:srcCompat="@mipmap/ic_launcher_round" />

<TextView
android:id="@+id/textView6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:text="Nama Kontak"
android:textColor="@android:color/white"
android:textStyle="bold" />
</LinearLayout>

</RelativeLayout>



card_chat.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:orientation="vertical"
android:padding="20dp">

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

<ImageView
android:id="@+id/imageView"
android:layout_width="50dp"
android:layout_height="50dp"
android:adjustViewBounds="true"
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="match_parent"
android:layout_marginBottom="10dp"
android:orientation="horizontal">

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

<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:text="Nama Kontak"
android:textColor="@android:color/black"
android:textStyle="bold" />

<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />
</LinearLayout>

<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical">

<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:text="15:00"
android:textColor="@color/hijau"
android:textSize="10sp"
app:fontFamily="serif" />

<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@color/hijau"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:text="9"
android:textColor="@android:color/white" />
</LinearLayout>
</LinearLayout>

</LinearLayout>

</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:layout_marginLeft="60dp"
android:background="@color/abu_abu"
android:orientation="vertical"></LinearLayout>
</LinearLayout>



card_pesan_a.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:orientation="vertical"
android:padding="10dp">

<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="30dp"
android:background="@android:color/white"
android:minWidth="70dp"
android:minHeight="30dp"
android:orientation="vertical">

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

<TextView
android:id="@+id/textView8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0852512161"
android:textColor="@android:color/black"
android:textSize="12sp" />

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:minWidth="50dp"
android:orientation="horizontal"></LinearLayout>

<TextView
android:id="@+id/textView7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Nama kontak"
android:textSize="10sp" />
</LinearLayout>

<LinearLayout
android:id="@+id/konten_pesan"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="10dp"></LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="right"
android:orientation="vertical"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingBottom="10dp">

<TextView
android:id="@+id/textView9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="09:00"
android:textColor="@color/waktu"
android:textSize="10sp" />
</LinearLayout>
</LinearLayout>
</LinearLayout>



card_pesan_b.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:gravity="right"
android:orientation="vertical"
android:padding="10dp">

<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:background="@color/hijau_pesan"
android:minWidth="70dp"
android:minHeight="30dp"
android:orientation="vertical">

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

<TextView
android:id="@+id/textView8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0852512161"
android:textColor="@android:color/black"
android:textSize="12sp" />

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:minWidth="50dp"
android:orientation="horizontal"></LinearLayout>

<TextView
android:id="@+id/textView7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Nama kontak"
android:textSize="10sp" />
</LinearLayout>

<LinearLayout
android:id="@+id/konten_pesan"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="10dp"></LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="right"
android:orientation="vertical"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingBottom="10dp">

<TextView
android:id="@+id/textView9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="09:00"
android:textColor="@color/waktu"
android:textSize="10sp" />
</LinearLayout>
</LinearLayout>
</LinearLayout>



fragment_chat.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">

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

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



6. Terakhir buka AndroidManifest.xml dan tambahkan android:windowSoftInputMode="adjustResize" pada activity "TampilPesan" sehingga menjadi seperti berikut :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.adityadee.pesankilat">

<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=".TampilPesan"
android:windowSoftInputMode="adjustResize"></activity>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>

Jika kalian mengkopi paste kode di atas, silahkan sesuaikan package="com.adityadee.pesankilat" dengan nama package kalian. 


Catatan : Kode android:windowSoftInputMode="adjustResize" berfungsi untuk menyesuaikan tampilan ketika keyboard muncul.





Lanjut ke Membuat Aplikasi Pesan Chat di Android Studio Bagian 2
Read More

11 December 2020

Membuat Background Tools Auto Show Ketika ScrollView di Scroll

20:42 0


 

Pada postingan kali akan membahas bagaimana caranya membuat tools ataupun menu atas transparant yang mana apabila di scroll akan kembali memberikan background yang sudah di tentukan sebelumnya. Kurang lebih aplikasi akan tampak seperti pada gambar dibawah.





Penggunaan menu seperti ini akan memberikan tampilan yang menarik pada aplikasi. Tampilan yang menarik akan membuat pengguna aplikasi menjadi betah menggunakan aplikasi.

Langsung saja untuk cara pembuatannya silahkan ikuti langkah di bawah ini.

Tambahkan Gambar dan Icon ke Drawable

Untuk melengkapi tampilan layout yang akan dibuat, silahkan tambahkan 3 gambar format jpg dan 3 gambar icon ke res -> drawable. Gambar jpg bebas seusai keinginan. Untuk iconnya bisa di ambil melalui vector asset, baca Cara Menggunakan Icon Vector Asset bawahan Android Studio. Nantinya drawabel akan terisi beberapa file seperti berikut.







color.xml

Buka file color.xml di folder res -> values -> colors.xml kemudian buat edit kode menjadi seperti berikut :
	
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#008577</color>
<color name="colorPrimaryDark">#00574B</color>
<color name="colorAccent">#D81B60</color>
<color name="transparan">#6D000000</color>
<color name="abu_abu">#D6D6D6</color>
<color name="putih">#FFFFFF</color>
<color name="biru_tua">#0770cc</color>
<color name="hijau">#00a651</color>
<color name="biru">#00BCD4</color>
</resources>


activity_main.xml

Salin dan paste kode dibawah ke 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">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<ScrollView
android:id="@+id/scrll_post"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="none">

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

<LinearLayout
android:layout_width="match_parent"
android:layout_height="250dp"
android:orientation="vertical">

<ImageView
android:id="@+id/imageView34"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:adjustViewBounds="true"
android:foreground="@color/transparan"
android:scaleType="centerCrop"
app:srcCompat="@drawable/img" />
</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

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

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

<ImageView
android:id="@+id/imageView38"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:adjustViewBounds="true"
android:scaleType="fitXY"
app:srcCompat="@drawable/bc" />
</LinearLayout>

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

<ImageView
android:id="@+id/imageView37"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:adjustViewBounds="true"
android:scaleType="fitXY"
app:srcCompat="@drawable/bc" />
</LinearLayout>

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

<ImageView
android:id="@+id/imageView36"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:adjustViewBounds="true"
android:scaleType="fitXY"
app:srcCompat="@drawable/bc" />
</LinearLayout>

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

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

<ImageView
android:id="@+id/imageView35"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:layout_weight="1"
android:adjustViewBounds="true"
android:foreground="@color/transparan"
android:scaleType="fitXY"
app:srcCompat="@drawable/bc" />

<TextView
android:id="@+id/textView37"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:maxWidth="50dp"
android:text="Lihat Semua"
android:textColor="@android:color/white" />
</FrameLayout>

</LinearLayout>

</LinearLayout>
</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/abu_abu"
android:orientation="vertical"
android:paddingBottom="1dp">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/putih"
android:orientation="vertical"
android:padding="20dp">

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

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



<TextView
android:id="@+id/textView39"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:text="Tiket Aquaria KLCC"
android:textColor="@android:color/black"
android:textSize="18sp"
android:textStyle="bold" />

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


<TextView
android:id="@+id/textView40"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:text="8.3 Baik"
android:textColor="@color/biru_tua"
android:textSize="10sp" />

<TextView
android:id="@+id/textView41"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:text="( dari 8632 review )"
android:textSize="10sp"
android:textStyle="bold" />
</LinearLayout>
</LinearLayout>


</LinearLayout>
</LinearLayout>

</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="1000dp"
android:background="@color/abu_abu"
android:orientation="vertical"
android:paddingBottom="1dp">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/putih"
android:orientation="vertical"
android:padding="20dp">

<TextView
android:id="@+id/textView43"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:text="Fitur"
android:textColor="@android:color/black"
android:textSize="14sp"
android:textStyle="bold" />

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:orientation="horizontal">

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

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


<TextView
android:id="@+id/textView42"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Konfirmasi Instan"
android:textColor="@color/hijau"
android:textSize="12sp" />
</LinearLayout>
</LinearLayout>

</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/abu_abu"
android:orientation="vertical"></LinearLayout>

</LinearLayout>
</LinearLayout>
</LinearLayout>
</ScrollView>
</LinearLayout>

<LinearLayout
android:id="@+id/tlbar4"
android:layout_width="match_parent"
android:layout_height="55dp"
android:background="@color/biru"
android:orientation="vertical">

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

<ImageView
android:id="@+id/back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginRight="10dp"
android:src="@drawable/ic_arrow_back_black"
android:tint="@color/putih" />

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="7dp"
android:layout_marginTop="7dp"
android:layout_marginRight="20dp"
android:layout_marginBottom="7dp"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical" />

<ImageView
android:id="@+id/imageView15"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="20dp"
android:tint="@color/putih"
app:srcCompat="@drawable/ic_bookmark_border_black"
tools:ignore="VectorDrawableCompat" />

<ImageView
android:id="@+id/imageView33"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="20dp"
android:tint="@color/putih"
app:srcCompat="@drawable/ic_more_vert_black"
tools:ignore="VectorDrawableCompat" />

</LinearLayout>
</LinearLayout>

</RelativeLayout>

MainActivity.java

Salin dan paste kode dibawah ke MainActivity.java.

package id.kanre.toolbartransparent;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ScrollView;

public class MainActivity extends AppCompatActivity {

private ImageView back;
private ScrollView scrll;
private LinearLayout tol;
private int nl = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getSupportActionBar().hide();
setContentView(R.layout.activity_main);

back = findViewById(R.id.back);
scrll = findViewById(R.id.scrll_post);
tol = findViewById(R.id.tlbar4);
tol.getBackground().setAlpha(0);

AksiScroll();
}
private void AksiScroll() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
scrll.setOnScrollChangeListener(new View.OnScrollChangeListener() {
@Override
public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
int op = NilaiAksiScroll(scrollY, 500);
tol.getBackground().setAlpha(op);
}
});
}
}

public int Bulatkan(double f) {
int c = (int) ((f) + 0.5f);
double n = f + 0.5f;
return (n - c) % 2 == 0 ? (int) f : c;
}
public double CariPersen(double b, double a) {
double hasil = (a/b)*100;
return hasil;

}

public int NilaiAksiScroll(int scrollY, double batas){
if (scrollY> 0&&scrollY<batas) {
double c = CariPersen(batas, scrollY);
int aa = Bulatkan(c);
double y = (aa/100.0) * 255.0;
int op = Bulatkan(y);
nl = op;
}else if (scrollY>batas){
nl = 255;
}else{
nl = 0;
}
return nl;
}

}


Jalankan Aplikasi

Jalankan dan lihat bagaimana tampilan aplikasi akan tampak seperti pada gambar di bawah.





Penjelasan Kode


private void AksiScroll() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
scrll.setOnScrollChangeListener(new View.OnScrollChangeListener() {
@Override
public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
int op = NilaiAksiScroll(scrollY, 500);
tol.getBackground().setAlpha(op);
}
});
}
}

Kode di atas akan berfungsi ketika aplikasi menjalankan class MainActivity.java, dimana dalam kode tersebut menginstruksikan program apabila scrll melakukan aksi scroll maka ambil nilai scroll dari scrollY dan tentukan kemudia masukkan kedalam method "NilaiAksiScroll()" ditambah batas dari scroll view akan mencapai nilai 100% dalam hal ini "500" sehingga menjadi NilaiAksiScroll(scrollY, 500);. Method "NilaiAksiScroll" kemudian mengembalikan nilai yang di masukkan kedalam variabel op (dalam hal ini tingkat transparansi).

Variabel op inilah yang kemudian digunakan untuk mengatur tingkat transparansi dari tool atau menu, dengan code tol.getBackground().setAlpha(op);. Perlu diperhatikan bahwa sebelumnya tool telah dibuat menjadi transparan dengan menggunakan kode "tol.getBackground().setAlpha(0);".

Perhatian

Kode if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { menandakan bahwa fungsi tersebut hanya bisa berjalan di android Marshmallow (6.0) atau yang paling terbaru.
Read More

30 November 2020

Cara Mengatasi Cleartext HTTP traffic not permitted in Android Studio

09:17 0

Cleartext HTTP traffic not permitted yang apabila diterjemahkan kedalam bahasa Indonesia berarti "Lalu lintas HTTP cleartext tidak diizinkan". Ini merupakan salah satu permasalahan yang biasa ditemukan ketika hendak mengambil data dari web service. 

Pemberitahuan error berupa : Exception: IOException java.io.IOException: Cleartext HTTP traffic to * not permitted atau jika menggunakan volley error com.android.volley.NoConnectionError: java.io.IOException: Cleartext HTTP traffic to * not permitted. Tanda * adalah nama webservice.

Ada beberapa cara untuk mengatasi masalah tersebut. Berikut beberapa cara Mengatasi Cleartext HTTP traffic not permitted in Android Studio

Cara 1

Cara pertama sangat mudah, jika webservice yang digunakan menggunakan https://, silahkan ganti menjadi http://. Jika masih belum berhasil silahkan gunakan cara lain.

Cara 2

Tambahkan kode android:usesCleartextTraffic="true" pada tag application di AndroidManifest.xml, Contohnya seperti berikut:

<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
<uses-permission android:name="android.permission.INTERNET" />
<application
...
android:usesCleartextTraffic="true"
...>
...
</application>
</manifest>




Cara 3

Jika pada tag memiliki android:targetSandboxVersion maka kurangi menjadi 1 sehingga kode seperti berikut :


<?xml version="1.0" encoding="utf-8"?>
<manifest android:targetsandboxversion="1">
<uses-permission android:name="android.permission.INTERNET">
...
</uses-permission></manifest>


Pada kasus penulis error com.android.volley.NoConnectionError: java.io.IOException: Cleartext HTTP traffic to * not permitted dapat teratasi dengan menggunakan cara ke 2. Jika setelah mencoba semua cara di atas, namun hasilnya tetap sama silahkan baca https://stackoverflow.com/questions/45940861/android-8-cleartext-http-traffic-not-permitted.

 

 

 

Read More

17 November 2020

Cara Menyembunyikan Link URL Penting di Android Studio

14:20 0
Salah satu hal yang menjadi incaran utama para hacker ketika berhasil membongkar aplikasi android adalah link url. Mengapa demikian ??

Sebab aplikasi android berbasis online melakukan pertukaran data ke internet melalui link url. Dengan mengetahui link API seseorang dapat mempelajari kode untuk nantinya mencuri atau merusak data yang telah disimpan di database.

Sangat penting untuk mengamankan Link url aplikasi agar tidak bisa ditemukan walaupun aplikasi berhasil di decompile.

Link atau kode api bisa kita pasang pada gradle.properties kemudian deklarasikan pada build.gradle agar nantinya bisa di panggil pada program android studio. Agar lebih jelas silahkan ikuti langkah di bawah ini.

1. Buat link pada gradle.properties

Buka file gradle.properties kemudian tambahkan kode url atau link yang ingin anda amankan. Contohnya seperti pada gambar di bawah :





2. Buat kode pemanggilan pada Build.gradle

Tidak hanya sampai pada gradle.properties anda harus membuat kode pada build.gradle agar nantinya url dapat dipanggil pada program anda. Tambahkan kode di bawah setelah buildTypes.

buildTypes.each {
it.buildConfigField "String", "ILY", mySecretLink
}

Nantinya kode build.gradle anda akan tampak seperti berikut :

apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'

android {
...
defaultConfig {
...
}
buildTypes {
release {
...
}
}
buildTypes.each {
it.buildConfigField "String", "URL", mySecretLink
}
}
dependencies {
...
}


Perlu anda perhatikan mySecretLink harus sesuai dengan nama variabel yang ada di gradle.properties, "URL" bisa anda tentukan sendiri, kemudian ada "String" yang menandakan bahwa data tersebut bertipe String.

3. Panggil kode pada program

Untuk memanggil url yang telah sembunyikan anda bisa menggunakan perintah BuildConfig.URL, dimana URL merupakan merupakan nama configurasi yang telah di atur pada nomor 2. Contoh penggunaanya seperti berikut:

textView.setText(BuildConfig.URL); // akan menampilkan url pada text view

Demikian tutorial tentang Cara Menyembunyikan Link URL Penting di Android Studio, semoga bermanfaat.
Read More

15 October 2020

Membuat Alert Dialog di Android Studio

19:35 0
Pernahkah anda menggunakan sebuah aplikasi dimana pada saat tertentu aplikasi memunculkan popup atau alert berisi informasi. Alert ini biasanya digunakan untuk memberikan informasi penting sebelum melakukan aksi tertentu.

Pada postingan kali ini kita akan membuat sebuah alert dialog. Tampilan nantinya akan tampak seperti gambar berikut :




Langkah-langkah membuat alert dialog di android studio

1. Buat project baru. 2. Tambahkan kode berikut pada MainActivity.java

public class MainActivity extends AppCompatActivity {

private Button button;
private Context context;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = findViewById(R.id.button);
context = this;
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("Alert Dialog")
.setMessage("Membuat Alert dialog")
.setPositiveButton("Oke", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "Tombol oke di klik", Toast.LENGTH_SHORT).show();

}
})
.setNegativeButton("Batal", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(context, "Batal diklik", Toast.LENGTH_SHORT).show();
}
})
;
AlertDialog dialog = builder.create();
dialog.show();
}
});
}
}


3. Edit activity_main.xml seperti berikut:

<?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:gravity="center"
tools:context=".MainActivity">

<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
</RelativeLayout>

4. Aplikasi siap dijalankan
Read More

https://payclick.com/

Contact us for advertising.