From 88d6143897dfd3750c11ec38649d5cec041bc174 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Tue, 5 Nov 2019 00:19:58 -0800 Subject: [PATCH] Display a placeholder box art bitmap while loading box art --- .../java/com/limelight/grid/AppGridAdapter.java | 4 +++- .../grid/assets/CachedAppAssetLoader.java | 9 ++++++--- .../main/res/drawable-xhdpi/no_app_image.png | Bin 0 -> 1622 bytes app/src/main/res/layout/app_grid_item.xml | 16 ++++++++-------- app/src/main/res/layout/app_grid_item_small.xml | 16 ++++++++-------- 5 files changed, 25 insertions(+), 20 deletions(-) create mode 100644 app/src/main/res/drawable-xhdpi/no_app_image.png diff --git a/app/src/main/java/com/limelight/grid/AppGridAdapter.java b/app/src/main/java/com/limelight/grid/AppGridAdapter.java index 5863a192..daba5fba 100644 --- a/app/src/main/java/com/limelight/grid/AppGridAdapter.java +++ b/app/src/main/java/com/limelight/grid/AppGridAdapter.java @@ -1,6 +1,7 @@ package com.limelight.grid; import android.content.Context; +import android.graphics.BitmapFactory; import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.TextView; @@ -76,7 +77,8 @@ public class AppGridAdapter extends GenericGridAdapter { this.loader = new CachedAppAssetLoader(computer, scalingDivisor, new NetworkAssetLoader(context, uniqueId), new MemoryAssetLoader(), - new DiskAssetLoader(context)); + new DiskAssetLoader(context), + BitmapFactory.decodeResource(context.getResources(), R.drawable.no_app_image)); // This will trigger the view to reload with the new layout setLayoutId(getLayoutIdForPreferences(prefs)); diff --git a/app/src/main/java/com/limelight/grid/assets/CachedAppAssetLoader.java b/app/src/main/java/com/limelight/grid/assets/CachedAppAssetLoader.java index 2c85ab7f..06fa695b 100644 --- a/app/src/main/java/com/limelight/grid/assets/CachedAppAssetLoader.java +++ b/app/src/main/java/com/limelight/grid/assets/CachedAppAssetLoader.java @@ -52,15 +52,17 @@ public class CachedAppAssetLoader { private final MemoryAssetLoader memoryLoader; private final DiskAssetLoader diskLoader; private final Bitmap placeholderBitmap; + private final Bitmap noAppImageBitmap; public CachedAppAssetLoader(ComputerDetails computer, double scalingDivider, NetworkAssetLoader networkLoader, MemoryAssetLoader memoryLoader, - DiskAssetLoader diskLoader) { + DiskAssetLoader diskLoader, Bitmap noAppImageBitmap) { this.computer = computer; this.scalingDivider = scalingDivider; this.networkLoader = networkLoader; this.memoryLoader = memoryLoader; this.diskLoader = diskLoader; + this.noAppImageBitmap = noAppImageBitmap; this.placeholderBitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888); } @@ -188,9 +190,10 @@ public class CachedAppAssetLoader { prgView.setVisibility(View.VISIBLE); } - // Set off another loader task on the network executor + // Set off another loader task on the network executor. This time our AsyncDrawable + // will use the app image placeholder bitmap, rather than an empty bitmap. LoaderTask task = new LoaderTask(imageView, prgView, false); - AsyncDrawable asyncDrawable = new AsyncDrawable(imageView.getResources(), placeholderBitmap, task); + AsyncDrawable asyncDrawable = new AsyncDrawable(imageView.getResources(), noAppImageBitmap, task); imageView.setVisibility(View.VISIBLE); imageView.setImageDrawable(asyncDrawable); task.executeOnExecutor(networkExecutor, tuple); diff --git a/app/src/main/res/drawable-xhdpi/no_app_image.png b/app/src/main/res/drawable-xhdpi/no_app_image.png new file mode 100644 index 0000000000000000000000000000000000000000..4cbad3e0439718265ea3c96656475d0c83fd4a49 GIT binary patch literal 1622 zcma)7eKb^Q93Iz=>-!ePwxb;nth!;%kJrq-E+@--+Q0)d!FC>d*9!E?&&=q zbREt0ngjwthq24W8_Z$?K}8c$15f^X>wg53+97wk3qiSbUAbNQ13)yQcLl~02wM6} zLxqr=Zv;T~?-)#)`mlyEOwx$R9IPP_R>>GHpMR0iuNYKZ$lYa>)FXK~q>LMR;7UVt zJ!vr~BAL(lj&^y~UeEKJ7++~W^kEL@+-T%19@7ZvG2{_o2vWh5FpNY(Q3QcuXleWx z^jGA+qL!gM#(OLMwq&vvM)%y=VSUMcD)E!Jpf<0KM$(=;y#t_X)3;;E( zawqAyTdyt6&7xnhSTd=JPjsgoOwIBp>hkoIWJt=smIX8%FL%XH=D;mMomQf%`i`zm zsFRB%?!5P$bS)d7$ZF>=bTjHOVMj-q#P=254CSQlxY=%nZg^nJyg59soJ}sogb}5^ z7H5itX|-B-w1Y0sIV<#|HrZ{{fm@hhwV+Ue!soc}W|Z?d^|fg2NDa>feZTe|r|GO9%2*qZj%pgF z_uA@mv232y+l|y|UE=NLC8-7UTCgeQ<(~6#l~};TxS*`icj11Gt6J){ThaN&_gBY% zL6N2>uM^UX%nLdCSFzaxh0`2ue8MMq{Asr`>9PhE~YPvU}Rm@%kniqA1wS85~x6^YW@FgEe z+AfVwrFKP`8z7Pg&tpf9vcFHovMb6hz1_g_h4z`OKlo%1>r%KSzM{|aOwmLVj8o#N z8(4J%Ib1DnM4`h*bjZk#Pp*;qkvi!aMdp!Y10=SU;!^nBRR^bpeI~*Jx@QuBurdqF z?y`GBt&@YuxFAECmysQu?Bz^qXm!jyADYt_jZ^$3aao}+F@*bWqwmGgR}xSNuhoQ4 zwpne6#10Mcuywn84f5{aD?WmX^J{hB!z@$wj1?3Z?R1${KPbAklN9^N9u;S}mk+WH zTPcq7$Vjfj6d6eoL=~HBh7s}3z*%RK!`R0I3j55qVw()Cs=%Z4w@CX9SCX(X(Dc-< zf*|-%BaRJ)1HE`vyc2Aie7b*54a$+vI~}PnusMy5we!?)GTxQm?F;--Wry-9lF&l5dzjhBh!wp zVK5-cFp@*S(oHz8hd&8XL2>fLUK{w0E77lQwK&7kK989$dr>w?XEvrx;jlWakAn_gugWucp)?=uK*QapmyEv z(ZIDsWj{>?22e~_)HPA - - + + - - + +