自动旋转时,AndroidAutoSize的自适应问题(横竖屏不同布局)

问题

开发中的应用的横竖屏可以自动切换,并且拥有不同布局。横向布局是按照平板设计的,纵向布局是按照手机设计的。为了自动适配,使用了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()));
     }
 });

猜你喜欢

转载自blog.csdn.net/hanshiying007/article/details/117148381
今日推荐