【安卓学习之第三方库】 AndroidAutoSiz学习:DialogFragment的适配

【安卓学习之第三方库】 AndroidAutoSiz学习:DialogFragment的适配
█ 相关文章:

- 
 ● 【安卓学习之第三方库】BasePopup(PopupWindow)进行二次封装
 ● 【安卓学习之第三方库】 AndroidAutoSiz学习:DialogFragment的适配

█ 读前说明:

- 
 ● 本文通过学习别人写demo,学习一些课件,参考一些博客,’学习相关知识,如果涉及侵权请告知
 ● 本文只简单罗列相关的代码实现过程
 ● 涉及到的逻辑以及说明也只是简单介绍,主要当做笔记,了解过程而已  
 ● 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值