Loading app/src/main/java/io/eelo/appinstaller/application/ApplicationActivity.kt +41 −5 Original line number Diff line number Diff line Loading @@ -3,10 +3,12 @@ package io.eelo.appinstaller.application import android.annotation.SuppressLint import android.content.Intent import android.content.pm.PackageManager import android.graphics.Bitmap import android.os.Bundle import android.support.v7.app.AppCompatActivity import android.support.v7.widget.Toolbar import android.text.Html import android.util.DisplayMetrics import android.view.Menu import android.view.MenuItem import android.view.View Loading @@ -20,10 +22,15 @@ import io.eelo.appinstaller.utils.Constants.APPLICATION_DESCRIPTION_KEY import io.eelo.appinstaller.utils.Constants.APPLICATION_PACKAGE_NAME_KEY import io.eelo.appinstaller.utils.Execute import kotlinx.android.synthetic.main.activity_application.* import java.text.DecimalFormat import kotlin.math.roundToInt class ApplicationActivity : AppCompatActivity(), ApplicationStateListener { private lateinit var application: Application private val installManagerGetter = InstallManagerGetter() private var imageWidth = 0 private var imageHeight = 0 private var imageMargin = 0 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) Loading @@ -34,6 +41,8 @@ class ApplicationActivity : AppCompatActivity(), ApplicationStateListener { supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setDisplayShowTitleEnabled(false) initialiseDimensions() val applicationPackageName: String? = intent.getStringExtra(APPLICATION_PACKAGE_NAME_KEY) if (!applicationPackageName.isNullOrEmpty()) { initialise(applicationPackageName!!) Loading @@ -60,6 +69,17 @@ class ApplicationActivity : AppCompatActivity(), ApplicationStateListener { return true } private fun initialiseDimensions() { // Do some math and figure out item width, padding and margin val metrics = DisplayMetrics() windowManager.defaultDisplay.getMetrics(metrics) val logicalDensity = metrics.density imageWidth = Math.ceil(120 * logicalDensity.toDouble()).roundToInt() imageHeight = Math.ceil(210 * logicalDensity.toDouble()).roundToInt() imageMargin = Math.ceil(4 * logicalDensity.toDouble()).roundToInt() } private fun onApplicationInfoLoaded() { val basicData = application.basicData!! val fullData = application.fullData!! Loading Loading @@ -118,14 +138,14 @@ class ApplicationActivity : AppCompatActivity(), ApplicationStateListener { startActivity(intent) } appRating.text = basicData.score.toString() val decimalFormat = DecimalFormat("##.0") appRating.text = decimalFormat.format(basicData.score).toString() appPrivacyScore.text = fullData.privacyScore.toString() appEnergyScore.text = fullData.energyScore.toString() /*if (application.data.images.isNotEmpty()) { // TODO Load app images/screenshots appImagesContainer.visibility = View.VISIBLE }*/ basicData.loadImagesAsyncly { showImages(it) } application.addListener(this) stateChanged(application.state) Loading Loading @@ -169,6 +189,22 @@ class ApplicationActivity : AppCompatActivity(), ApplicationStateListener { }) } // TODO Handle landscape images better private fun showImages(images: List<Bitmap>) { val imagesContainer = app_images_container imagesContainer.removeAllViews() images.forEach { val imageView = ImageView(this) val layoutParams = LinearLayout.LayoutParams(imageWidth, imageHeight) layoutParams.leftMargin = imageMargin layoutParams.rightMargin = imageMargin imageView.layoutParams = layoutParams imageView.setImageBitmap(it) imagesContainer.addView(imageView) } imagesContainer.visibility = View.VISIBLE } override fun onDestroy() { super.onDestroy() installManagerGetter.disconnect(this) Loading app/src/main/res/layout/activity_application.xml +16 −12 Original line number Diff line number Diff line Loading @@ -27,9 +27,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:paddingStart="@dimen/layout_padding_medium" android:paddingTop="@dimen/layout_padding_large" android:paddingEnd="@dimen/layout_padding_medium" android:paddingBottom="@dimen/layout_padding_large"> <LinearLayout Loading @@ -37,8 +35,8 @@ android:layout_height="wrap_content" android:layout_gravity="top" android:orientation="horizontal" android:paddingStart="@dimen/layout_padding_medium" android:paddingEnd="@dimen/layout_padding_medium"> android:paddingStart="@dimen/layout_padding_large" android:paddingEnd="@dimen/layout_padding_large"> <ImageView android:id="@+id/app_icon" Loading Loading @@ -94,8 +92,8 @@ android:layout_marginTop="@dimen/layout_margin_medium" android:gravity="center_vertical|end" android:orientation="horizontal" android:paddingStart="@dimen/layout_padding_medium" android:paddingEnd="@dimen/layout_padding_medium"> android:paddingStart="@dimen/layout_padding_large" android:paddingEnd="@dimen/layout_padding_large"> <TextView android:id="@+id/app_size" Loading Loading @@ -127,7 +125,9 @@ <View android:layout_width="match_parent" android:layout_height="@dimen/default_divider_height" android:layout_marginStart="@dimen/layout_margin_medium" android:layout_marginTop="@dimen/layout_margin_large" android:layout_marginEnd="@dimen/layout_margin_medium" android:background="@color/colorDivider" /> <RelativeLayout Loading @@ -137,10 +137,7 @@ android:background="?android:selectableItemBackground" android:clickable="true" android:focusable="true" android:paddingStart="@dimen/layout_padding_medium" android:paddingTop="@dimen/layout_padding_large" android:paddingEnd="@dimen/layout_padding_medium" android:paddingBottom="@dimen/layout_padding_large"> android:padding="@dimen/layout_padding_large"> <TextView android:id="@+id/app_description" Loading Loading @@ -168,6 +165,8 @@ <View android:layout_width="match_parent" android:layout_height="@dimen/default_divider_height" android:layout_marginStart="@dimen/layout_margin_medium" android:layout_marginEnd="@dimen/layout_margin_medium" android:background="@color/colorDivider" /> <LinearLayout Loading @@ -175,7 +174,8 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/layout_margin_large" android:gravity="center" android:orientation="horizontal"> android:orientation="horizontal" android:padding="@dimen/layout_padding_large"> <LinearLayout android:layout_width="wrap_content" Loading Loading @@ -321,7 +321,9 @@ <View android:layout_width="match_parent" android:layout_height="@dimen/default_divider_height" android:layout_marginStart="@dimen/layout_margin_medium" android:layout_marginTop="@dimen/layout_margin_large" android:layout_marginEnd="@dimen/layout_margin_medium" android:background="@color/colorDivider" /> <HorizontalScrollView Loading @@ -334,7 +336,9 @@ android:id="@+id/app_images_container" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" /> android:orientation="horizontal" android:paddingStart="12dp" android:paddingEnd="12dp" /> </HorizontalScrollView> Loading Loading
app/src/main/java/io/eelo/appinstaller/application/ApplicationActivity.kt +41 −5 Original line number Diff line number Diff line Loading @@ -3,10 +3,12 @@ package io.eelo.appinstaller.application import android.annotation.SuppressLint import android.content.Intent import android.content.pm.PackageManager import android.graphics.Bitmap import android.os.Bundle import android.support.v7.app.AppCompatActivity import android.support.v7.widget.Toolbar import android.text.Html import android.util.DisplayMetrics import android.view.Menu import android.view.MenuItem import android.view.View Loading @@ -20,10 +22,15 @@ import io.eelo.appinstaller.utils.Constants.APPLICATION_DESCRIPTION_KEY import io.eelo.appinstaller.utils.Constants.APPLICATION_PACKAGE_NAME_KEY import io.eelo.appinstaller.utils.Execute import kotlinx.android.synthetic.main.activity_application.* import java.text.DecimalFormat import kotlin.math.roundToInt class ApplicationActivity : AppCompatActivity(), ApplicationStateListener { private lateinit var application: Application private val installManagerGetter = InstallManagerGetter() private var imageWidth = 0 private var imageHeight = 0 private var imageMargin = 0 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) Loading @@ -34,6 +41,8 @@ class ApplicationActivity : AppCompatActivity(), ApplicationStateListener { supportActionBar?.setDisplayHomeAsUpEnabled(true) supportActionBar?.setDisplayShowTitleEnabled(false) initialiseDimensions() val applicationPackageName: String? = intent.getStringExtra(APPLICATION_PACKAGE_NAME_KEY) if (!applicationPackageName.isNullOrEmpty()) { initialise(applicationPackageName!!) Loading @@ -60,6 +69,17 @@ class ApplicationActivity : AppCompatActivity(), ApplicationStateListener { return true } private fun initialiseDimensions() { // Do some math and figure out item width, padding and margin val metrics = DisplayMetrics() windowManager.defaultDisplay.getMetrics(metrics) val logicalDensity = metrics.density imageWidth = Math.ceil(120 * logicalDensity.toDouble()).roundToInt() imageHeight = Math.ceil(210 * logicalDensity.toDouble()).roundToInt() imageMargin = Math.ceil(4 * logicalDensity.toDouble()).roundToInt() } private fun onApplicationInfoLoaded() { val basicData = application.basicData!! val fullData = application.fullData!! Loading Loading @@ -118,14 +138,14 @@ class ApplicationActivity : AppCompatActivity(), ApplicationStateListener { startActivity(intent) } appRating.text = basicData.score.toString() val decimalFormat = DecimalFormat("##.0") appRating.text = decimalFormat.format(basicData.score).toString() appPrivacyScore.text = fullData.privacyScore.toString() appEnergyScore.text = fullData.energyScore.toString() /*if (application.data.images.isNotEmpty()) { // TODO Load app images/screenshots appImagesContainer.visibility = View.VISIBLE }*/ basicData.loadImagesAsyncly { showImages(it) } application.addListener(this) stateChanged(application.state) Loading Loading @@ -169,6 +189,22 @@ class ApplicationActivity : AppCompatActivity(), ApplicationStateListener { }) } // TODO Handle landscape images better private fun showImages(images: List<Bitmap>) { val imagesContainer = app_images_container imagesContainer.removeAllViews() images.forEach { val imageView = ImageView(this) val layoutParams = LinearLayout.LayoutParams(imageWidth, imageHeight) layoutParams.leftMargin = imageMargin layoutParams.rightMargin = imageMargin imageView.layoutParams = layoutParams imageView.setImageBitmap(it) imagesContainer.addView(imageView) } imagesContainer.visibility = View.VISIBLE } override fun onDestroy() { super.onDestroy() installManagerGetter.disconnect(this) Loading
app/src/main/res/layout/activity_application.xml +16 −12 Original line number Diff line number Diff line Loading @@ -27,9 +27,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:paddingStart="@dimen/layout_padding_medium" android:paddingTop="@dimen/layout_padding_large" android:paddingEnd="@dimen/layout_padding_medium" android:paddingBottom="@dimen/layout_padding_large"> <LinearLayout Loading @@ -37,8 +35,8 @@ android:layout_height="wrap_content" android:layout_gravity="top" android:orientation="horizontal" android:paddingStart="@dimen/layout_padding_medium" android:paddingEnd="@dimen/layout_padding_medium"> android:paddingStart="@dimen/layout_padding_large" android:paddingEnd="@dimen/layout_padding_large"> <ImageView android:id="@+id/app_icon" Loading Loading @@ -94,8 +92,8 @@ android:layout_marginTop="@dimen/layout_margin_medium" android:gravity="center_vertical|end" android:orientation="horizontal" android:paddingStart="@dimen/layout_padding_medium" android:paddingEnd="@dimen/layout_padding_medium"> android:paddingStart="@dimen/layout_padding_large" android:paddingEnd="@dimen/layout_padding_large"> <TextView android:id="@+id/app_size" Loading Loading @@ -127,7 +125,9 @@ <View android:layout_width="match_parent" android:layout_height="@dimen/default_divider_height" android:layout_marginStart="@dimen/layout_margin_medium" android:layout_marginTop="@dimen/layout_margin_large" android:layout_marginEnd="@dimen/layout_margin_medium" android:background="@color/colorDivider" /> <RelativeLayout Loading @@ -137,10 +137,7 @@ android:background="?android:selectableItemBackground" android:clickable="true" android:focusable="true" android:paddingStart="@dimen/layout_padding_medium" android:paddingTop="@dimen/layout_padding_large" android:paddingEnd="@dimen/layout_padding_medium" android:paddingBottom="@dimen/layout_padding_large"> android:padding="@dimen/layout_padding_large"> <TextView android:id="@+id/app_description" Loading Loading @@ -168,6 +165,8 @@ <View android:layout_width="match_parent" android:layout_height="@dimen/default_divider_height" android:layout_marginStart="@dimen/layout_margin_medium" android:layout_marginEnd="@dimen/layout_margin_medium" android:background="@color/colorDivider" /> <LinearLayout Loading @@ -175,7 +174,8 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/layout_margin_large" android:gravity="center" android:orientation="horizontal"> android:orientation="horizontal" android:padding="@dimen/layout_padding_large"> <LinearLayout android:layout_width="wrap_content" Loading Loading @@ -321,7 +321,9 @@ <View android:layout_width="match_parent" android:layout_height="@dimen/default_divider_height" android:layout_marginStart="@dimen/layout_margin_medium" android:layout_marginTop="@dimen/layout_margin_large" android:layout_marginEnd="@dimen/layout_margin_medium" android:background="@color/colorDivider" /> <HorizontalScrollView Loading @@ -334,7 +336,9 @@ android:id="@+id/app_images_container" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" /> android:orientation="horizontal" android:paddingStart="12dp" android:paddingEnd="12dp" /> </HorizontalScrollView> Loading