From a0a847632e66e55d92e27b856ad79f4ea8e3a3cc Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 9 Aug 2016 23:23:48 +0200 Subject: [PATCH] display all app icons in a grid --- app/build.gradle | 1 + .../applauncher/activities/MainActivity.kt | 20 +++++++++++ .../applauncher/adapters/LaunchersAdapter.kt | 34 +++++++++++++++++++ .../applauncher/models/AppLauncher.kt | 5 +++ app/src/main/res/layout/activity_main.xml | 19 +++++++---- app/src/main/res/layout/app_launcher_item.xml | 23 +++++++++++++ app/src/main/res/values-sw400dp/integers.xml | 3 ++ app/src/main/res/values/dimens.xml | 4 +++ app/src/main/res/values/integers.xml | 3 ++ 9 files changed, 106 insertions(+), 6 deletions(-) create mode 100644 app/src/main/kotlin/com/simplemobiletools/applauncher/adapters/LaunchersAdapter.kt create mode 100644 app/src/main/kotlin/com/simplemobiletools/applauncher/models/AppLauncher.kt create mode 100644 app/src/main/res/layout/app_launcher_item.xml create mode 100644 app/src/main/res/values-sw400dp/integers.xml create mode 100644 app/src/main/res/values/integers.xml diff --git a/app/build.gradle b/app/build.gradle index 9ea0958..bd45c76 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -28,6 +28,7 @@ dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.4.0' + compile 'com.android.support:recyclerview-v7:23.4.0' compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" } diff --git a/app/src/main/kotlin/com/simplemobiletools/applauncher/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/applauncher/activities/MainActivity.kt index 40935fb..38b18d8 100644 --- a/app/src/main/kotlin/com/simplemobiletools/applauncher/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/applauncher/activities/MainActivity.kt @@ -1,18 +1,38 @@ package com.simplemobiletools.applauncher.activities import android.content.Intent +import android.content.pm.PackageManager import android.os.Bundle import android.view.Menu import android.view.MenuItem import com.simplemobiletools.applauncher.R +import com.simplemobiletools.applauncher.adapters.LaunchersAdapter import com.simplemobiletools.applauncher.extensions.isFirstRun import com.simplemobiletools.applauncher.extensions.preferences +import com.simplemobiletools.applauncher.models.AppLauncher +import kotlinx.android.synthetic.main.activity_main.* +import java.util.* class MainActivity : SimpleActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) + fillGrid() + } + + private fun fillGrid() { + val apps = ArrayList() + val pm = this.packageManager + val intent = Intent(Intent.ACTION_MAIN, null) + intent.addCategory(Intent.CATEGORY_LAUNCHER) + val list = pm.queryIntentActivities(intent, PackageManager.PERMISSION_GRANTED) + for (info in list) { + val componentInfo = info.activityInfo.applicationInfo + apps.add(AppLauncher(componentInfo.loadLabel(pm).toString(), componentInfo.loadIcon(pm))) + } + + launchers_holder.adapter = LaunchersAdapter(apps) } override fun onCreateOptionsMenu(menu: Menu?): Boolean { diff --git a/app/src/main/kotlin/com/simplemobiletools/applauncher/adapters/LaunchersAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/applauncher/adapters/LaunchersAdapter.kt new file mode 100644 index 0000000..fe66da2 --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/applauncher/adapters/LaunchersAdapter.kt @@ -0,0 +1,34 @@ +package com.simplemobiletools.applauncher.adapters + +import android.support.v7.widget.RecyclerView +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import com.simplemobiletools.applauncher.R +import com.simplemobiletools.applauncher.models.AppLauncher +import kotlinx.android.synthetic.main.app_launcher_item.view.* +import java.util.* + +class LaunchersAdapter(val launchers: ArrayList) : RecyclerView.Adapter() { + override fun onBindViewHolder(holder: ViewHolder, position: Int) { + holder.bindView(launchers[position]) + } + + override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): ViewHolder { + val view = LayoutInflater.from(parent?.context).inflate(R.layout.app_launcher_item, parent, false) + return ViewHolder(view) + } + + override fun getItemCount(): Int { + return launchers.count() + } + + class ViewHolder(view: View) : RecyclerView.ViewHolder(view) { + fun bindView(launcher: AppLauncher) { + with(launcher) { + itemView.launcher_label.text = launcher.name + itemView.launcher_icon.setImageDrawable(launcher.icon) + } + } + } +} diff --git a/app/src/main/kotlin/com/simplemobiletools/applauncher/models/AppLauncher.kt b/app/src/main/kotlin/com/simplemobiletools/applauncher/models/AppLauncher.kt new file mode 100644 index 0000000..08d892e --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/applauncher/models/AppLauncher.kt @@ -0,0 +1,5 @@ +package com.simplemobiletools.applauncher.models + +import android.graphics.drawable.Drawable + +data class AppLauncher(val name: String, val icon: Drawable) { } diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index fa77454..1437f92 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,12 +1,19 @@ + android:layout_height="match_parent"> + + - diff --git a/app/src/main/res/layout/app_launcher_item.xml b/app/src/main/res/layout/app_launcher_item.xml new file mode 100644 index 0000000..1320701 --- /dev/null +++ b/app/src/main/res/layout/app_launcher_item.xml @@ -0,0 +1,23 @@ + + + + + + + + diff --git a/app/src/main/res/values-sw400dp/integers.xml b/app/src/main/res/values-sw400dp/integers.xml new file mode 100644 index 0000000..8b2fab3 --- /dev/null +++ b/app/src/main/res/values-sw400dp/integers.xml @@ -0,0 +1,3 @@ + + 5 + diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 845df68..24fcca3 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -3,4 +3,8 @@ 8dp 40dp 8dp + 4dp + 60dp + + 12sp diff --git a/app/src/main/res/values/integers.xml b/app/src/main/res/values/integers.xml new file mode 100644 index 0000000..64ff1f6 --- /dev/null +++ b/app/src/main/res/values/integers.xml @@ -0,0 +1,3 @@ + + 4 +