のねのBlog

パソコンの問題や、ソフトウェアの開発で起きた問題など書いていきます。よろしくお願いします^^。

Config.updateFrom

   824     public int updateFrom(Configuration delta) {
    825         int changed = 0;
    826         if (delta.fontScale > 0 && fontScale != delta.fontScale) {
    827             changed |= ActivityInfo.CONFIG_FONT_SCALE;
    828             fontScale = delta.fontScale;
    829         }
    830         if (delta.mcc != 0 && mcc != delta.mcc) {
    831             changed |= ActivityInfo.CONFIG_MCC;
    832             mcc = delta.mcc;
    833         }
    834         if (delta.mnc != 0 && mnc != delta.mnc) {
    835             changed |= ActivityInfo.CONFIG_MNC;
    836             mnc = delta.mnc;
    837         }
    838         if (delta.locale != null
    839                 && (locale == null || !locale.equals(delta.locale))) {
    840             changed |= ActivityInfo.CONFIG_LOCALE;
    841             locale = delta.locale != null
    842                     ? (Locale) delta.locale.clone() : null;
    843             // If locale has changed, then layout direction is also changed ...
    844             changed |= ActivityInfo.CONFIG_LAYOUT_DIRECTION;
    845             // ... and we need to update the layout direction (represented by the first
    846             // 2 most significant bits in screenLayout).
    847             setLayoutDirection(locale);
    848         }
    849         final int deltaScreenLayoutDir = delta.screenLayout & SCREENLAYOUT_LAYOUTDIR_MASK;
    850         if (deltaScreenLayoutDir != SCREENLAYOUT_LAYOUTDIR_UNDEFINED &&
    851                 deltaScreenLayoutDir != (screenLayout & SCREENLAYOUT_LAYOUTDIR_MASK)) {
    852             screenLayout = (screenLayout & ~SCREENLAYOUT_LAYOUTDIR_MASK) | deltaScreenLayoutDir;
    853             changed |= ActivityInfo.CONFIG_LAYOUT_DIRECTION;
    854         }
    855         if (delta.userSetLocale && (!userSetLocale || ((changed & ActivityInfo.CONFIG_LOCALE) != 0)))
    856         {
    857             changed |= ActivityInfo.CONFIG_LOCALE;
    858             userSetLocale = true;
    859         }
    860         if (delta.touchscreen != TOUCHSCREEN_UNDEFINED
    861                 && touchscreen != delta.touchscreen) {
    862             changed |= ActivityInfo.CONFIG_TOUCHSCREEN;
    863             touchscreen = delta.touchscreen;
    864         }
    865         if (delta.keyboard != KEYBOARD_UNDEFINED
    866                 && keyboard != delta.keyboard) {
    867             changed |= ActivityInfo.CONFIG_KEYBOARD;
    868             keyboard = delta.keyboard;
    869         }
    870         if (delta.keyboardHidden != KEYBOARDHIDDEN_UNDEFINED
    871                 && keyboardHidden != delta.keyboardHidden) {
    872             changed |= ActivityInfo.CONFIG_KEYBOARD_HIDDEN;
    873             keyboardHidden = delta.keyboardHidden;
    874         }
    875         if (delta.hardKeyboardHidden != HARDKEYBOARDHIDDEN_UNDEFINED
    876                 && hardKeyboardHidden != delta.hardKeyboardHidden) {
    877             changed |= ActivityInfo.CONFIG_KEYBOARD_HIDDEN;
    878             hardKeyboardHidden = delta.hardKeyboardHidden;
    879         }
    880         if (delta.navigation != NAVIGATION_UNDEFINED
    881                 && navigation != delta.navigation) {
    882             changed |= ActivityInfo.CONFIG_NAVIGATION;
    883             navigation = delta.navigation;
    884         }
    885         if (delta.navigationHidden != NAVIGATIONHIDDEN_UNDEFINED
    886                 && navigationHidden != delta.navigationHidden) {
    887             changed |= ActivityInfo.CONFIG_KEYBOARD_HIDDEN;
    888             navigationHidden = delta.navigationHidden;
    889         }
    890         if (delta.orientation != ORIENTATION_UNDEFINED
    891                 && orientation != delta.orientation) {
    892             changed |= ActivityInfo.CONFIG_ORIENTATION;
    893             orientation = delta.orientation;
    894         }
    895         if (getScreenLayoutNoDirection(delta.screenLayout) !=
    896                     (SCREENLAYOUT_SIZE_UNDEFINED | SCREENLAYOUT_LONG_UNDEFINED)
    897                 && (getScreenLayoutNoDirection(screenLayout) !=
    898                     getScreenLayoutNoDirection(delta.screenLayout))) {
    899             changed |= ActivityInfo.CONFIG_SCREEN_LAYOUT;
    900             // We need to preserve the previous layout dir bits if they were defined
    901             if ((delta.screenLayout&SCREENLAYOUT_LAYOUTDIR_MASK) == 0) {
    902                 screenLayout = (screenLayout&SCREENLAYOUT_LAYOUTDIR_MASK)|delta.screenLayout;
    903             } else {
    904                 screenLayout = delta.screenLayout;
    905             }
    906         }
    907         if (delta.uiMode != (UI_MODE_TYPE_UNDEFINED|UI_MODE_NIGHT_UNDEFINED)
    908                 && uiMode != delta.uiMode) {
    909             changed |= ActivityInfo.CONFIG_UI_MODE;
    910             if ((delta.uiMode&UI_MODE_TYPE_MASK) != UI_MODE_TYPE_UNDEFINED) {
    911                 uiMode = (uiMode&~UI_MODE_TYPE_MASK)
    912                         | (delta.uiMode&UI_MODE_TYPE_MASK);
    913             }
    914             if ((delta.uiMode&UI_MODE_NIGHT_MASK) != UI_MODE_NIGHT_UNDEFINED) {
    915                 uiMode = (uiMode&~UI_MODE_NIGHT_MASK)
    916                         | (delta.uiMode&UI_MODE_NIGHT_MASK);
    917             }
    918         }
    919         if (delta.screenWidthDp != SCREEN_WIDTH_DP_UNDEFINED
    920                 && screenWidthDp != delta.screenWidthDp) {
    921             changed |= ActivityInfo.CONFIG_SCREEN_SIZE;
    922             screenWidthDp = delta.screenWidthDp;
    923         }
    924         if (delta.screenHeightDp != SCREEN_HEIGHT_DP_UNDEFINED
    925                 && screenHeightDp != delta.screenHeightDp) {
    926             changed |= ActivityInfo.CONFIG_SCREEN_SIZE;
    927             screenHeightDp = delta.screenHeightDp;
    928         }
    929         if (delta.smallestScreenWidthDp != SMALLEST_SCREEN_WIDTH_DP_UNDEFINED
    930                 && smallestScreenWidthDp != delta.smallestScreenWidthDp) {
    931             changed |= ActivityInfo.CONFIG_SMALLEST_SCREEN_SIZE;
    932             smallestScreenWidthDp = delta.smallestScreenWidthDp;
    933         }
    934         if (delta.densityDpi != DENSITY_DPI_UNDEFINED &&
    935                 densityDpi != delta.densityDpi) {
    936             changed |= ActivityInfo.CONFIG_DENSITY;
    937             densityDpi = delta.densityDpi;
    938         }
    939         if (delta.compatScreenWidthDp != SCREEN_WIDTH_DP_UNDEFINED) {
    940             compatScreenWidthDp = delta.compatScreenWidthDp;
    941         }
    942         if (delta.compatScreenHeightDp != SCREEN_HEIGHT_DP_UNDEFINED) {
    943             compatScreenHeightDp = delta.compatScreenHeightDp;
    944         }
    945         if (delta.compatSmallestScreenWidthDp != SMALLEST_SCREEN_WIDTH_DP_UNDEFINED) {
    946             compatSmallestScreenWidthDp = delta.compatSmallestScreenWidthDp;
    947         }
    948         if (delta.seq != 0) {
    949             seq = delta.seq;
    950         }
    951 
    952         return changed;
    953     }