Cara Membuat Launcher Sendiri di Android Studio (updated)
Apr 13, 2018
Add Comment
Bagi anda yang bosan dengan launcher bawaan android anda yang itu-itu saja mungkin tutorial kali ini akan membantu, selain untuk dipakai sendiri launcher ini bisa anda jual di play store. pada kesempatan ini admin akan membahas cara pembuatan launcher sederhana di android studio
untuk membuatnya seperti biasa buatlah projek baru beri nama MyLauncher klik next sampe selesai
kemudian rubah style bawaan menjadi seperti ini:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<!--this is the main theme-->
<style name="AppTheme.Wallpaper" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowShowWallpaper">true</item>
<item name="android:navigationBarColor">@android:color/transparent</item>
<item name="colorPrimaryDark">@android:color/transparent</item>
</style>
</resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<!--this is the main theme-->
<style name="AppTheme.Wallpaper" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowShowWallpaper">true</item>
<item name="android:navigationBarColor">@android:color/transparent</item>
<item name="colorPrimaryDark">@android:color/transparent</item>
</style>
</resources>
kemudian di activity_main.xml buat sebuah button untuk mengakses halaman menu aplikasi
<?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="com.giviews.mylauncger.MainActivity">
<TextView
android:layout_marginTop="40dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="NEVER SETTLE"
android:gravity="center"
android:textColor="#fff"
android:textSize="70sp"
android:id="@+id/textView" />
<ImageButton
android:id="@+id/menu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
android:layout_marginBottom="10dp"
android:backgroundTint="#fff"
android:scaleType="centerCrop"
android:src="@drawable/ic_view_comfy" />
<TextClock
android:id="@+id/textClock"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignEnd="@+id/menu"
android:layout_alignRight="@+id/menu"
android:layout_below="@+id/textView"
android:layout_marginTop="46dp"
android:fontFamily="sans-serif-condensed" />
</RelativeLayout>
kemudian buat item.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:gravity="center"
android:padding="10dp">
<ImageView
android:id="@+id/icon"
android:layout_width="50dp"
android:layout_height="50dp"
android:scaleType="centerInside"/>
<TextView
android:id="@+id/name"
android:layout_gravity="center"
android:maxLines="1"
android:maxLength="9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp" />
</LinearLayout>
kemudian buatlah activity_apps_list.xml kodenya seperti berikut:
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:orientation="vertical" android:background="#fff" tools:context="com.giviews.mylauncger.AppsListActivity">
<ListView android:id="@+id/list" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="10dp">
</ListView>
</LinearLayout>
langkah selanjutnya buat activity_apps_grid nantinya activity ini akan menjadi halaman menu aplikasi
<?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="com.giviews.mylauncger.AppsGridActivity">
<GridView
android:id="@+id/grid"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="4"
android:columnWidth="100dp"
android:gravity="center"
android:horizontalSpacing="10dp"
android:stretchMode="spacingWidth"
android:verticalSpacing="10dp"
android:dividerHeight="0dp">
</GridView>
</RelativeLayout>
sekarang bagian java nya, masukan kode ini untuk item.java
package com.giviews.mylauncger;
import android.graphics.drawable.Drawable;
/**
* Created by asus on 14/10/2017.
*/
public class Item {
CharSequence label; //package name
CharSequence name; //app name
Drawable icon; //app icon
}
untuk MainActivity.java masukan kode berikut
package com.giviews.mylauncger;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageButton menu = (ImageButton) findViewById(R.id.menu);
menu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getApplicationContext(), AppsGridActivity.class);
startActivity(intent);
}
});
}
}
untuk AppsListActivity.java masukan kode berikut ini:
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import org.w3c.dom.Text;
import java.util.ArrayList;
import java.util.List;
public class AppsListActivity extends AppCompatActivity {
private PackageManager manager;
private List- apps;
private ListView list;
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_apps_list);
loadApps();
loadListView();
addClickListener();
}
private void loadApps(){
manager = getPackageManager();
apps = new ArrayList<>();
Intent i = new Intent(Intent.ACTION_MAIN, null);
i.addCategory(Intent.CATEGORY_LAUNCHER);
ListavailableActivities = manager.queryIntentActivities(i, 0);
for (ResolveInfo ri : availableActivities) {
Item app = new Item();
app.label = ri.activityInfo.packageName; //get app package app.name = ri.loadLabel(manager); //get app name app.icon = ri.loadIcon(manager); //get app icon apps.add(app);
}
}
private void loadListView(){
list = (ListView) findViewById(R.id.list);
ArrayAdapter- adapter = new ArrayAdapter
- (this, R.layout.item, apps) {
@NonNull @Override public View getView(int position, @Nullable View convertView, @Nullable ViewGroup parent) {
if (convertView == null) {
convertView = getLayoutInflater().inflate(R.layout.item, null);
}
ImageView appIcon = (ImageView) convertView.findViewById(R.id.icon);
appIcon.setImageDrawable(apps.get(position).icon);
TextView appName = (TextView) convertView.findViewById(R.id.name);
appName.setText(apps.get(position).name);
return convertView;
}
};
list.setAdapter(adapter);
}
private void addClickListener(){
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override public void onItemClick(AdapterView adapterView, View view, int position, long id) {
Intent i = manager.getLaunchIntentForPackage(apps.get(position).label.toString());
startActivity(i);
}
});
}
}
kemudian untuk AppsGridActivity.java masukan kode ini
package com.giviews.mylauncger;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
public class AppsGridActivity extends AppCompatActivity {
private PackageManager manager;
private List<Item> apps;
private GridView grid;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_apps_grid);
loadApps();
loadGridView();
addClickListener();
}
private void loadApps(){
manager = getPackageManager();
apps = new ArrayList<>();
Intent i = new Intent(Intent.ACTION_MAIN, null);
i.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> availableActivities = manager.queryIntentActivities(i, 0);
for (ResolveInfo ri : availableActivities) {
Item app = new Item();
app.label = ri.activityInfo.packageName; //get app package
app.name = ri.loadLabel(manager); //get app name
app.icon = ri.loadIcon(manager); //get app icon
apps.add(app);
}
}
private void loadGridView(){
grid = (GridView) findViewById(R.id.grid);
ArrayAdapter<Item> adapter = new ArrayAdapter<Item>(this, R.layout.item, apps) {
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @Nullable ViewGroup parent) {
if (convertView == null) {
convertView = getLayoutInflater().inflate(R.layout.item, null);
}
ImageView appIcon = (ImageView) convertView.findViewById(R.id.icon);
appIcon.setImageDrawable(apps.get(position).icon);
TextView appName = (TextView) convertView.findViewById(R.id.name);
appName.setText(apps.get(position).name);
return convertView;
}
};
grid.setAdapter(adapter);
}
private void addClickListener(){
grid.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
Intent i = manager.getLaunchIntentForPackage(apps.get(position).label.toString());
startActivity(i);
}
});
}
}
terakhir untuk AndroidManifest sesuaikan seperti ini
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.giviews.mylauncger">
<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"
android:launchMode="singleTask"
android:stateNotNeeded="true"
android:theme="@style/AppTheme.Wallpaper">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".AppsListActivity"
android:theme="@style/AppTheme.Wallpaper" />
<activity android:name=".AppsGridActivity"></activity>
</application>
</manifest>
Bila app ada tanda silang klik app -> edit configuration -> launch pilih Nothing
Selanjutnya jalankan pada hp android kesayangan anda jika launchernya bisa digunakan maka selamat anda telah berhasil membuat launcher sendiri, sekianlah tutorial kali ini selamat mencoba semoga bermanfaat jika ada yang kurang jelas silakan ditanyakan pada komentar, happy coding jika artikel ini bermanfaat silakan di share ke teman anda.
0 Response to "Cara Membuat Launcher Sendiri di Android Studio (updated)"
Post a Comment