/** * 使用 AndroidAutoSize 初始化时设置的默认适配参数进行适配 (AndroidManifest 的 Meta 属性) * * @param activity {@link Activity} */ public static void autoConvertDensityOfGlobal(Activity activity) { if (AutoSizeConfig.getInstance().isBaseOnWidth()) { autoConvertDensityBaseOnWidth(activity, AutoSizeConfig.getInstance().getDesignWidthInDp()); } else { autoConvertDensityBaseOnHeight(activity, AutoSizeConfig.getInstance().getDesignHeightInDp()); } }
/** * 使用 AndroidAutoSize 初始化时设置的默认适配参数进行适配 (AndroidManifest 的 Meta 属性) * * @param resources {@link Resources} */ public static void autoConvertDensityOfGlobal(Resources resources) { if (AutoSizeConfig.getInstance().isBaseOnWidth()) { autoConvertDensityBaseOnWidth(resources, AutoSizeConfig.getInstance().getDesignWidthInDp()); } else { autoConvertDensityBaseOnHeight(resources, AutoSizeConfig.getInstance().getDesignHeightInDp()); } }
@Override public void applyAdapt(Object target, Activity activity) { onAdaptListener onAdaptListener = AutoSizeConfig.getInstance().getOnAdaptListener(); if (onAdaptListener != null){ onAdaptListener.onAdaptBefore(target, activity); } if (mAutoAdaptStrategy != null) { mAutoAdaptStrategy.applyAdapt(target, activity); } if (onAdaptListener != null){ onAdaptListener.onAdaptAfter(target, activity); } } }
/** * 取消适配 * * @param activity {@link Activity} */ public static void cancelAdapt(Activity activity) { float initXdpi = AutoSizeConfig.getInstance().getInitXdpi(); switch (AutoSizeConfig.getInstance().getUnitsManager().getSupportSubunits()) { case PT: initXdpi = initXdpi / 72f; break; case MM: initXdpi = initXdpi / 25.4f; break; default: } setDensity(activity, AutoSizeConfig.getInstance().getInitDensity() , AutoSizeConfig.getInstance().getInitDensityDpi() , AutoSizeConfig.getInstance().getInitScaledDensity() , initXdpi); }
@Override public boolean onCreate() { AutoSizeConfig.getInstance() .setLog(true) .init((Application) getContext().getApplicationContext()) .setUseDeviceSize(false); return true; }
@Override public void onActivityCreated(Activity activity, Bundle savedInstanceState) { if (AutoSizeConfig.getInstance().isCustomFragment()) { if (activity instanceof FragmentActivity) { ((FragmentActivity) activity).getSupportFragmentManager().registerFragmentLifecycleCallbacks(mFragmentLifecycleCallbacks, true); } } //Activity 中的 setContentView(View) 一定要在 super.onCreate(Bundle); 之后执行 if (mAutoAdaptStrategy != null) { mAutoAdaptStrategy.applyAdapt(activity, activity); } }
/** * 以宽度为基准进行适配 * * @param activity {@link Activity} * @param designWidthInDp 设计图的总宽度 */ public static void autoConvertDensityBaseOnWidth(Activity activity, float designWidthInDp) { autoConvertDensity(activity, designWidthInDp, true); }
/** * 设置屏幕适配逻辑策略类 * * @param autoAdaptStrategy {@link AutoAdaptStrategy} */ public AutoSizeConfig setAutoAdaptStrategy(AutoAdaptStrategy autoAdaptStrategy) { Preconditions.checkNotNull(autoAdaptStrategy, "autoAdaptStrategy == null"); Preconditions.checkNotNull(mActivityLifecycleCallbacks, "Please call the AutoSizeConfig#init() first"); mActivityLifecycleCallbacks.setAutoAdaptStrategy(new WrapperAutoAdaptStrategy(autoAdaptStrategy)); return this; }
@Override public void onActivityStarted(Activity activity) { if (mAutoAdaptStrategy != null) { mAutoAdaptStrategy.applyAdapt(activity, activity); } }
/** * 以宽度为基准进行适配 * * @param resources {@link Resources} * @param designWidthInDp 设计图的总宽度 */ public static void autoConvertDensityBaseOnWidth(Resources resources, float designWidthInDp) { autoConvertDensity(resources, designWidthInDp, true); }
/** * v0.7.0 以后, 框架会在 APP 启动时自动调用此方法进行初始化, 使用者无需手动初始化, 初始化方法只能调用一次, 否则报错 * 此方法使用默认的 {@link AutoAdaptStrategy} 策略, 如想使用自定义的 {@link AutoAdaptStrategy} 策略 * 请调用 {@link #init(Application, boolean, AutoAdaptStrategy)} * * @param application {@link Application} * @param isBaseOnWidth 详情请查看 {@link #isBaseOnWidth} 的注释 */ AutoSizeConfig init(Application application, boolean isBaseOnWidth) { return init(application, isBaseOnWidth, null); }
/** * 设置屏幕适配逻辑策略类 * * @param autoAdaptStrategy {@link AutoAdaptStrategy} */ public void setAutoAdaptStrategy(AutoAdaptStrategy autoAdaptStrategy) { mAutoAdaptStrategy = autoAdaptStrategy; mFragmentLifecycleCallbacks.setAutoAdaptStrategy(autoAdaptStrategy); } }
public static AutoSizeConfig getInstance() { if (sInstance == null) { synchronized (AutoSizeConfig.class) { if (sInstance == null) { sInstance = new AutoSizeConfig(); } } } return sInstance; }
/** * 返回 {@link #mScreenHeight} * * @return {@link #mScreenHeight} */ public int getScreenHeight() { return isUseDeviceSize() ? mScreenHeight : mScreenHeight - mStatusBarHeight; }
public ActivityLifecycleCallbacksImpl(AutoAdaptStrategy autoAdaptStrategy) { mFragmentLifecycleCallbacks = new FragmentLifecycleCallbacksImpl(autoAdaptStrategy); mAutoAdaptStrategy = autoAdaptStrategy; }
@Override public DisplayMetricsInfo createFromParcel(Parcel source) { return new DisplayMetricsInfo(source); }
/** * 以高度为基准进行适配 * * @param activity {@link Activity} * @param designHeightInDp 设计图的总高度 */ public static void autoConvertDensityBaseOnHeight(Activity activity, float designHeightInDp) { autoConvertDensity(activity, designHeightInDp, false); }
@Override public void onFragmentCreated(FragmentManager fm, Fragment f, Bundle savedInstanceState) { if (mAutoAdaptStrategy != null) { mAutoAdaptStrategy.applyAdapt(f, f.getActivity()); } }
/** * 以高度为基准进行适配 * * @param resources {@link Resources} * @param designHeightInDp 设计图的总高度 */ public static void autoConvertDensityBaseOnHeight(Resources resources, float designHeightInDp) { autoConvertDensity(resources, designHeightInDp, false); }
/** * v0.7.0 以后, 框架会在 APP 启动时自动调用此方法进行初始化, 使用者无需手动初始化, 初始化方法只能调用一次, 否则报错 * 此方法默认使用以宽度进行等比例适配, 如想使用以高度进行等比例适配, 请调用 {@link #init(Application, boolean)} * * @param application {@link Application} */ AutoSizeConfig init(Application application) { return init(application, true, null); }