首页 > 编程知识 正文

adb修改屏幕分辨率,1dp等于多少px

时间:2023-05-04 23:46:26 阅读:14637 作者:4891

鸿洋提交的屏幕符合AndroidAutoLayout,目前已停止维护,不推荐

今日顶级配型方案AndroidAutoSize框架链接: https://www.Jian Shu.com/p/4a 23 d 69 d 48和关于此方案的文章: https://www.Jian Shu.com

我做了简单的整理,让自己能更好地掌握。 感谢上帝为我们做出了贡献。

安卓授权与安卓授权的区别:

AndroidAutoLayout只能使用px作为布局单位,而AndroidAutoSize则相反,布局支持所有单位dp、sp、pt、in和mm,但仅支持px 也就是说,AndroidAutoSize和AndroidAutoLayout互不影响,所以使用AndroidAutoLayout的旧项目也可以放心地部署AndroidAutoSize,慢慢地进行屏幕拟合

这里主要介绍今天标题的适合方案。

AndroidAutoSize在使用上非常简单,只需填写设计图大小的步骤即可访问项目,而AndroidAutoSize有两种类型的光线:主单位(dp,sp )和副单位(pt,in,mm )

主单元:以dp、sp为单位进行布局,入侵性最低,影响其他三方库页面、三方库控件和系统控件的布局效果,但AndroidAutoSize也影响此特性

子单元:以pt、in、mm为单位布局,入侵性强,老项目支持好,不影响其他三方库页面、三方库控件和系统控件的布局效果

一、主要单位使用方法:

主单元的Demo在Demo上

使AndroidAutoSize库依赖于项目后,只要在app的AndroidManifest.xml中输入设计图的大小,而不需要进行其他所需的配置,AndroidAutoSize就会自动运行,如下所示:

使用主单位时,design_width_in_dp和design_height_in_dp的单位必须为dp。 如果设计师给的设计图只列出了px尺寸,请自行将px尺寸转换为dp尺寸。

如果您只是想使用AndroidAutoSize的基本功能,AndroidAutoSize的使用方法到此结束。 但是,作为一个全面的屏幕适配框架,在保证基本功能简易性的同时,还必须能够在框架内解决复杂的需求。 所有全局配置选项都在Demo中介绍,每个API也有详细的注释。 在这里

自定义活动

AndroidManifest.xml中的工程图大小是整个项目的全局工程图大小,但如果某些Activity页面出于某种原因由设计者单独打印。 如果此页面上的工程图大小与AndroidManifest.xml中的工程图大小不同,请使用此页面上的Activity实现自定义adapt界面来满足您的需要。 CustomAdapt界面的第一种方法允许您调整当前页面的设计图大小,第二种方法允许您切换当前页面的拟合标准。

publicclasscustomadaptactivityextendsappcompatactivityimplementscustomadapt {

//*

*是否按比例拟合宽度(仅相对于宽度和高度之一拟合,以确保即使在qxdjj比例不同的屏幕上也能正常拟合) )。

*

* @return {@code true}是根据宽度的拟合,{@code false}是根据高度的拟合

*/

@Override

公共布尔型isbaseonwidth (

返回假;

}

//*

*这里使用iPhone的设计图。 iPhone的设计图尺寸为750px * 1334px,高度换算为dp为667(1334px/2=667DP )

*

*返回设计图的设计尺寸、单位dp

* {@link #getSizeInDp}必须与{@link#isbaseonwidth(} )配合使用。 规则是:

*{@link#isbaseonwidth(}应该返回{@code true},{@link #getSizeInDp}返回设计图的总宽度

>

* 如果 {@link #isBaseOnWidth()} 返回 {@code false}, {@link #getSizeInDp} 则应该返回设计图的总高度

* 如果您不需要自定义设计图上的设计尺寸, 想继续使用在 AndroidManifest 中填写的设计图尺寸, {@link #getSizeInDp} 则返回 {@code 0}

*

* @return 设计图上的设计尺寸, 单位 dp

*/

@Override

public float getSizeInDp() {

return 667;

}

}

如果某个 Activity 想放弃适配,让这个 Activity 实现 CancelAdapt 接口即可,比如修改 density 影响到了老项目中的某些 Activity 页面的布局效果,这时就可以让这个 Activity 实现 CancelAdapt 接口

public class CancelAdaptActivity extends AppCompatActivity implements CancelAdapt {

}

自定义 Fragment

Fragment 的自定义方式和 Activity 是一样的,只不过在使用前需要先在 App 初始化(Apllication)时开启对 Fragment 的支持

AutoSizeConfig.getInstance().setCustomFragment(true);

实现 CustomAdapt

public class CustomAdaptFragment extends Fragment implements CustomAdapt {

@Override

public boolean isBaseOnWidth() {

return false;

}

@Override

public float getSizeInDp() {

return 667;

}

}

实现 CancelAdapt

public class CancelAdaptFragment extends Fragment implements CancelAdapt {

}

适配三方库页面:

在使用主单位时可以使用 ExternalAdaptManager 来实现在不修改三方库源码的情况下,适配三方库的所有页面 (Activity、Fragment),这个需求 AndroidAutoSize 也已经为你考虑好了,当然不会让你将三方库下载到本地然后改源码!

通过 ExternalAdaptManager.addExternalAdaptInfoOfActivity(Class, ExternalAdaptInfo) 将需要自定义的类和自定义适配参数添加进方法即可替代实现 CustomAdapt 的方式,这里 展示了使用方式,以及详细的注释

二、副单位的使用:

副单位 的 Demo 在 demo-subunits

基本使用

先在 app 的 AndroidManifest.xml 中填写上设计图尺寸,design_width_in_dp 和 design_height_in_dp 的单位,可以直接填写设计图的 px 尺寸,这是 副单位的 特性之一,可以帮助大家提高开发效率

由于 AndroidAutoSize 提供了 pt、in、mm 三种类型的 副单位 供使用者选择,所以在使用 副单位 时,还需要在 APP 初始化时,通过 UnitsManager.setSupportSubunits(Subunits) 方法选择一个你喜欢的副单位,然后在布局文件中使用这个副单位进行布局,三种类型的副单位,其实效果都是一样,大家按喜欢的名字选择即可

由于使用副单位是为了彻底屏蔽修改 density 所造成的对三方库页面、三方库控件以及系统控件的布局效果的影响,所以在使用副单位时建议调用 UnitsManager.setSupportDP(false) 和 UnitsManager.setSupportSP(false),关闭 AndroidAutoSize 对 dp 和 sp 的支持

UnitsManager 的详细使用方法,在 demo-subunits 中都有展示,注释也十分详细

三、布局实时预览:

在开发阶段布局时的实时预览是一个很重要的环节,很多情况下 Android Studio 提供的默认预览设备并不能完全展示我们的设计图,所以我们就需要自己创建模拟设备,dp、pt、in、mm 这四种单位的模拟设备创建方法请看 这里

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。