mirror of https://github.com/tasks/tasks
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
3.2 KiB
Java
96 lines
3.2 KiB
Java
package com.actionbarsherlock.internal;
|
|
|
|
import android.content.Context;
|
|
import android.os.Build;
|
|
import android.util.DisplayMetrics;
|
|
import com.actionbarsherlock.R;
|
|
|
|
public final class ResourcesCompat {
|
|
//No instances
|
|
private ResourcesCompat() {}
|
|
|
|
|
|
/**
|
|
* Support implementation of {@code getResources().getBoolean()} that we
|
|
* can use to simulate filtering based on width and smallest width
|
|
* qualifiers on pre-3.2.
|
|
*
|
|
* @param context Context to load booleans from on 3.2+ and to fetch the
|
|
* display metrics.
|
|
* @param id Id of boolean to load.
|
|
* @return Associated boolean value as reflected by the current display
|
|
* metrics.
|
|
*/
|
|
public static boolean getResources_getBoolean(Context context, int id) {
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {
|
|
return context.getResources().getBoolean(id);
|
|
}
|
|
|
|
DisplayMetrics metrics = context.getResources().getDisplayMetrics();
|
|
float widthDp = metrics.widthPixels / metrics.density;
|
|
float heightDp = metrics.heightPixels / metrics.density;
|
|
float smallestWidthDp = (widthDp < heightDp) ? widthDp : heightDp;
|
|
|
|
if (id == R.bool.abs__action_bar_embed_tabs) {
|
|
if (widthDp >= 480) {
|
|
return true; //values-w480dp
|
|
}
|
|
return false; //values
|
|
}
|
|
if (id == R.bool.abs__split_action_bar_is_narrow) {
|
|
if (widthDp >= 480) {
|
|
return false; //values-w480dp
|
|
}
|
|
return true; //values
|
|
}
|
|
if (id == R.bool.abs__action_bar_expanded_action_views_exclusive) {
|
|
if (smallestWidthDp >= 600) {
|
|
return false; //values-sw600dp
|
|
}
|
|
return true; //values
|
|
}
|
|
if (id == R.bool.abs__config_allowActionMenuItemTextWithIcon) {
|
|
if (widthDp >= 480) {
|
|
return true; //values-w480dp
|
|
}
|
|
return false; //values
|
|
}
|
|
|
|
throw new IllegalArgumentException("Unknown boolean resource ID " + id);
|
|
}
|
|
|
|
/**
|
|
* Support implementation of {@code getResources().getInteger()} that we
|
|
* can use to simulate filtering based on width qualifiers on pre-3.2.
|
|
*
|
|
* @param context Context to load integers from on 3.2+ and to fetch the
|
|
* display metrics.
|
|
* @param id Id of integer to load.
|
|
* @return Associated integer value as reflected by the current display
|
|
* metrics.
|
|
*/
|
|
public static int getResources_getInteger(Context context, int id) {
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {
|
|
return context.getResources().getInteger(id);
|
|
}
|
|
|
|
DisplayMetrics metrics = context.getResources().getDisplayMetrics();
|
|
float widthDp = metrics.widthPixels / metrics.density;
|
|
|
|
if (id == R.integer.abs__max_action_buttons) {
|
|
if (widthDp >= 600) {
|
|
return 5; //values-w600dp
|
|
}
|
|
if (widthDp >= 500) {
|
|
return 4; //values-w500dp
|
|
}
|
|
if (widthDp >= 360) {
|
|
return 3; //values-w360dp
|
|
}
|
|
return 2; //values
|
|
}
|
|
|
|
throw new IllegalArgumentException("Unknown integer resource ID " + id);
|
|
}
|
|
}
|