AndroidAutoSize
AndroidAutoSize copied to clipboard
能否直接以长边或短边作为适配条件,而不是宽高?
情况是这样,我司的app长期驻留在后台,界面上只有悬浮窗,然后点开悬浮窗可能会启动一个横屏或者竖屏的activity。 现在问题在于,我的悬浮球和activity都有异常变大的情况,框架的原理已经很了解了,我觉得从逻辑上也没什么问题,我也没有做错什么,但是很明显的看得到出现异常变大的情况时候,变大的基本上就是我基于短边做360dp的适配时候,被框架设置成了长边总共为360dp。 异常变大是偶然现象,复现条件目前不清楚
所以总结有两个问题: 1:能不能不以Activity作为最基本的单位,有很多在后台的app使用悬浮球,界面上没有自己的Activity 2:能不能直接基于屏幕的长边或短边做适配,而不是宽和高?这样对于横竖屏切换较多的app更为方便。实际上很多时候我不管选择宽还是选择高来作为BaseOn,我选择的其实就是屏幕短的那条边
简单地说来就是能否有一个类似baseOnWidth的方法,叫做baseOnShortSize,直接就是以短边总尺寸为设计尺寸(比如360单位)来做适配,我觉得这个可能也会很符合开发者的需求
Activity 和 Fragment 作为最基本的单位,只是框架为了使用者更好理解,而抽象的概念,因为框架默认的逻辑是在 Activity onCreate 时设置一次 Density,Activity 的 UI 内容也会在 onCreate 后使用设置后的最新 Density 计算 UI 尺寸,呈现内容,所以这是 Activity 作为基本单位的缘由,但这只是默认实现,并不意味着框架把这个地方限制死了
如果你自行控制 setDensity 的时机,也可以自定义一个控制单位,比如你在某个 View 显示前,自己 setDensity,也就将控制粒度细化到了这个 View 上,甚至你可以设置一个定时器,在某一个时间 setDensity,然后在刷新某些自定义 View,屏幕适配逻辑完全可以按照你的业务自由实现,没有任何限制,并不局限于 Activity
以高宽作为基准适配,也是框架自己抽象的概念,为了方便使用者快速使用框架,使用了自己的一套屏幕尺寸获取逻辑以及适配逻辑,你可以不这样做完全自定义,你自己可以自己将短边数据传入 setScreenWidth 或 setDesignWidthInDp,然后根据自己的逻辑更新这些数据,或者你觉得框架的适配逻辑不符合自己的业务,你可以不启动整个框架只是将里面的 AutoSize 作为工具类使用,自己自定义适配逻辑,原理是一样的,只是传的数据不一样
当然框架也提供了一些入口,onAdaptListener 和 AutoAdaptStrategy,为使用者提供更强的扩展性,可以结合方法中的注释和自己的业务做出相应的选择
根据以往的 issues,你的问题,自己重新 设置下屏幕宽高 就可以了