package tk.wasdennnoch.androidn_ify.utils; import android.annotation.ColorRes; import android.annotation.DimenRes; import android.annotation.DrawableRes; import android.annotation.LayoutRes; import android.annotation.NonNull; import android.annotation.StringRes; import android.content.Context; import android.content.pm.PackageManager; import android.content.res.Resources; import android.content.res.XmlResourceParser; import android.graphics.drawable.Drawable; import android.support.annotation.ColorInt; import tk.wasdennnoch.androidn_ify.XposedHook; public class ResourceUtils { private static Context mContext; private static ResourceUtils mInstance; private ResourceUtils(Context context) { mInstance = this; mContext = createOwnContext(context); } public static Context createOwnContext(Context context) { try { return context.createPackageContext(XposedHook.PACKAGE_OWN, Context.CONTEXT_IGNORE_SECURITY); } catch (PackageManager.NameNotFoundException e) { throw new RuntimeException("Failed to instantiate own package context", e); } } public static ResourceUtils getInstance() { return mInstance; } public static ResourceUtils getInstance(Context context) { if (mInstance == null) mInstance = new ResourceUtils(context); return mInstance; } public final XmlResourceParser getLayout(@LayoutRes int resId) { return mContext.getResources().getLayout(resId); } public final float getDimension(@DimenRes int resId) { return mContext.getResources().getDimension(resId); } public final int getDimensionPixelSize(@DimenRes int resId) { return mContext.getResources().getDimensionPixelSize(resId); } @ColorInt public final int getColor(@ColorRes int resId) { //noinspection deprecation return mContext.getResources().getColor(resId); } @NonNull public final Drawable getDrawable(@DrawableRes int resId) { //noinspection deprecation return mContext.getDrawable(resId); } @NonNull public final String getString(@StringRes int resId) { return mContext.getResources().getString(resId); } @NonNull public final String getString(@StringRes int resId, Object... formatArgs) { return mContext.getResources().getString(resId, formatArgs); } @NonNull public CharSequence getText(@StringRes int resId) { return mContext.getResources().getText(resId); } @NonNull public Resources getResources() { return mContext.getResources(); } }