165fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko/* 265fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * Copyright (C) 2016 The Android Open Source Project 365fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * 465fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * Licensed under the Apache License, Version 2.0 (the "License"); 565fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * you may not use this file except in compliance with the License. 665fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * You may obtain a copy of the License at 765fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * 865fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * http://www.apache.org/licenses/LICENSE-2.0 965fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * 1065fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * Unless required by applicable law or agreed to in writing, software 1165fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * distributed under the License is distributed on an "AS IS" BASIS, 1265fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1365fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * See the License for the specific language governing permissions and 1465fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * limitations under the License 1565fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko */ 1665fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko 176ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkopackage com.android.tv.dvr.ui.browse; 1865fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko 1965fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalkoimport android.app.Activity; 2065fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalkoimport android.graphics.drawable.BitmapDrawable; 2165fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalkoimport android.graphics.drawable.ColorDrawable; 2265fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalkoimport android.graphics.drawable.Drawable; 2365fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalkoimport android.os.Handler; 2465fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalkoimport android.support.v17.leanback.app.BackgroundManager; 2565fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko 2665fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko/** 2765fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * The Background Helper. 2865fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko */ 296ebde20b03db4c0d57f67acaac11832b610b966bNick Chalkoclass DetailsViewBackgroundHelper { 3065fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko // Background delay serves to avoid kicking off expensive bitmap loading 3165fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko // in case multiple backgrounds are set in quick succession. 3265fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko private static final int SET_BACKGROUND_DELAY_MS = 100; 3365fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko 3465fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko private final BackgroundManager mBackgroundManager; 3565fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko 3665fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko class LoadBackgroundRunnable implements Runnable { 3765fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko final Drawable mBackGround; 3865fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko 3965fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko LoadBackgroundRunnable(Drawable background) { 4065fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko mBackGround = background; 4165fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko } 4265fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko 4365fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko @Override 4465fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko public void run() { 4565fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko if (!mBackgroundManager.isAttached()) { 4665fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko return; 4765fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko } 4865fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko if (mBackGround instanceof BitmapDrawable) { 4965fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko mBackgroundManager.setBitmap(((BitmapDrawable) mBackGround).getBitmap()); 5065fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko } 5165fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko mRunnable = null; 5265fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko } 5365fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko } 5465fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko 5565fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko private LoadBackgroundRunnable mRunnable; 5665fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko 5765fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko private final Handler mHandler = new Handler(); 5865fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko 5965fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko public DetailsViewBackgroundHelper(Activity activity) { 6065fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko mBackgroundManager = BackgroundManager.getInstance(activity); 6165fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko mBackgroundManager.attach(activity.getWindow()); 6265fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko } 6365fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko 6465fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko /** 6565fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * Sets the given image to background. 6665fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko */ 6765fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko public void setBackground(Drawable background) { 6865fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko if (mRunnable != null) { 6965fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko mHandler.removeCallbacks(mRunnable); 7065fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko } 7165fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko mRunnable = new LoadBackgroundRunnable(background); 7265fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko mHandler.postDelayed(mRunnable, SET_BACKGROUND_DELAY_MS); 7365fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko } 7465fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko 7565fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko /** 7665fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * Sets the background color. 7765fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko */ 7865fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko public void setBackgroundColor(int color) { 79d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko if (mBackgroundManager.isAttached()) { 80d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko mBackgroundManager.setColor(color); 81d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko } 8265fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko } 8365fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko 8465fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko /** 8565fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * Sets the background scrim. 8665fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko */ 8765fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko public void setScrim(int color) { 88d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko if (mBackgroundManager.isAttached()) { 89d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko mBackgroundManager.setDimLayer(new ColorDrawable(color)); 90d41f0075a7d2ea826204e81fcec57d0aa57171a9Nick Chalko } 9165fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko } 9265fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko} 93