1254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gupackage android.support.v17.leanback.widget; 2254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu 3254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Guimport android.graphics.drawable.Drawable; 4254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Guimport android.os.Build; 5254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Guimport android.view.View; 6254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Guimport android.view.ViewGroup; 7254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu 8254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gufinal class ForegroundHelper { 9254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu 10254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu final static ForegroundHelper sInstance = new ForegroundHelper(); 11254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu ForegroundHelperVersionImpl mImpl; 12254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu 13254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu /** 14254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu * Interface implemented by classes that support Shadow. 15254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu */ 16254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu static interface ForegroundHelperVersionImpl { 17254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu 18254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu public void setForeground(View view, Drawable drawable); 19254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu 20254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu public Drawable getForeground(View view); 21254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu } 22254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu 23254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu /** 24254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu * Implementation used on api 23 (and above). 25254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu */ 26254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu private static final class ForegroundHelperApi23Impl implements ForegroundHelperVersionImpl { 2799ec8b0cb375f7e5577ea3ec9f09e6ff7a95de0dAurimas Liutikas ForegroundHelperApi23Impl() { 2899ec8b0cb375f7e5577ea3ec9f09e6ff7a95de0dAurimas Liutikas } 2999ec8b0cb375f7e5577ea3ec9f09e6ff7a95de0dAurimas Liutikas 30254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu @Override 31254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu public void setForeground(View view, Drawable drawable) { 32254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu ForegroundHelperApi23.setForeground(view, drawable); 33254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu } 34254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu 35254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu @Override 36254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu public Drawable getForeground(View view) { 37254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu return ForegroundHelperApi23.getForeground(view); 38254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu } 39254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu } 40254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu 41254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu /** 42254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu * Stub implementation 43254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu */ 44254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu private static final class ForegroundHelperStubImpl implements ForegroundHelperVersionImpl { 4599ec8b0cb375f7e5577ea3ec9f09e6ff7a95de0dAurimas Liutikas ForegroundHelperStubImpl() { 4699ec8b0cb375f7e5577ea3ec9f09e6ff7a95de0dAurimas Liutikas } 4799ec8b0cb375f7e5577ea3ec9f09e6ff7a95de0dAurimas Liutikas 48254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu @Override 49254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu public void setForeground(View view, Drawable drawable) { 50254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu } 51254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu 52254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu @Override 53254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu public Drawable getForeground(View view) { 54254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu return null; 55254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu } 56254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu } 57254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu 58254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu private ForegroundHelper() { 59254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu if (supportsForeground()) { 60254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu mImpl = new ForegroundHelperApi23Impl(); 61254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu } else { 62254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu mImpl = new ForegroundHelperStubImpl(); 63254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu } 64254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu } 65254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu 66254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu public static ForegroundHelper getInstance() { 67254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu return sInstance; 68254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu } 69254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu 70254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu /** 71254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu * Returns true if view.setForeground() is supported. 72254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu */ 73254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu public static boolean supportsForeground() { 74254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu return Build.VERSION.SDK_INT >= 23; 75254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu } 76254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu 77254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu public Drawable getForeground(View view) { 78254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu return mImpl.getForeground(view); 79254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu } 80254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu 81254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu public void setForeground(View view, Drawable drawable) { 82254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu mImpl.setForeground(view, drawable); 83254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu } 84254b417129de2a8c5612826a152f8a26c8f1d0e8Dake Gu} 85