【android學習開源項目之AndroidAutoSize】AndroidAutoSize和DialogFragment的適配

█ 【android學習開源項目之AndroidAutoSize】AndroidAutoSize和DialogFragment的適配

█ 相關文章:

- 
 ● 【android學習開源項目之BasePopup】BasePopup(PopupWindow)進行二次封裝
 ● 【android學習開源項目之AndroidAutoSize】AndroidAutoSize和DialogFragment的適配

█ 讀前說明:

- 
 ● 本文通過學習別人寫demo,學習一些課件,參考一些博客,’學習相關知識,如果涉及侵權請告知
 ● 本文只簡單羅列相關的代碼實現過程
 ● 涉及到的邏輯以及說明也只是簡單介紹,主要當做筆記,瞭解過程而已

█ AndroidAutoSize和DialogFragment的適配

● 在android5.2上的效果圖(圖1圖3的高度沒有全屏,圖2高度爲全屏):
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述

● 在android9.0上的效果圖(圖2爲修改前,圖3圖4爲修改後的兩種方法):
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

● 博客和下載信息:(建議使用360瀏覽器,因爲我使用谷歌瀏覽器,圖片加載不了)
GitHub地址: https://github.com/JessYanCoding/AndroidAutoSize
GitHub中文README:https://github.com/JessYanCoding/AndroidAutoSize/blob/master/README-zh.md
作者博客:https://www.jianshu.com/p/4aa23d69d481
常見問題彙總:https://github.com/JessYanCoding/AndroidAutoSize/issues/13

● 最新更新記錄:  
2019年11月8日 更新 BaseApplication.java

█ 我的問題:

● 在OPPO A37m上(android 5.1)上顯示正常。在雷電模擬器上(android 5.1.1)上顯示正常
在這裏插入圖片描述

● 在紅米note7 pro上(android 9)上顯示不全
在這裏插入圖片描述

█ 解決方法:

● 方法1:修改主題和佈局:
代碼:

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setStyle(STYLE_NORMAL, R.style.AppThemeOK1);//適配不同屏幕大小
    }

佈局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#cc000000"
    android:gravity="right"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="1080dp"
        android:layout_height="match_parent"
        android:background="#f0f2f5"
        android:orientation="vertical">
        ●●●●●●界面內容●●●●●●
    </LinearLayout>
</LinearLayout>

● 方法2:修改Dialog的尺寸大小並控制靠右顯示:
代碼:

    @Override
    public void onStart() {
        super.onStart();
        Window window = getDialog().getWindow();
        WindowManager.LayoutParams params = window.getAttributes();
        params.gravity = Gravity.RIGHT;
        DisplayMetrics dm = new DisplayMetrics();
        getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
        window.setLayout(dm.widthPixels * 1080 / 1440, ViewGroup.LayoutParams.MATCH_PARENT);
        window.setAttributes(params);
        window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
    }

佈局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"-----match_parent或者1080dp效果一樣
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="1080dp"
        android:layout_height="match_parent"
        android:background="#f0f2f5"
        android:orientation="vertical">
        ●●●●●●界面內容●●●●●●
    </LinearLayout>
</LinearLayout>

● 方法2的補充:發現對話框高度即使設置爲MATCH_PARENT,但是還是高度沒有全屏,那麼久可以設置主題來修改:(提交的代碼裏面,這句目前是屏蔽掉,測試時可以直接開啓即可)
代碼:

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setStyle(STYLE_NORMAL, R.style.AppThemeOK2);//適配不同屏幕大小
    }

█ 總結:

- 
 ● 本demo的知識點:

 1.AndroidAutoSize 的使用(今日頭條屏幕適配方案);
 2.DialogFragment 的使用;
 3.DialogFragment 的適配(在1440*900的寬度上面顯示1080*900的對話框,並適配不同屏幕);
 4.在android5.1上面都是正常的,在android9.0上面會出現兼容問題(顯示不全);
 本代碼爲java版本,帶有V7版和androidx版,帶有apk,帶有截圖;

● 如何根據設計圖創建預覽?(以適配 1080 x 1920px 爲例)
在這裏插入圖片描述
 那麼如果要創建一個 1280 x 700px,就是:
在這裏插入圖片描述
在這裏插入圖片描述
 ● 顯示效果(可以全部展示起來,但是設置的屏幕還是偏大了):
在這裏插入圖片描述

● 完整代碼下載:
https://download.csdn.net/download/ljb568838953/12092196

█ 補充(2020年01月14日):

● 在適配過程中,遇到如下問題(前面兩行可以對齊,後面幾行沒有對齊):
在這裏插入圖片描述

● 問題:代碼實現是AppCompatActivity、Fragment和RecyclerView實現的,在初始化時RecyclerView顯示正常,當notifyDataSetChanged()後,新增的行就不對齊,整體向右便宜。

● 原因:AppCompatActivity和Fragment的總寬度設置不同導致的,AppCompatActivity的總寬度爲1440dp,Fragment的總寬度爲1280dp,所以使得notifyDataSetChanged()後,新增的行間距變大,字體變粗。

█ 相關資料:

● 1.今日頭條屏幕適配方案終極版,JessYanCoding/AndroidAutoSize
 ● 2.Android屏幕適配實例教程「今日頭條,AutoSize」AndroidAutoSize
 ● 3.AndroidAutoSize-中文說明
 ● 4.今日頭條屏幕適配方案終極版正式發佈!
 ● 5.JessYan: 今日頭條屏幕適配方案常見問題彙總,提問前必看! 
 ● 6.Android Res下的values-sw360dp,values-sw480dp,values-swxxxdp到底是什麼東西 
 ● 7.主流機型Device Metrics 
 ● 8.2018-08-20 騷年你的屏幕適配方式該升級了!-今日頭條適配方案-JessYan 
 ● 9.2018-12-18 Android 屏幕適配終結者(如何根據設計圖創建預覽?) 
 ● 10. 2018-08-15 Android 目前穩定高效的UI適配方案 
 ● 11. 2017-06-20 Fragment 與DialogFragment 相互之間傳遞數據 
轉載請註明出處:

https://blog.csdn.net/ljb568838953/article/details/103906449

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章