Java Code Examples for android.app.Application#registerComponentCallbacks()

The following examples show how to use android.app.Application#registerComponentCallbacks() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: DisplayUtils.java    From WanAndroid with MIT License 5 votes vote down vote up
public static void setCustomDensity(@NonNull Activity activity, @NonNull final Application application) {
    DisplayMetrics appDisplayMetrics = application.getResources().getDisplayMetrics();
    if (sNoncompatDensity == 0) {
        sNoncompatDensity = appDisplayMetrics.density;
        sNoncompatScaledDensity = appDisplayMetrics.scaledDensity;
        // 防止系统切换后不起作用
        application.registerComponentCallbacks(new ComponentCallbacks() {
            @Override
            public void onConfigurationChanged(Configuration newConfig) {
                if (newConfig != null && newConfig.fontScale > 0) {
                    sNoncompatScaledDensity = application.getResources().getDisplayMetrics().scaledDensity;
                }
            }

            @Override
            public void onLowMemory() {

            }
        });
    }
    float targetDensity = appDisplayMetrics.widthPixels / 360;
    // 防止字体变小
    float targetScaleDensity = targetDensity * (sNoncompatScaledDensity / sNoncompatDensity);
    int targetDensityDpi = (int) (160 * targetDensity);

    appDisplayMetrics.density = targetDensity;
    appDisplayMetrics.scaledDensity = targetScaleDensity;
    appDisplayMetrics.densityDpi = targetDensityDpi;

    final DisplayMetrics activityDisplayMetrics = activity.getResources().getDisplayMetrics();
    activityDisplayMetrics.density = targetDensity;
    activityDisplayMetrics.scaledDensity = targetScaleDensity;
    activityDisplayMetrics.densityDpi = targetDensityDpi;
}
 
Example 2
Source File: DensityUtils.java    From YCAudioPlayer with Apache License 2.0 5 votes vote down vote up
public static void setDensity(@NonNull Application application) {
    //获取application的DisplayMetrics
    //DisplayMetrics 类提供了一种关于显示的通用信息,如显示大小,分辨率和字体。
    appDisplayMetrics = application.getResources().getDisplayMetrics();
    //获取状态栏高度
    barHeight = StatusBarUtils.getStatusBarHeight(application);

    if (appDensity == 0) {
        //初始化的时候赋值
        appDensity = appDisplayMetrics.density;
        appScaledDensity = appDisplayMetrics.scaledDensity;

        //添加字体变化的监听
        application.registerComponentCallbacks(new ComponentCallbacks() {
            @Override
            public void onConfigurationChanged(Configuration newConfig) {
                //字体改变后,将appScaledDensity重新赋值
                if (newConfig != null && newConfig.fontScale > 0) {
                    appScaledDensity = BaseApplication.getInstance().getResources()
                            .getDisplayMetrics().scaledDensity;
                }
            }

            @Override
            public void onLowMemory() {

            }
        });
    }
}
 
Example 3
Source File: Density.java    From Collection-Android with MIT License 5 votes vote down vote up
/**
 * 设计稿的宽度,以dp为单位,后面需要以f(浮点型)比如375f
 * @param application
 * @param width
 */
public static void setDensity(@NonNull final Application application, float width) {
    appDisplayMetrics = application.getResources().getDisplayMetrics();
    WIDTH = width;
    registerActivityLifecycleCallbacks(application);

    if (appDensity == 0) {
        //初始化的时候赋值
        appDensity = appDisplayMetrics.density;
        appScaledDensity = appDisplayMetrics.scaledDensity;

        //添加字体变化的监听
        application.registerComponentCallbacks(new ComponentCallbacks() {
            @Override
            public void onConfigurationChanged(Configuration newConfig) {
                //字体改变后,将appScaledDensity重新赋值
                if (newConfig != null && newConfig.fontScale > 0) {
                    appScaledDensity = application.getResources().getDisplayMetrics().scaledDensity;
                }
            }

            @Override
            public void onLowMemory() {
            }
        });
    }
}
 
Example 4
Source File: DensityAdaption.java    From HaoReader with GNU General Public License v3.0 5 votes vote down vote up
public static void setCustomDensity(@NonNull AppCompatActivity activity, @NonNull final Application application) {
    final DisplayMetrics appDisplayMetrics = application.getResources().getDisplayMetrics();

    if (sNonCompatDensity == 0) {
        sNonCompatDensity = appDisplayMetrics.density;
        sNonCompatScaledDensity = appDisplayMetrics.scaledDensity;
        application.registerComponentCallbacks(new ComponentCallbacks() {
            @Override
            public void onConfigurationChanged(Configuration newConfig) {
                if (newConfig != null && newConfig.fontScale > 0) {
                    sNonCompatScaledDensity = application.getResources().getDisplayMetrics().scaledDensity;
                }
            }

            @Override
            public void onLowMemory() {

            }
        });
    }

    final float targetDensity;
    Configuration configuration = activity.getResources().getConfiguration(); //获取设置的配置信息
    if (configuration.orientation == Configuration.ORIENTATION_PORTRAIT) {
        targetDensity = appDisplayMetrics.widthPixels / 360f;
    } else {
        targetDensity = appDisplayMetrics.heightPixels / 640f;
    }
    final float targetScaledDensity = targetDensity * (sNonCompatScaledDensity / sNonCompatDensity);
    final int targetDensityDpi = (int) (160 * targetDensity);

    appDisplayMetrics.density = targetDensity;
    appDisplayMetrics.scaledDensity = targetScaledDensity;
    appDisplayMetrics.densityDpi = targetDensityDpi;

    final DisplayMetrics activityDisplayMetrics = activity.getResources().getDisplayMetrics();
    activityDisplayMetrics.density = targetDensity;
    activityDisplayMetrics.scaledDensity = targetScaledDensity;
    activityDisplayMetrics.densityDpi = targetDensityDpi;
}
 
Example 5
Source File: ApplicationProviderTest.java    From android-test with Apache License 2.0 5 votes vote down vote up
@Test
public void getApplicationContext_asApplication() {
  Application a = getApplicationContext();
  a.registerComponentCallbacks(
      new ComponentCallbacks2() {
        @Override
        public void onTrimMemory(int level) {}

        @Override
        public void onConfigurationChanged(Configuration newConfig) {}

        @Override
        public void onLowMemory() {}
      });
}
 
Example 6
Source File: LocalAidlServices.java    From deagle with Apache License 2.0 4 votes vote down vote up
@TargetApi(VERSION_CODES.ICE_CREAM_SANDWICH)
private static void registerComponentCallbacks(final Application app, final ComponentCallbacks callbacks) {
	if (VERSION.SDK_INT < VERSION_CODES.ICE_CREAM_SANDWICH) return;
	app.registerComponentCallbacks(callbacks);
}