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