Skip to content

Instantly share code, notes, and snippets.

@linroid
Created November 9, 2016 04:44
Show Gist options
  • Save linroid/ca2230e479c7be75327da36d189228a2 to your computer and use it in GitHub Desktop.
Save linroid/ca2230e479c7be75327da36d189228a2 to your computer and use it in GitHub Desktop.
Android Orientation Resource Loader
package com.linroid.androidorientation;
import android.app.Activity;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.util.DisplayMetrics;
import java.lang.reflect.Method;
/**
* 指定屏幕方向来加载资源
* @author linroid <linroid@gmail.com>
* @since 09/11/2016
*/
public class OrientationResourceLoader {
public static void load(Activity activity, Callback callback) {
load(activity, activity.getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT, callback);
}
public static void load(Context context, boolean isPortrait, Callback callback) {
Resources resources = context.getResources();
try {
Method updateConfiguration = resources.getClass()
.getMethod("updateConfiguration", Configuration.class, DisplayMetrics.class);
Configuration configuration = new Configuration(resources.getConfiguration());
DisplayMetrics displayMetrics = resources.getDisplayMetrics();
configuration.orientation = isPortrait ? Configuration.ORIENTATION_PORTRAIT : Configuration.ORIENTATION_LANDSCAPE;
updateConfiguration.invoke(resources, configuration, displayMetrics);
callback.onLoad(context, resources);
updateConfiguration.invoke(resources, resources.getConfiguration(), displayMetrics);
} catch (Exception error) {
error.printStackTrace();
}
}
interface Callback {
void onLoad(Context context, Resources resources);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment