标签:AutoSize density int 适配 metric 屏幕 dp
Android屏幕适配(二):AutoSize今日头条屏幕适配方案
AutoSize是今日头条使用的屏幕适配方案。
原理:调用Android API,根据设备某一维度(宽或高)的真实长度(单位是px)与这一维度在UI设计图上的dp值之间的关系,重新计算density来实现。
优点:1.支持以宽或者高任意一个维度去适配,保持该维度上和设计图一致;
2.支持dp和sp单位,控制迁移成本到最小。
下面是集成方法:
1.添加gradle配置代码:
implementation 'me.jessyan:autosize:1.1.2'
2. 添加AndroidManifest配置,填写基准设计尺寸(单位为dp):
<manifest>
<application>
...
<meta-data
android:name="design_width_in_dp"
android:value="360"/>
<meta-data
android:name="design_height_in_dp"
android:value="640"/>
...
</application>
</manifest>
*3.如果UI给出的尺寸跟基准尺寸不一样,可以通过实现CustomAdapt进行适配;
4.1如果该页面不需要进行适配,可以通过implements CancelAdapt 取消适配。
下面是获取屏幕尺寸的方法:
private void getScreenSize(){
//获取屏幕分辨率
DisplayMetrics metric=new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
int width=metric.widthPixels; // 宽度(PX)
int height=metric.heightPixels; // 高度(PX)
float density=metric.density; // 密度(0.75 / 1.0 / 1.5)
int densityDpi=metric.densityDpi; // 密度DPI(120 / 160 / 240)
//屏幕宽度算法:屏幕宽度(像素)/屏幕密度
int screenWidth = (int) (width/density);//屏幕宽度(dp)
int screenHeight = (int)(height/density);//屏幕高度(dp)
String a = "宽度:" + width + " 高度:" + height + " 密度:" + density + " 密度DPI:" + densityDpi
+ "\r\n屏幕dp宽度:" + screenWidth + " 屏幕dp高度:" + screenHeight;
Toast.makeText(MainActivity.this, a, Toast.LENGTH_LONG).show();
}
标签:AutoSize,density,int,适配,metric,屏幕,dp 来源: https://blog.csdn.net/weixin_42574892/article/details/106135700
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。