Settings->Accessibility->Large text分析

来源:互联网 发布:单片机相序检测程序 编辑:程序博客网 时间:2024/06/07 10:10

自己胡乱的研究了一番Settings->Accessibility->Large text,点击Large text的CheckBox字体如何变化的。


首先AccessibilitySettings.java
/packages/apps/Settings/src/com/android/settings/accessibility/AccessibilitySettings.java

 @Override    public void onResume() {        super.onResume();        loadInstalledServices();//先加载        updateAllPreferences();
 private void updateAllPreferences() {432        updateServicesPreferences();433        updateSystemPreferences();434    }
 private void updateSystemPreferences() {536        // Large text.537        try {538            mCurConfig.updateFrom(ActivityManagerNative.getDefault().getConfiguration());539        } catch (RemoteException re) {540            /* ignore */541        }542        mToggleLargeTextPreference.setChecked(mCurConfig.fontScale == LARGE_FONT_SCALE);543
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {       Log.d("debug", "onPreferenceTreeClick------");271        if (mToggleLargeTextPreference == preference) { //Large Text那个选项272            handleToggleLargeTextPreferenceClick();//调用该方法273            return true;274        } else if (mToggleHighTextContrastPreference == preference) {275            handleToggleTextContrastPreferenceClick();276            return true;277        } else if (mTogglePowerButtonEndsCallPreference == preference) {278            handleTogglePowerButtonEndsCallPreferenceClick();279            return true;280        } else if (mToggleLockScreenRotationPreference == preference) {281            handleLockScreenRotationPreferenceClick();282            return true;283        } else if (mToggleSpeakPasswordPreference == preference) {284            handleToggleSpeakPasswordPreferenceClick();285            return true;286        } else if (mGlobalGesturePreferenceScreen == preference) {287            handleToggleEnableAccessibilityGesturePreferenceClick();288            return true;289        } else if (mDisplayMagnificationPreferenceScreen == preference) {290            handleDisplayMagnificationPreferenceScreenClick();291            return true;292        }293        return super.onPreferenceTreeClick(preferenceScreen, preference);294    }295

接着

    private void handleToggleLargeTextPreferenceClick() {        try {            Log.d("debug", "handleToggleLargeTextPreferenceClick------");            mCurConfig.fontScale = mToggleLargeTextPreference.isChecked() ? LARGE_FONT_SCALE : 1; //调用ActivityManagerNative.java里面的updatePersistentConfiguration()方法       ActivityManagerNative.getDefault().updatePersistentConfiguration(mCurConfig);        } catch (RemoteException re) {            /* ignore */        }    }

紧接着之调用到
/frameworks/base/core/java/android/app/ActivityManagerNative.java

public void updatePersistentConfiguration(Configuration values) throws RemoteException5219    {Log.d("debug","updatePersistentConfiguration--------");5220        Parcel data = Parcel.obtain();5221        Parcel reply = Parcel.obtain();5222        data.writeInterfaceToken(IActivityManager.descriptor);5223        values.writeToParcel(data, 0);5224        mRemote.transact(UPDATE_PERSISTENT_CONFIGURATION_TRANSACTION, data, reply, 0);5225        reply.readException();5226        data.recycle();5227        reply.recycle();5228    }

log输出:
D/debug ( 2559): onPreferenceTreeClick——
D/debug ( 2559): handleToggleLargeTextPreferenceClick——
D/debug ( 2559): updatePersistentConfiguration——
D/debug ( 2559): updateSystemPreferences—-

0 0
原创粉丝点击