2019-05-08 15:29:37 -07:00
|
|
|
/*
|
|
|
|
|
* Copyright (C) 2019 The Android Open Source Project
|
|
|
|
|
*
|
|
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
|
* you may not use this file except in compliance with the License.
|
|
|
|
|
* You may obtain a copy of the License at
|
|
|
|
|
*
|
|
|
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
|
*
|
|
|
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
|
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
|
* See the License for the specific language governing permissions and
|
|
|
|
|
* limitations under the License.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
package com.android.launcher3;
|
|
|
|
|
|
|
|
|
|
import android.content.res.Resources;
|
|
|
|
|
import android.util.DisplayMetrics;
|
|
|
|
|
import android.util.TypedValue;
|
|
|
|
|
|
|
|
|
|
public class ResourceUtils {
|
2019-10-18 14:46:11 -07:00
|
|
|
public static final int DEFAULT_NAVBAR_VALUE = 48;
|
2020-06-04 16:48:00 +08:00
|
|
|
public static final int INVALID_RESOURCE_HANDLE = -1;
|
2019-05-20 10:08:34 -07:00
|
|
|
public static final String NAVBAR_LANDSCAPE_LEFT_RIGHT_SIZE = "navigation_bar_width";
|
2019-05-22 14:52:37 -07:00
|
|
|
public static final String NAVBAR_BOTTOM_GESTURE_SIZE = "navigation_bar_gesture_height";
|
2020-12-24 16:34:19 +08:00
|
|
|
public static final String NAVBAR_BOTTOM_GESTURE_LARGER_SIZE =
|
|
|
|
|
"navigation_bar_gesture_larger_height";
|
2019-05-22 14:52:37 -07:00
|
|
|
|
2019-05-08 15:29:37 -07:00
|
|
|
public static int getNavbarSize(String resName, Resources res) {
|
2019-10-18 14:46:11 -07:00
|
|
|
return getDimenByName(resName, res, DEFAULT_NAVBAR_VALUE);
|
2019-05-08 15:29:37 -07:00
|
|
|
}
|
|
|
|
|
|
2019-12-09 18:44:21 -08:00
|
|
|
public static int getDimenByName(String resName, Resources res, int defaultValue) {
|
2019-05-08 15:29:37 -07:00
|
|
|
final int frameSize;
|
|
|
|
|
final int frameSizeResID = res.getIdentifier(resName, "dimen", "android");
|
|
|
|
|
if (frameSizeResID != 0) {
|
|
|
|
|
frameSize = res.getDimensionPixelSize(frameSizeResID);
|
|
|
|
|
} else {
|
|
|
|
|
frameSize = pxFromDp(defaultValue, res.getDisplayMetrics());
|
|
|
|
|
}
|
|
|
|
|
return frameSize;
|
|
|
|
|
}
|
|
|
|
|
|
2019-12-09 18:44:21 -08:00
|
|
|
public static boolean getBoolByName(String resName, Resources res, boolean defaultValue) {
|
|
|
|
|
final boolean val;
|
|
|
|
|
final int resId = res.getIdentifier(resName, "bool", "android");
|
|
|
|
|
if (resId != 0) {
|
|
|
|
|
val = res.getBoolean(resId);
|
|
|
|
|
} else {
|
|
|
|
|
val = defaultValue;
|
|
|
|
|
}
|
|
|
|
|
return val;
|
|
|
|
|
}
|
|
|
|
|
|
2020-06-04 16:48:00 +08:00
|
|
|
public static int getIntegerByName(String resName, Resources res, int defaultValue) {
|
|
|
|
|
int resId = res.getIdentifier(resName, "integer", "android");
|
|
|
|
|
return resId != 0 ? res.getInteger(resId) : defaultValue;
|
|
|
|
|
}
|
|
|
|
|
|
2019-05-08 15:29:37 -07:00
|
|
|
public static int pxFromDp(float size, DisplayMetrics metrics) {
|
2021-02-25 10:45:20 -05:00
|
|
|
return pxFromDp(size, metrics, 1f);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static int pxFromDp(float size, DisplayMetrics metrics, float scale) {
|
|
|
|
|
return size < 0 ? INVALID_RESOURCE_HANDLE : Math.round(scale
|
|
|
|
|
* TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, size, metrics));
|
2019-05-08 15:29:37 -07:00
|
|
|
}
|
|
|
|
|
}
|