-
Notifications
You must be signed in to change notification settings - Fork 2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
JessYan: 意见收集 😘,请进 QQ 群: 455850365 #118
Comments
设计标注的px,我们要转换成dp,是吧 |
@q454216935 AndroidAutoSize 在版本 v0.9.1 之后,新增了副单位,区别与传统的今日头条方案,可以使用 pt、in、mm 这三种冷门单位在 layout 文件中布局,这样不光可以直接填写设计图中的 px 尺寸,不需要再将 px 转化为 dp 外,还可以规避修改 DisplayMetrics#density 所造成的对于其他使用 dp 布局的系统控件或三方库控件的不良影响 |
那我们在AndroidManifest里面是写转换过的dp尺寸还是px呢 |
@q454216935 AndroidManifest 直接填 px 尺寸,在布局中也写 px 的尺寸,但是单位用副单位,详情看 demo-subunits ,注释写的很详细 |
谢谢,pt的话布局预览的时候看不到全部的,请问你是怎么预览的。0.0 |
@q454216935 按照 README 中的步骤,创建对应单位的模拟设备,布局中用什么单位就创建什么单位的模拟设备,不可能预览不了,所有单位的模拟设备我测试了无数遍,全部将 Preview 放大到 1000%,测得创建的所有单位的模拟设备预览时与设计图的误差都不超过 0.5 px |
设计标注为1080px * 1920px ,然后假设有一个高度为100px,宽度为200px,这个宽高的px怎么计算成dp呢 |
这个和Android MD控件兼容吗?之前用的弘扬的autolayout和MD控件不兼容,布局里单位写的px |
哈哈开个脑洞,如果刘海屏,水滴屏能直接适配就牛逼了~感谢Jess神开发如此低成本的适配框架 |
@kevinStrange 直接用上面留言提到的副单位,直接可以按照设计图的尺寸填写 |
@yutouxiansheng 和控件没有关系,只要将框架引入项目,所有控件都可以适配 |
可以写dp吗? |
你好,我用你的方法创建了副单位布局预览的设备,但是使用中发现一个问题,ui给的图标用wrap_content的话,会显示得非常小,很不方便。是不是用这个方法的话必须要硬编码图标的长和宽? |
不是,这个只是预览设备显示效果会变小,图片运行到实际设备不一定会小,为了让副单位布局的页面预览效果能够和设计图的显示效果一模一样,所以使用算法求出的预览设备的屏幕尺寸都是被放大了很多倍的,wrap_content 在放大很多倍的屏幕上显示效果变小在所难免,但并不影响实际的运行效果,因为实际设备的屏幕尺寸是正常 |
@JessYanCoding 嗯,在小的设备上,的确没什么违和感。但是在一些大的设备上,比如平板之类的,图标用wrap_content,其他控件都按照这种适配方案同比例放大了,就这个图标还是原来的大小,就很违和了。 |
@Leu-Z wrap_content 是按图片的实际大小来显示,在小屏显示正常,在大屏显示效果就很小不是很正常吗,因为图片实际大小是没变的,你要想这个图片也能和其他控件一样同比例放大,就给它标注尺寸,使用 wrap_content 框架是不会帮你同比例缩放的 |
嗯,所以我觉得为了更好的适配,图片还是标注尺寸为好(虽然很麻烦,可能还会出现放大模糊的问题),不然在某些设备上太违和了。 |
模糊是因为你没有在对应 drawable-xxx 文件夹中放入对应分辨率的图片,你放的图片只适配了小屏幕手机,你却强制要让这个低分辨率的图片放大 N 倍,去适配平板,能不模糊吗,说到底是你自己图片分辨率就没给够,如果你让设计师给你多切几个不同分辨率的图片,来适应不同分辨率的屏幕,你直接用 wrap_content 也可以适配,这是你自己需要做的了 |
谢谢大神指教! |
@kevinStrange ... 兄弟,数学该去补补了,这些都是数学符号,^2 是平方的意思,sqrt 是开根的意思 |
@fazhongxu 描述的不清晰,没听懂你表达的内容,最好图文并茂详细描述 |
你这样描述后我就清楚了,也就马上定位问题了,因为这个框架的自动运行机制是在每个 Activity 的 onCreate 时主动适配当前页面,但是你没打开 App,Activity 的 onCreate 就不会调用,所以如果在你不打开 App 的情况下,就需要在输入法弹出前主动调用 AutoSize#autoConvertDensityOfGlobal 手动触发屏幕适配, |
@fazhongxu |
@fazhongxu 行,空了加上 |
那为什么布局里不直接填写px,而要填写mm、pt或in? |
@liyujiang-gzu 这个我不想回答了,是这个方案的基础,去看我之前写的今日头条方案的文章,里面都有介绍 |
大佬,副单位要如何设置,兼容适配之前代码写的dp? |
@Jeffery336699 看 demo-subunits 副单位的所有用法在里面都有展示,并且有几倍于代码的超详细注释 |
switch (AutoSizeConfig.getInstance().getUnitsManager().getSupportSubunits()) { 调用cancelAdapt的时候getSupportSubunits里面的值并如果不是IN的话,初始化的xdpi 也会乘以一个倍数,这个就不是原来的值了吧,是不是这样的? |
您说的是 这个框架 wrap_content 是不会帮忙做适配的, 只有写死固定的值 比如 100dp 框架才会做适配吗 |
使用bugly的热更新代码后,AndroidAutoSize 失效,布局比例无法转换。能支持bugly热更新最好了! |
@chenkezhao 可能是多进程问题,#13 (comment) |
大神,我重新提问一下,我在第一个页面(SplashActivity)初始化了一些东西,接着跳入MainActivity,当我启动的时候,马上熄屏,接着再解锁,图标及其他layout全部变形了(包括非自定义控件),我在mainactivity和splashactivity都有重写getResources的方法 |
如何对高进行适配。这是我的配置 |
@tydqcjj 做不到,不是所有设备的屏幕高宽比都和你的设计图一样,除非你想让你的 View 变形,为什么说 AndroidAutoLayout 的设计有问题? |
能否做到自由切换适配方案。比如说有些activity需要适配宽,有些activity需要适配高,有些需要宽和高同时适配哪怕view变形也行。然后通过一个接口去自定义。 |
@tydqcjj 单独适配宽和单独适配高是本框架的基础功能,而且每个页面都可以灵活切换,自己看看文档和 Demo,里面有用法,想同时适配宽和高,建议使用 AndroidAutoLayout,本框架不会支持这种会导致 View 变形的需求。 |
@JessYanCoding 适配dialog 是需要每次show之前都调用AutoSize#autoConvertDensity() ? |
@JessYanCoding 还有个问题就是在getResources() 这个方法被调用太多次了,特别是有列表的页面,不停被调用 这样会不会影响性能? |
@liaohuyu 最终解决方案就是利用 getResources() 会被调用多次的原理,以增加 density 的稳定性,并且 v1.1.2 已经优化了适配时的性能,所以你考虑的问题已经最大限度的优化了,我都是用上千次的调用测试的,也就几十微秒。 |
|
@FOnlyJack 不用,默认为 true |
您好 ,使用您的适配框架过程中 在使用dialog或者popwindow都会出现偏移的问题,dialog一直靠右对齐,请问有解决方案么? |
This comment has been minimized.
This comment has been minimized.
@656025633 翻之前的 issues |
使用 AutoSize做屏幕适配后, Activity一段时间后会执行自动 stop(方法),查看log 显示 AndroidAutoSize: initScaledDensity = 3.0 on ConfigurationChanged,导致程序退出,请问这个问题是否遇到过,是不是我的某项配置有问题? 谢谢! |
@MrFuShuai 框架自动执行 stop 方法,是不可能的,框架自身就没调用过 stop 方法,这个方法是提供给开发者使用的,而且还必须传入当前 Activity,程序退出是什么意思?是奔溃?奔溃的 Exception 是什么,原因是什么?这些不提供没法给出答案 |
预览那里没法选择自创的模拟器啊。windows,android studio3.5,记得以前版本可以来着,咋整 |
如果以宽度为基准,那么高度如何做到跟设计图一样呢,我在小米5x手机上获得屏幕宽高是是标准的360x640dp ,然后我设置以宽在布局中的空间高度600dp还是填充漫屏幕的,求指教 |
@CoolChimpanzee 答案是,当以宽为基准是,没法做到高度纵向拉伸填充满屏幕并保持和设计图一样,当以高度为基准时,则宽度也没法做到,如果可以实现以上需求的话,那区不区分区分高宽都无所谓了,何必还多增加一个条件变量,让你选择是以宽为基准还是以高为基准呢。https://mp.weixin.qq.com/s/SDHL26XgIjjlK-RLd_SSCw |
我测试在小米mix2上,以高度为基准也不能占满屏幕高度, |
setPrivateFontScale使用后如何刷新呢,目前需要重启app才能刷新字体大小 |
华为平板启动activity闪退 java.lang.IllegalArgumentException: lightY must be finite, given=NaN |
找不到资源id闪退 Caused by: android.content.res.Resources$NotFoundException: Drawable com.amigaga.gagabot:drawable/edit_text_background with resource ID #0x7f0600e7 |
注释掉使用的代码,其他ID又报错,没法用 |
@yyc2413 重建所有Activity,或调用一次 setDensity 后重绘所有用到字体的 View |
我也遇到类似的情况了,请问是怎么解决的 |
你好,邮件已经收到,谢谢
|
如果您对 AndroidAutoSize 和 JessYan 有什么好的建议,都可以在下面留言以及讨论
The text was updated successfully, but these errors were encountered: