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 zcmeAS@N?(olHy`uVBq!ia0y~yU^v0Rz{thH#=yW3&M!5Ufq{W7$=lt9;Xep2*t>i( z0|NtRfk$L90|U1(2s1Lwnj^u$z`$PO>FdgVpHr4afit`B?q&uC*2kVMjv*Dd-rjvX zX_kjX!^P`Y?)@))a?Z_FV3xmYVSSG8qfHj3v)2bcpR?aHjps_R?`_^S`|AEyaVA_8 zZ)ad(Vq$D;aBxsi5D?(tU}0ebVM0O>l_;v~V_2FrcCG8)_dZ#oZAXmW|6j$8A2b)Qcx|<7U3a0({Xe^z9tO`?_A**z`Q?{) z|NAM}{C#@)^_)lU94*U@d7Mprg=_Es|8ic4!~bE8oqK5L#qYH~m%p5@Tjx;m!h6NC z%te{A{+q5B;P7AjdRNA6v$n(^Z})pE*t8VNC@&SMz5hRbt&>8H*JTq|FU?!q{x1E@ z)%f8;TVltQAQ`@P{{K2m5A&8xS(G`;V*dH^&ofyL#h%gKwQl$6^XdY2F4s#Z2K{;{ zn%DSY%Bf9%E_iNt*m3&witC~8+?56Dy6rcf(iM<9XX3l@{`>zwn&vs|$Xsy!}_GjHTTeWJ}>Z^H;9~OqK4qY-uY3Ub( z*WyeMx9^V8yZ_C-cAEjqA>Yd;uA!k9x4jLn3Dp*;yV>z^m*|tt?TP~bM32?&@86ay z%hOnpyZ^rXWfQ&@hZ*e;gS-^Z=q(NM3cSA6faTEEWtodst@8g}y4E4$N@?tr)SsDQ z`&bX{<~c0z`|rPn?~e*_?7#D|qGyrDygK294nN}OeXZkZ{16=X{=x3+$DeVu@E7ik zS+r`^ir2Re3UFM%wXJuPPHn2Tz_ZUick|Mj^aP%LvN1m|z)@Tp>mC}qt&O84`?1Bb zyzQGWs0*y~y)5DyX!9i5iuF+b*Ix-N(}S5Fo_bi&VRJrLLxkh{x#z`CD)Xv49A>Ou zr4{7G*W$3ltS|Y^CLKS$UM*-e2)|xBCH18PN6Syu&}pgft_yG!w;xvAq+={7&QW~t zcDsX^&t;L>XOAr|6F4zvD=$k?vQpl6U8cwayZOnx@9tXSq)>d#OyESX_o};j;)e|^ zesesT^;U`FN!zyE#Ts1cGL2^f|cKa;-w)~xUNV&h(ib#wie-^ekOThQR}Y}dMO zoAYyHS(5fOI^4_LeRo$mbK@D`%ObD8-ulJHH1qXuyRzMLjXNElo!Zp1Yu#K|mZGzD zS}aA)y018%v=z!EZ@#(XHGkuo$Un{s=1Zn5TBViF-FT+*JsVSGg1R14rE=fbs<*SX zSd7wVTQTiCczp-QleR<&rPD^~ERAO(A3G?RM}UYOzxf;QBrpmz>U@YYX8GhM6Lwti zM6ZR}Y~P;8FIIdu*!O2;yb52B0{5Qp{Ed4KKCTcr(e(MJ%{=tl?lz&- zA}%g2C;T|aCXwS+d&St@1d9236yAT?#i7B+vgyIor>-(PjzmdW9%*#AH)BFK^YjSr zGnNKTdkht~Z|71z(e$<~J6w+`a#HHd*>eR>OtLw@_abMbj%L>(W-);ilQ!ur&W(2G zYCL1=`&f4qN6JY9o{jh4%PO)MnfEPb_dFb=u>SV7##V>85kHCJYD@<);T3K0RXnkp??4X literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/app_grid_item.xml b/app/src/main/res/layout/app_grid_item.xml index 95a2ebca..8a12af40 100644 --- a/app/src/main/res/layout/app_grid_item.xml +++ b/app/src/main/res/layout/app_grid_item.xml @@ -8,14 +8,6 @@ android:layout_centerHorizontal="true" android:layout_width="wrap_content" android:layout_height="wrap_content"> - - + + - - + +