1dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gu/* 2dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gu * Copyright (C) 2014 The Android Open Source Project 3dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gu * 4dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gu * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 5dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gu * in compliance with the License. You may obtain a copy of the License at 6dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gu * 7dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gu * http://www.apache.org/licenses/LICENSE-2.0 8dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gu * 9dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gu * Unless required by applicable law or agreed to in writing, software distributed under the License 10dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gu * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 11dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gu * or implied. See the License for the specific language governing permissions and limitations under 12dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gu * the License. 13dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gu */ 14dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gupackage android.support.v17.leanback.widget; 15dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gu 16dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Guimport android.support.v17.leanback.R; 17dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Guimport android.view.LayoutInflater; 18dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Guimport android.view.View; 19dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Guimport android.view.ViewGroup; 20dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gu 21dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Guclass ShadowHelperJbmr2 { 22dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gu 23dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gu static class ShadowImpl { 24dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gu View mNormalShadow; 25dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gu View mFocusShadow; 26dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gu } 27dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gu 28dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gu /* prepare parent for allowing shadows of a child */ 29dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gu public static void prepareParent(ViewGroup parent) { 30dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gu parent.setLayoutMode(ViewGroup.LAYOUT_MODE_OPTICAL_BOUNDS); 31dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gu } 32dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gu 33dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gu /* add shadows and return a implementation detail object */ 34dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gu public static Object addShadow(ViewGroup shadowContainer) { 35dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gu shadowContainer.setLayoutMode(ViewGroup.LAYOUT_MODE_OPTICAL_BOUNDS); 36dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gu LayoutInflater inflater = LayoutInflater.from(shadowContainer.getContext()); 37dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gu inflater.inflate(R.layout.lb_shadow, shadowContainer, true); 38dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gu ShadowImpl impl = new ShadowImpl(); 39dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gu impl.mNormalShadow = shadowContainer.findViewById(R.id.lb_shadow_normal); 40dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gu impl.mFocusShadow = shadowContainer.findViewById(R.id.lb_shadow_focused); 41dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gu return impl; 42dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gu } 43dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gu 44dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gu /* set shadow focus level 0 for unfocused 1 for fully focused */ 45dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gu public static void setShadowFocusLevel(Object impl, float level) { 46dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gu ShadowImpl shadowImpl = (ShadowImpl) impl; 47dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gu shadowImpl.mNormalShadow.setAlpha(1 - level); 48dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gu shadowImpl.mFocusShadow.setAlpha(level); 49dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gu } 50dfd01bbadc107b6b3b2081ddb0236128c425f380Dake Gu} 51