在我的应用程序中,我有两种不同的设计用于纵向模式和横向模式(仅适用于标签7.5和#34;和磨碎机)。我已经单独设计了布局
res/layout-sw720dp-land
res/layout
res/layout-sw720dp-port
对于所有布局,我将使用相同的文件名。例如,sw720dp将具有detail_item.xml意味着res / layout-sw720dp-port& res / layout将与detail_item.xml具有相同的名称。但他们之间的设计会有所不同。
如果标签有7.5"或者磨碎,然后它将具有横向模式,在所有情况下它将具有纵向模式。用于检查我正在使用DeviceConnected功能。
public static void DeviceConnected(final Activity activity) {
SharedPreferences mPrefs;
SharedPreferences.Editor mEditor;
mPrefs = activity.getSharedPreferences("Database_Value",
Context.MODE_WORLD_WRITEABLE);
mEditor = mPrefs.edit();
double screenInch = 7.5;
String ua = new WebView(activity).getSettings().getUserAgentString();
if (ua.contains("Mobile")) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
// mEditor.putString("Device_Mode", "TAB-LANDSCAPE");
mEditor.putString("Device_Mode", "Phone");
mEditor.commit();
} else {
DisplayMetrics dm = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
int width = dm.widthPixels;
int height = dm.heightPixels;
int dens = dm.densityDpi;
double wi = (double) width / (double) dens;
double hi = (double) height / (double) dens;
double x = Math.pow(wi, 2);
double y = Math.pow(hi, 2);
double screenInches = Math.sqrt(x + y);
Log.i("scrren", "" + screenInches);
// Toast.makeText(activity, "" + screenInch, 1000).show();
if (screenInches >= screenInch) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
mEditor.putString("Device_Mode", "TAB-LANDSCAPE");
mEditor.commit();
} else {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
// mEditor.putString("Device_Mode", "TAB-LANDSCAPE");
mEditor.putString("Device_Mode", "TAB-PORTRAIT");
mEditor.commit();
}
}
在开始任何活动之前,我将调用此检查共享首选项的值,然后我将设置活动的方向。
String Device_Mode = mPrefs.getString("Device_Mode", "");
// Set default orientation.
if (Device_Mode.equals("Phone")) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
} else if (Device_Mode.equals("TAB-PORTRAIT")) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
} else if (Device_Mode.equals("TAB-LANDSCAPE")) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
} else {
finish();
}
设置方向后,我将进行setlayout并声明并初始化视图。如果我在横向上按住选项卡,这可以正常工作。如果我正在将标签旋转到portait然后布局加载纵向布局而不是横向,则同时包括在内。如何解决这个问题。