Beim automatischen Drehen das adaptive Problem von AndroidAutoSize (unterschiedliche Layouts für horizontale und vertikale Bildschirme)

Frage

Die horizontalen und vertikalen Bildschirme der zu entwickelnden Anwendung können automatisch umgeschaltet werden und unterschiedliche Layouts haben. Das horizontale Layout ist entsprechend dem Tablet und das vertikale Layout entsprechend dem Mobiltelefon gestaltet. Zur automatischen Anpassung wird AndroidAutoSize verwendet .

AndroidAutoSize muss die Designbreite und Designhöhe konfigurieren, aber die Breite und Höhe der horizontalen und vertikalen Bildschirme des UI-Designs sind genau das Gegenteil. Als Ergebnis ist nach Abschluss der Konfiguration, sobald der Bildschirm gedreht wird, die Anpassung des vertikalen Bildschirms oder des horizontalen Bildschirms anormal (nur der horizontale Bildschirm oder nur der vertikale Bildschirm kann angepasst werden).

Lösung

Konfigurieren Sie beim Initialisieren von AndroidAutoSize wie folgt:

//屏幕适配监听器
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()));
     }
 });

Guess you like

Origin blog.csdn.net/hanshiying007/article/details/117148381