Anda di halaman 1dari 13

LIBRARY PADA APLIKASI MOBILE

Tujuan Pembelajaran
Setelah mempelajari bab ini, kalian diharapkan dapat :
1) Memahami penggunaan library pada aplikasi mobile
2) Memahami berbagai macam library yang ada untuk aplikasi mobile
3) Membuat program aplikasi mobile menggunakan library

Terkadang ketika melakukan pengembangan kita membutuhkan library lain untuk


memudahkan pekerjaan karena library bawaan tidak sesuai dengan kebutuhan. Maka dari
itu kita dituntut harus dapat membuat library sendiri yang disesuaikan dengan kebutuhan
ataupun menggunakan library yang sudah ada untuk digunakan pada program. Pada bab ini
kalian akan mempelajari apa itu library dan apa sajakah library yang ada pada pada program
android dan cara menggunakannya.

Inti Materi
 Library dalam aplikasi program mobile
 Cara menggunakan library dalam aplikasi mobile
Library merupakan kumplan fungsi yang dapat dipanggil ketika dibutuhkan. Pada umumnya
library diakses untuk mempermudah atau mempercepat pembuatan suatu aplikasi. Library
dapat membantu kita untuk mempercepat dan mempermudah proses pembuatan aplikasi
mobile. Saat ini telah banyak pengembang library yang siap digunakan oleh programmer.

A. LIBRARY YANG DAPAT DIGUNAKAN DI ANDROID STUDIO


Dengan hadirnya library tentunya memudahkan programmer dalam membuat suatu
program. Banyak sekali library yang telah dibuat dan sifatnya open source yang dapat
digunakan oleh programmer lainnya. Berikut ini beberapa library yang dapat dipakai untuk
memudahkan dalam membuat program mobile di android studio.
 Retrofit
Retrofit merupakan library android yang dibuat oleh Square yang digunakan sebagai REST
Client pada Android, yang pasti akan memudahkan kita. Karena kita tidak perlu lagi untuk
membuat method-method sendiri untuk menggunakan REST Client API dari backend.
Library ini menyediakan framework yang powerfull untuk authenticating dan berinteraksi
dengan API dengan mengirimkan request menggunakan OkHTTP
 FragmentRigger
Library ini mengelola Fragmen dengan cara yang ampuh. Tujuannya agar Fragmen mudah
digunakan.Library ini memiliki dokumentasi yang baik disertai contoh aplikasi dan dirilis
di bawah lisensi MIT.
Untuk download library dapat membuka situs github dan search
JustKiddingBaby/FragmentRigg
 PRDownoader
Ini adalah library file-download untuk Android dengan fitur jeda dan lanjutkan.

PRDownloader can be used to download any type of files like image, video, pdf, apk and etc.
This file downloader library supports pause and resume while downloading a file.Supports
large file download. This downloader library has a simple interface to make download
request.We can check if the status of downloading with the given download Id. PRDownloader
gives callbacks for everything like onProgress, onCancel, onStart, onError and etc while
downloading a file.Supports proper request cancelling. Many requests can be made in parallel.

All types of customization are possible.


Library ini memiliki dokumentasi yang bagus juga dilengkapi dengan contoh aplikasi
dengan lisensi Apache-2.0.
Untuk download library dapat membuka situs github dan search
MindorksOpenSource/PRDownloader
 AnimatedPieView
AnimatedPieView merupakan library yang di bawah lisensi apache 2.0 untuk menampilkan
grafik pie dan cincin di Android. Banyak fitur yang ditawarkan pada library ini. Untuk
download library dapat membuka situs github dan search razerdp/AnimatedPieView.
Library ini memiliki dokumentasi yang sangat bagus disertai juga contoh aplikasi.
 FloatWindow
Library ini di bawh lisensi apache 2.0 dengan dokumentasi yang lengkap namun masih
menggunakan bahasa chine. Library ini dapat membantu menambahkan “Float Window”
yang dapat ditampilkan di bagian atas semua activity. Untuk download library dapat
membuka situs github dan search yhaolpz/FloatWindow
 MyLittleCanvas
Library MyLitleCanvas ini dirilis dibawah lisensi Apache-2.0. Library MyLittleCanvas
berfungsi untuk memfasilitasi pengguna yang menggunakan canvas di android. Untuk
download library dapat membuka situs github dan search florent37/MyLittleCanvas
 WindowImageView
WindowImageView adalah library yang cukup menarik untuk menampilkan ImageView di
RecyclerView dan berfungsi seperti jendela. Library ini dilengkapi dengan contoh aplikasi
dan dokumentasi yang lengkap untuk memulai dan yang dirilis di bawah lisensi MIT.
Untuk download library dapat membuka situs github dan search
Bleoo/WindowImageView
 ChartView
ChartView adalah library yang mempresentasikan menggambar grafik secara custom
menggunakan Canvas dan ValueAnimator. Untuk download library dapat membuka situs
github dan search romandanylyk/ChartView
 hyperlog-android
Hyperlog-android merupakan library utilitas logger, untuk menyimpan log dalam database.
Library ini dirilis d bawah lisensi MIT. Untuk download library dapat membuka situs github
dan search hypertrack/hyperlog-android

 Fairy
Fairy merupakan alat debug yang memungkinkan pengembang menggunakan perintah adb
logcat untuk melihat log di sistem Android di ponsel Android dan bukan di komputer. Hal
ini juga memungkinkan untuk memindai informasi log sistem dimanapun menggunakan
ponsel Android bahkan tanpa memiliki root. Libray ini mendukung android dengan API 2.
Untuk download library dapat membuka situs github dan search Zane96/Fairy
 ExpansionPanel
Library ini berfungsi untuk melakukan pengeditan elemen dengan ringan. Library ini di
rilis di bawah naungan apache 2.0. Untuk download library dapat membuka situs github
dan search florent37/ExpansionPanel
 kTicketView
Ini adalah library yang menyediakan View Ticket. Ini menawarkan 3 jenis sudut
TicketView: normal, rounded dan scallop.Proyek ini dirilis di bawah lisensi Apache-2.0.
Aplikasi sampelnya dapat ditemukan di repo Github atau di Google Play. Dokumentasinya
layak dan perpustakaan mendukung API 15 dan yang lebih baru. Untuk download library
dapat membuka situs github dan search vipulasri/TicketView
 Android-Indefinite-Pager-Indicator
Library ini adalah indikator pager ringan dan plug-and-play yang tidak terbatas untuk
RecyclerViews & ViewPagers. Untuk download library dapat membuka situs github dan
search rbro112/Android-Indefinite-Pager-Indicator
 RecyclerViewCardGallery
Library ini adalah fork dari RecyclerViewCardGallery. Alih-alih menggunakan ViewPager,
penulis menggunakan RecyclerView, untuk mencapai efek korsel dengan swipe to refresh.
Proyek ini memiliki dokumentasi dasar, contoh aplikasi dan dirilis di bawah lisensi Apache-
2.0. Untuk download library dapat membuka situs github dan search zjw-
swun/RecyclerViewCardGallery
 CalendarPicker
Library ini adalah kalender dan pemetik tanggal lainnya. Ini dapat mengatur tanggal yang
dipilih dan sangat dapat menyesuaikan hampir semua ukuran teks dan warna, warna latar
belakang, dan judul bulan. Library ini dirilis dengan lisensi MIT dan memiliki dokumentasi
dasar. Untuk download library dapat membuka situs github dan search
maxyou/CalendarPicker

 Volley
Volley merupakan produk yang diperkenalkan oleh Google untuk mempermudah
pertukaran data tanpa harus membuat deretan kode yang sangat panjang. Secara default
volley menggunakan metode singkronisasi jadi anda tidak perlu membuat sebuah method
atau fungsi yang menggunakan class asynctask. Melakukan sebuah request queuing and
prioritization (Mengutamakan prioritas dalam sebuah antrian)
 ExoPlayer
ExoPlayer adalah sebuah android library open source yang berfungsi untuk mengolah
media di android. ExoPlayer ini memungkinkan kita untuk bisa mengolah video dan juga
audio.
 Lottie
Lottie adalah animasi library yang dibangun oleh Airbnb dimana penggunaanya digunakan
untuk memberikan animasi secara real time.

LATIHAN 1 . LIBRARY ZXING

1. Buat Project Baru


2. Tambahkan Library Zxing
Buka file build . gradle ( module:app ) tambahkan library zxing seperti dibawah
ini . Setelah itu klik Sync Now .

implementation 'com.google.zxing:core:3.2.1'

3. Tambahkan kode berikut pada Color.xml

<?xml version="1.0" encoding="utf-8"?>


<resources>
<color name="CodeBlackColor">#000</color>
<color name="CodeWhiteColor">#ffffff</color>
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color>

</resources>
4. Tambahkan kode berikut pada Activity_main.xml

<?xml version="1.0" encoding="utf-8"?>


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp"
android:background="#ffff">

<EditText
android:layout_width="fill_parent"
android:layout_height="50dp"
android:id="@+id/editText"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:hint="Masukan teks disini "
android:background="#ffffff"
android:gravity="center"
/>

<Button
android:layout_width="fill_parent"
android:layout_height="50dp"
android:textSize="20sp"
android:text="GENERATE KODE"
android:id="@+id/button"
android:textColor="#ffffff"
android:textStyle="bold"
android:background="@color/colorAccent"
android:layout_below="@+id/editText"
android:layout_centerHorizontal="true" />

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView"
android:layout_centerHorizontal="true"
android:layout_below="@+id/button"
/>

</RelativeLayout>

5. Tambahkan kode berikut pada MainActivity.java


import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.graphics.Bitmap;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;

public class MainActivity extends AppCompatActivity {

ImageView imageView;
Button button;
EditText editText;
String EditTextValue ;
Thread thread ;
public final static int QRcodeWidth = 500 ;
Bitmap bitmap ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

imageView = (ImageView)findViewById(R.id.imageView);
editText = (EditText)findViewById(R.id.editText);
button = (Button)findViewById(R.id.button);

button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {

EditTextValue = editText.getText().toString();

try {
bitmap = TextToImageEncode(EditTextValue);

imageView.setImageBitmap(bitmap);

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

}
});
}

Bitmap TextToImageEncode(String Value) throws WriterException {


BitMatrix bitMatrix;
try {
bitMatrix = new MultiFormatWriter().encode(
Value,
BarcodeFormat.DATA_MATRIX.QR_CODE,
QRcodeWidth, QRcodeWidth, null
);

} catch (IllegalArgumentException Illegalargumentexception) {

return null;
}
int bitMatrixWidth = bitMatrix.getWidth();
int bitMatrixHeight = bitMatrix.getHeight();

int[] pixels = new int[bitMatrixWidth * bitMatrixHeight];

for (int y = 0; y < bitMatrixHeight; y++) {


int offset = y * bitMatrixWidth;

for (int x = 0; x < bitMatrixWidth; x++) {

pixels[offset + x] = bitMatrix.get(x, y) ?

getResources().getColor(R.color.CodeBlackColor):getResources().getColor(R.color.CodeWh
iteColor);
}
}
Bitmap bitmap = Bitmap.createBitmap(bitMatrixWidth, bitMatrixHeight,
Bitmap.Config.ARGB_4444);

bitmap.setPixels(pixels, 0, 500, 0, 0, bitMatrixWidth, bitMatrixHeight);


return bitmap;
}
}

Lalu jalankan aplikasinya :


Latihan 2. Eksplorasi Library iTextG untuk Generate Text to PDF

1. Buat Project Baru


Buka Android studio lalu buat project baru dengan nama pdfgenerate (sesuaikan) .
Atur Minimum SDK, layout sampai workspace anroid studio tampil .

2. Library
Tambahkan library pada build . grad le lalu klik s ync now .

implementation 'com.itextpdf:itextg:5.5.10'

3. User Permission
Tambahkan user permission pada androidManifest.xml :

<uses-permission

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

android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

Kode full program manifest dapat dilihat di bawah ini:

<?xml version="1.0" encoding="utf-8"?>


<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:dist="http://schemas.android.com/apk/distribution"
package="com.example.generatepdf">

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

<dist:module dist:instant="true" />

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />


</intent-filter>
</activity>
</application>

</manifest>

2. Tambahkan kode berikut pada Activity_main.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"
android:padding="16dp"
android:gravity="top"
android:background="#6766"
>
<EditText
android:id="@+id/edit_text_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="top"
android:hint="Masukan tulisan disini ..."
android:inputType="textMultiLine"
android:layout_margin="5dp"
android:padding="20dp"
android:lines="18"
android:background="#ffffff">
</EditText>

<Button
android:id="@+id/button_create"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:background="@color/colorAccent"
android:text="GENERATE TO PDF"
android:textColor="#ffff"
android:textSize="16sp" />
</LinearLayout>

3. Tambahkan kode berikut pada MainActivity.java

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.Manifest;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
import android.os.Environment;
import androidx.core.app.ActivityCompat;
import android.app.AlertDialog;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.List;

public class MainActivity extends AppCompatActivity {


private static final String TAG = "PdfCreatorActivity";
private EditText mContentEditText;
private Button mCreateButton;
private File pdfFile;
final private int REQUEST_CODE_ASK_PERMISSIONS = 111;

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

mContentEditText = (EditText) findViewById(R.id.edit_text_content);


mCreateButton = (Button) findViewById(R.id.button_create);
mCreateButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mContentEditText.getText().toString().isEmpty()){
mContentEditText.setError("Isi tulisan terlebih dahulu !");
mContentEditText.requestFocus();
return;
}
try {
createPdfWrapper();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
}
}
});

}
private void createPdfWrapper() throws FileNotFoundException,DocumentException{

int hasWriteStoragePermission = ActivityCompat.checkSelfPermission(this,


Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (hasWriteStoragePermission != PackageManager.PERMISSION_GRANTED) {

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {


if
(!shouldShowRequestPermissionRationale(Manifest.permission.WRITE_CONTACTS)) {
showMessageOKCancel("You need to allow access to Storage",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int
which) {
if (Build.VERSION.SDK_INT >=
Build.VERSION_CODES.M) {
requestPermissions(new
String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
REQUEST_CODE_ASK_PERMISSIONS);
}
}
});
return;
}

requestPermissions(new
String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
REQUEST_CODE_ASK_PERMISSIONS);
}
return;
}else {
createPdf();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions,
int[] grantResults) {
switch (requestCode) {
case REQUEST_CODE_ASK_PERMISSIONS:
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// Permission Granted
try {
createPdfWrapper();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
}
} else {
// Permission Denied
Toast.makeText(this, "WRITE_EXTERNAL Permission Denied",
Toast.LENGTH_SHORT)
.show();
}
break;
default:
super.onRequestPermissionsResult(requestCode, permissions,
grantResults);
}
}
private void showMessageOKCancel(String message,
DialogInterface.OnClickListener okListener) {
new AlertDialog.Builder(this)
.setMessage(message)
.setPositiveButton("OK", okListener)
.setNegativeButton("Keluar", null)
.create()
.show();
}

private void createPdf() throws FileNotFoundException, DocumentException {

File docsFolder = new File(Environment.getExternalStorageDirectory() +


"/Documents");
if (!docsFolder.exists()) {
docsFolder.mkdir();
Log.i(TAG, "Buat Folder PDF Baru");
}

pdfFile = new File(docsFolder.getAbsolutePath(),"PDFgenerate.pdf");


OutputStream output = new FileOutputStream(pdfFile);
Document document = new Document();
PdfWriter.getInstance(document, output);
document.open();
document.add(new Paragraph(mContentEditText.getText().toString()));

document.close();
previewPdf();

private void previewPdf() {

PackageManager packageManager = getPackageManager();


Intent testIntent = new Intent(Intent.ACTION_VIEW);
testIntent.setType("application/pdf");
List list = packageManager.queryIntentActivities(testIntent,
PackageManager.MATCH_DEFAULT_ONLY);
if (list.size() > 0) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
Uri uri = Uri.fromFile(pdfFile);
intent.setDataAndType(uri, "application/pdf");

startActivity(intent);
}else{
Toast.makeText(this,"Download aplikasi pdf viewer untuk melihat hasil
generate",Toast.LENGTH_SHORT).show();
}
}
}
Jalankan aplikasinya:

Anda mungkin juga menyukai