问题
开发中的应用的横竖屏可以自动切换,并且拥有不同布局。横向布局是按照平板设计的,纵向布局是按照手机设计的。为了自动适配,使用了AndroidAutoSize。
AndroidAutoSize需要配置设计宽度和设计高度,但是UI设计的横屏和竖屏的宽度和高度刚好是相反的。导致配置完成之后,一旦旋转屏幕,竖屏或者横屏的适配就不正常(只能对横屏或者只能对竖屏进行适配)。
解决办法
初始化AndroidAutoSize时,进行如下配置:
//屏幕适配监听器
AutoSizeConfig.getInstance().setOnAdaptListener(new onAdaptListener() {
@Override
public void onAdaptBefore(Object target, Activity activity) {
//使用以下代码, 可以解决横竖屏切换时的屏幕适配问题
//首先设置最新的屏幕尺寸,ScreenUtils.getScreenSize(activity) 的参数一定要不要传 Application !!!
AutoSizeConfig.getInstance().setScreenWidth(ScreenUtils.getScreenSize(activity)[0]);
AutoSizeConfig.getInstance().setScreenHeight(ScreenUtils.getScreenSize(activity)[1]);
//根据屏幕方向,设置设计尺寸
if (activity.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
//设置横屏设计尺寸
AutoSizeConfig.getInstance()
.setDesignWidthInDp(640)
.setDesignHeightInDp(360);
} else {
//设置竖屏设计尺寸
AutoSizeConfig.getInstance()
.setDesignWidthInDp(360)
.setDesignHeightInDp(640);
}
//AutoSizeLog.d(String.format(Locale.ENGLISH, "%s onAdaptBefore!", target.getClass().getName()));
}
@Override
public void onAdaptAfter(Object target, Activity activity) {
//AutoSizeLog.d(String.format(Locale.ENGLISH, "%s onAdaptAfter!", target.getClass().getName()));
}
});