Android Pクロススクリーン部分のアプリケーション幅が画面を満たしていない

3524 ワード

frameworks/base/services/core/java/com/android/server/am/ActivityRecord.java
/**
 * Computes the bounds to fit the Activity within the bounds of the {@link Configuration}.
 */
// TODO(b/36505427): Consider moving this method and similar ones to ConfigurationContainer.
private void computeBounds(Rect outBounds)

正常に表示できるactivity情報:0417 01-01 17:27:31.716:I/ActivityManager(10568):START u 0{act=android.intent.action.MAIN cat=[android.intent.category.HOME]flg=0 x 1000100 cmp=com.android.launcher 3/.Launcher}from pid 0 uid 00437 01-01 17:27:31.786:D/Activity Manager(10568):[computeBounds]info=Activity Info{bd4978b com.android.launcher3.Launcher}0438 01-01 17:27:31.786: D/ActivityManager(10568): [computeBounds] task inMultiWindowMode ? false0439 01-01 17:27:31.787: D/ActivityManager(10568): [computeBounds] maxAspectRatio === 0.00440 01-01 17:27:31.787: D/ActivityManager(10568): [computeBounds] getConfiguration() == {1.0 ?mcc?mnc [zh_CN] ldltr sw426dp w1925dp h402dp 120dpi nrml long hdr land finger -keyb/v/h -nav/h winConfig={ mBounds=Rect(0, 0 - 1444, 320) mAppBounds=Rect(0, 0 - 1444, 320) mWindowingMode=fullscreen mActivityType=home} s.4}0441 01-01 17:27:31.787: D/ActivityManager(10568): [computeBounds] isInVrUiMode(getConfiguration()) == false0442 01-01 17:27:31.787: D/ActivityManager(10568): [computeBounds] maxAspectRatio = 0.00443 01-01 17:27:31.787: D/ActivityManager(10568): [computeBounds] task.inMultiWindowMode() = false0444 01-01 17:27:31.787: D/ActivityManager(10568): [computeBounds] getConfiguration() = {1.0 ?mcc?mnc [zh_CN] ldltr sw426dp w1925dp h402dp 120dpi nrml long hdr land finger -keyb/v/h -nav/h winConfig={ mBounds=Rect(0, 0 - 1444, 320) mAppBounds=Rect(0, 0 - 1444, 320) mWindowingMode=fullscreen mActivityType=home} s.4}0445 01-01 17:27:31.787: D/ActivityManager(10568): [computeBounds] isInVrUiMode(getConfiguration()) = false0446 01-01 17:27:31.787: D/ActivityManager(10568): [computeBounds] return
半分の画面しか表示できないアプリケーション:1186 01-01 17:27:4424: I/ActivityManager(10568):START u 0{act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER]flg=0 x 1020000 cmp=com.android.caleendar/.AllInOneActivity bnds=153,65}from pid 11071 uid 100181205 01010101010117:27:4448:D/Activity Manager(10568):[computeBounds]info=ActivtivitivitivititititivityManager(10568):[computeBounds]info=ActivitivitivitivitititiviyInfo{6033324 com.android.calendar.AllInOneActivity}1206 01-01 17:27:44.148: D/ActivityManager(10568): [computeBounds] task inMultiWindowMode ? false1207 01-01 17:27:44.148: D/ActivityManager(10568): [computeBounds]maxAspectRatio==1.86//相違点ここでmaxAspectRatioは0ではなく、maxAspectRatioに基づいてmaxActivity Widthの値を再計算して表示異常が発生した.この値はhierarchyviewerで見たlayout widthの値と同じ1217 01-01 17:27:44.449:D/Activity Manager(10568):[computeBounds]getConfiguration()={1.0?mcc?mnc[zh_CN] ldltr sw426dp w1925dp h402dp 120dpi nrml long hdr land finger -keyb/v/h -nav/h winConfig={ mBounds=Rect(0, 0 - 1444, 320) mAppBounds=Rect(0, 0 - 1444, 320) mWindowingMode=fullscreen mActivityType=standard} s.4}1218 01-01 17:27:44.149: D/ActivityManager(10568): [computeBounds] isInVrUiMode(getConfiguration()) == false1221 01-01 17:27:44.152: D/ActivityManager(10568): [computeBounds] appBounds = Rect(0, 0 - 1444, 320)1222 01-01 17:27:44.152: D/ActivityManager(10568): [computeBounds] maxActivityWidth = 1444 maxAspectRatio = 1.86 maxActivityHeight = 3201223 01-01 17:27:44.152: D/ActivityManager(10568): [computeBounds] maxActivityWidth = 595
暴力改正案:maxAspectRatioを直接0にする