• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2019 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.launcher3;
18 
19 import android.content.res.Resources;
20 import android.util.DisplayMetrics;
21 import android.util.TypedValue;
22 
23 public class ResourceUtils {
24     public static final int DEFAULT_NAVBAR_VALUE = 48;
25     public static final int INVALID_RESOURCE_HANDLE = -1;
26     public static final String NAVBAR_LANDSCAPE_LEFT_RIGHT_SIZE = "navigation_bar_width";
27     public static final String NAVBAR_BOTTOM_GESTURE_SIZE = "navigation_bar_gesture_height";
28     public static final String NAVBAR_BOTTOM_GESTURE_LARGER_SIZE =
29             "navigation_bar_gesture_larger_height";
30 
getNavbarSize(String resName, Resources res)31     public static int getNavbarSize(String resName, Resources res) {
32         return getDimenByName(resName, res, DEFAULT_NAVBAR_VALUE);
33     }
34 
getDimenByName(String resName, Resources res, int defaultValue)35     public static int getDimenByName(String resName, Resources res, int defaultValue) {
36         final int frameSize;
37         final int frameSizeResID = res.getIdentifier(resName, "dimen", "android");
38         if (frameSizeResID != 0) {
39             frameSize = res.getDimensionPixelSize(frameSizeResID);
40         } else {
41             frameSize = pxFromDp(defaultValue, res.getDisplayMetrics());
42         }
43         return frameSize;
44     }
45 
getBoolByName(String resName, Resources res, boolean defaultValue)46     public static boolean getBoolByName(String resName, Resources res, boolean defaultValue) {
47         final boolean val;
48         final int resId = res.getIdentifier(resName, "bool", "android");
49         if (resId != 0) {
50             val = res.getBoolean(resId);
51         } else {
52             val = defaultValue;
53         }
54         return val;
55     }
56 
getIntegerByName(String resName, Resources res, int defaultValue)57     public static int getIntegerByName(String resName, Resources res, int defaultValue) {
58         int resId = res.getIdentifier(resName, "integer", "android");
59         return resId != 0 ? res.getInteger(resId) : defaultValue;
60     }
61 
pxFromDp(float size, DisplayMetrics metrics)62     public static int pxFromDp(float size, DisplayMetrics metrics) {
63         return pxFromDp(size, metrics, 1f);
64     }
65 
pxFromDp(float size, DisplayMetrics metrics, float scale)66     public static int pxFromDp(float size, DisplayMetrics metrics, float scale) {
67         return size < 0 ? INVALID_RESOURCE_HANDLE : Math.round(scale
68                 * TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, size, metrics));
69     }
70 }
71