From b78fa40eff2bf98d984e8c962032ad9d8da7858c Mon Sep 17 00:00:00 2001 From: chenjuntao Date: Fri, 26 Apr 2019 16:18:44 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=9C=A8=E5=B0=8F=E5=86=85?= =?UTF-8?q?=E5=AD=98=E8=AE=BE=E5=A4=87=E4=B8=8A=E5=8A=A0=E8=BD=BD=E6=9C=AC?= =?UTF-8?q?=E5=9C=B0=E5=BA=94=E7=94=A8=E5=9B=BE=E6=A0=87=E4=BC=9A=E5=86=85?= =?UTF-8?q?=E5=AD=98=E4=B8=8D=E5=A4=9F=E7=84=B6=E5=90=8E=E9=97=AA=E9=80=80?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/gh/common/util/BitmapUtils.java | 24 ++++++++++++++++--- .../java/com/gh/common/util/DialogUtils.java | 2 +- .../gamecenter/adapter/CleanApkAdapter.java | 2 +- .../adapter/InstallFragmentAdapter.java | 2 +- .../adapter/KcSelectGameAdapter.java | 2 +- .../download/GameDownloadFragmentAdapter.java | 2 +- .../qa/select/SelectGameDialogAdapter.java | 2 +- .../suggest/SuggestSelectGameAdapter.java | 2 +- 8 files changed, 28 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/gh/common/util/BitmapUtils.java b/app/src/main/java/com/gh/common/util/BitmapUtils.java index dcdffda1fc..eed3ad93c9 100644 --- a/app/src/main/java/com/gh/common/util/BitmapUtils.java +++ b/app/src/main/java/com/gh/common/util/BitmapUtils.java @@ -7,6 +7,9 @@ import android.graphics.Matrix; import android.graphics.PixelFormat; import android.graphics.drawable.Drawable; import android.media.ExifInterface; +import android.os.Build; + +import com.halo.assistant.HaloApp; import java.io.BufferedOutputStream; import java.io.ByteArrayOutputStream; @@ -186,15 +189,30 @@ public class BitmapUtils { /** * Drawable转Bitmap + * @param isSquare 是否是正方形 */ - public static Bitmap drawableToBitmap(Drawable drawable) { + public static Bitmap drawableToBitmap(Drawable drawable, boolean isSquare) { if (drawable == null) { return null; } + int w,h; + // 取 drawable 的长宽 - int w = drawable.getIntrinsicWidth(); - int h = drawable.getIntrinsicHeight(); + w = drawable.getIntrinsicWidth(); + h = drawable.getIntrinsicHeight(); + + // 在低于 5.1 和运行内存小于 2G 的设备上减小图片大小,避免 OOM,128 * 128 又不是不能看 + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP + || DeviceUtils.getTotalRamSizeOfDevice(HaloApp.getInstance().getApplication()) < 2000) { + if (isSquare) { + w = w > 128 ? 128 : w; + h = h > 128 ? 128 : h; + } else { + w = w > 128 ? w / 2 : w; + h = h > 128 ? h / 2 : h; + } + } // 取 drawable 的颜色格式 Bitmap.Config config = drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565; diff --git a/app/src/main/java/com/gh/common/util/DialogUtils.java b/app/src/main/java/com/gh/common/util/DialogUtils.java index e44fdd7062..f26b6baaa4 100644 --- a/app/src/main/java/com/gh/common/util/DialogUtils.java +++ b/app/src/main/java/com/gh/common/util/DialogUtils.java @@ -130,7 +130,7 @@ public class DialogUtils { ApplicationInfo appInfo = info.applicationInfo; appInfo.sourceDir = apkPath; appInfo.publicSourceDir = apkPath; - Bitmap bitmap = BitmapUtils.drawableToBitmap(appInfo.loadIcon(pm)); + Bitmap bitmap = BitmapUtils.drawableToBitmap(appInfo.loadIcon(pm), true); ImageView imageView = new ImageView(activity); imageView.setLayoutParams(new LinearLayout.LayoutParams(DisplayUtils.dip2px(activity, 25) diff --git a/app/src/main/java/com/gh/gamecenter/adapter/CleanApkAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/CleanApkAdapter.java index d914786a80..edf2462253 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/CleanApkAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/CleanApkAdapter.java @@ -114,7 +114,7 @@ public class CleanApkAdapter extends BaseRecyclerAdapter appInfo.sourceDir = apk_path; appInfo.publicSourceDir = apk_path; Drawable apk_icon = appInfo.loadIcon(pm); - apkEntity.setGameBm(BitmapUtils.drawableToBitmap(apk_icon)); + apkEntity.setGameBm(BitmapUtils.drawableToBitmap(apk_icon, true)); /** apk的绝对路劲 */ apkEntity.setGamePath(apk_path); /** apk的版本名称 String */ diff --git a/app/src/main/java/com/gh/gamecenter/adapter/InstallFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/InstallFragmentAdapter.java index c04a329315..1d7bcffc85 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/InstallFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/InstallFragmentAdapter.java @@ -407,7 +407,7 @@ public class InstallFragmentAdapter extends BaseRecyclerAdapter { File file = new File(installedPackage.applicationInfo.sourceDir); fileInfo.setSize(file.length()); Drawable drawable = installedPackage.applicationInfo.loadIcon(pm); - fileInfo.setBitmap(BitmapUtils.drawableToBitmap(drawable)); + fileInfo.setBitmap(BitmapUtils.drawableToBitmap(drawable, true)); fileInfo.setFileTag(String.valueOf(System.currentTimeMillis())); } } diff --git a/app/src/main/java/com/gh/gamecenter/adapter/KcSelectGameAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/KcSelectGameAdapter.java index a5eb775c66..af30883bd9 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/KcSelectGameAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/KcSelectGameAdapter.java @@ -104,7 +104,7 @@ public class KcSelectGameAdapter extends BaseRecyclerAdapter { installGameEntity.setGamePath(installedPackage.applicationInfo.sourceDir); try { Drawable drawable = installedPackage.applicationInfo.loadIcon(pm); - installGameEntity.setGameBm(BitmapUtils.drawableToBitmap(drawable)); + installGameEntity.setGameBm(BitmapUtils.drawableToBitmap(drawable, true)); installGameEntity.setGameVersion(installedPackage.versionName); installGameEntity.setGameName(installedPackage.applicationInfo.loadLabel(pm).toString()); diff --git a/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragmentAdapter.java index b69b326af3..97bf40ed4a 100644 --- a/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragmentAdapter.java @@ -136,7 +136,7 @@ class GameDownloadFragmentAdapter extends BaseRecyclerAdapter { ApplicationInfo appInfo = info.applicationInfo; appInfo.sourceDir = apkPath; appInfo.publicSourceDir = apkPath; - Bitmap bitmap = BitmapUtils.drawableToBitmap(appInfo.loadIcon(pm)); + Bitmap bitmap = BitmapUtils.drawableToBitmap(appInfo.loadIcon(pm), true); viewHolder.dmIcon.setImageBitmap(bitmap); } } catch (JSONException e) { diff --git a/app/src/main/java/com/gh/gamecenter/qa/select/SelectGameDialogAdapter.java b/app/src/main/java/com/gh/gamecenter/qa/select/SelectGameDialogAdapter.java index f9174ab48a..59a133927f 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/select/SelectGameDialogAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/qa/select/SelectGameDialogAdapter.java @@ -110,7 +110,7 @@ public class SelectGameDialogAdapter extends BaseRecyclerAdapter