我正在onCreate()
的{{1}}方法内在运行时为某些设备设置横向方向
Activity
我有一个自定义视图,可以用
进行自我更新setRequestedOrientation(android.content.pm.ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
活动的onCreate()方法
private final Runnable mDraw = new Runnable() {
@Override
public void run() {
if (mMeasurementController != null) {
mMeasurementController.update();
}
invalidate();
mHandler.removeCallbacks(this);
mHandler.postDelayed(this, 1000 / 15);
}
};
并用按钮触摸,我更改十进制数字以使用选定的十进制格式显示值
protected void onCreate(Bundle savedInstanceState) {
if (DisplayUtils.isTablet(ActivityClinometer.this)) {
setRequestedOrientation(android.content.pm.ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setContentView(R.layout.activity_clinometer);
RelativeLayout layoutContainer = (RelativeLayout) findViewById(R.id.layout_main_container);
// Add Fragment
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.add(R.id.layout_main_framelayout, new FragmentClinometer()).commit();
// Set NavigationView with Header and Menu
bindViews();
System.out.println("Activity onCreate() " + this);
}
当方向更改代码为,但如果设置了方向,则我首先获得新值,然后获得旧值,因此显示不会改变。
protected void changeDecimalFormat(int decimalDigit) {
mDecimalDigit = decimalDigit;
switch (decimalDigit) {
case 0:
mDecimalFormat.setMaximumFractionDigits(0);
mDecimalFormat.setMinimumFractionDigits(0);
mPaintText.setTextSize(realPx(150));
break;
case 1:
mDecimalFormat.setMaximumFractionDigits(1);
mDecimalFormat.setMinimumFractionDigits(1);
mPaintText.setTextSize(realPx(120));
break;
case 2:
mDecimalFormat.setMaximumFractionDigits(2);
mDecimalFormat.setMinimumFractionDigits(2);
mPaintText.setTextSize(realPx(110));
break;
case 3:
mDecimalFormat.setMaximumFractionDigits(3);
mDecimalFormat.setMinimumFractionDigits(3);
mPaintText.setTextSize(realPx(100));
break;
}
不涉及线程,这是一个I/System.out: drawText() digit: mDecimalDigit: 3
I/System.out: drawText() digit: mDecimalDigit: 3
I/System.out: changeDecimalFormat() mDecimalDigit: 2 **I touch the button and change decimal digits to 2**
I/System.out: drawText() digit: mDecimalDigit: 3
I/System.out: drawText() digit: mDecimalDigit: 2
I/System.out: drawText() digit: mDecimalDigit: 3
I/System.out: drawText() digit: mDecimalDigit: 2
I/System.out: drawText() digit: mDecimalDigit: 2
I/System.out: drawText() digit: mDecimalDigit: 3
I/System.out: drawText() digit: mDecimalDigit: 2
在UI线程上运行,没有其他方法可以更改View
的值,并且只有在
mDecimalDigit
在平板电脑上称为onCreate(),在其他任何地方都不会调用,否则代码可以正常工作。
为什么会这样?
此视图在片段内部,并且从xml文件中放大。创建Activity后运行的方法如下
setRequestedOrientation(android.content.pm.ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);