个人觉得目前安卓最好最靠谱的适配方案

2024-02-11 04:58

本文主要是介绍个人觉得目前安卓最好最靠谱的适配方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

首先我们来理解下适配的意思:就是在不同的情况下我们做一件事看到的效果是一样的!
那我今天就来说说按比例适配
动态插入布局的话你需要计算px 这是我自己封装的工具类可以参考

public class PropertionUtil {public float getmargin_left(int screenwidth,float scale,float width){float v = screenwidth  / scale / 375 * width;Log.d("向左移动多少"+screenwidth,v+"");return v;}public float getmargin_top(int screenheight,float scale,float height){float v = screenheight / scale / 812 * height;Log.d("向下移动多少",v+"");return v;}}

我们有了这个工具类就可以计算出控件的具体位置

 next_btn = new Button(getContext());float next_btntop =  propertionUtil.getmargin_left(widthPixels, scale, 235);int next_leftafter = Dp2Px(getContext(), next_btnleft);

这里有的人就要问了这都是什么参数别急我来一个一个解释.
1.widthPixels

// 手机屏幕长宽DisplayMetrics dm = getContext().getApplicationContext().getResources().getDisplayMetrics();widthPixels = dm.widthPixels;

2.scale

// 手机比例
scale = getResources().getDisplayMetrics().density;

3.UI设计图具体dp

我们继续往下 很多人写到这得时候发现为啥子还没有不写精准了?
那我来告诉你先去看看PX和DP的差别(工具类可以参考)

/*** dp转换成px,代码写的是像素,而XML中写的是单位密度* @param context* @param dp* @return*/public static int Dp2Px(Context context, float dp) {final float scale = context.getResources().getDisplayMetrics().density;return (int) (dp * scale + 0.5f);}/*** px转换成dp,代码写的是像素,而XML中(dp)写的是单位密度* @param context* @param px* @return*/public static int Px2Dp(Context context, float px) {final float scale = context.getResources().getDisplayMetrics().density;return (int) (px / scale + 0.5f);}

接下来自由发挥

 RelativeLayout.LayoutParams next_layoutParams = getLayout(next_widthafter, next_heightafter);next_layoutParams.setMargins(next_leftafter,next_topafter,0,0);next_btn.setId(R.id.nextpage);next_btn.setBackgroundColor(Color.parseColor("#00000000"));next_btn.setTextAppearance(getContext(),R.style.lucency);next_btn.setLayoutParams(next_layoutParams);

这里我们的适配就结束了!

这篇关于个人觉得目前安卓最好最靠谱的适配方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/698887

相关文章

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

高效+灵活,万博智云全球发布AWS无代理跨云容灾方案!

摘要 近日,万博智云推出了基于AWS的无代理跨云容灾解决方案,并与拉丁美洲,中东,亚洲的合作伙伴面向全球开展了联合发布。这一方案以AWS应用环境为基础,将HyperBDR平台的高效、灵活和成本效益优势与无代理功能相结合,为全球企业带来实现了更便捷、经济的数据保护。 一、全球联合发布 9月2日,万博智云CEO Michael Wong在线上平台发布AWS无代理跨云容灾解决方案的阐述视频,介绍了

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

JavaFX应用更新检测功能(在线自动更新方案)

JavaFX开发的桌面应用属于C端,一般来说需要版本检测和自动更新功能,这里记录一下一种版本检测和自动更新的方法。 1. 整体方案 JavaFX.应用版本检测、自动更新主要涉及一下步骤: 读取本地应用版本拉取远程版本并比较两个版本如果需要升级,那么拉取更新历史弹出升级控制窗口用户选择升级时,拉取升级包解压,重启应用用户选择忽略时,本地版本标志为忽略版本用户选择取消时,隐藏升级控制窗口 2.

如何选择SDR无线图传方案

在开源软件定义无线电(SDR)领域,有几个项目提供了无线图传的解决方案。以下是一些开源SDR无线图传方案: 1. **OpenHD**:这是一个远程高清数字图像传输的开源解决方案,它使用SDR技术来实现高清视频的无线传输。OpenHD项目提供了一个完整的工具链,包括发射器和接收器的硬件设计以及相应的软件。 2. **USRP(Universal Software Radio Periphera

HomeBank:开源免费的个人财务管理软件

在个人财务管理领域,找到一个既免费又开源的解决方案并非易事。HomeBank 正是这样一个项目,它不仅提供了强大的功能,还拥有一个活跃的社区,不断推动其发展和完善。 开源免费:HomeBank 是一个完全开源的项目,用户可以自由地使用、修改和分发。用户友好的界面:提供直观的图形用户界面,使得非技术用户也能轻松上手。数据导入支持:支持从 Quicken、Microsoft Money

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法   消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法 [转载]原地址:http://blog.csdn.net/x605940745/article/details/17911115 消除SDK更新时的“

MyBatis 切换不同的类型数据库方案

下属案例例当前结合SpringBoot 配置进行讲解。 背景: 实现一个工程里面在部署阶段支持切换不同类型数据库支持。 方案一 数据源配置 关键代码(是什么数据库,该怎么配就怎么配) spring:datasource:name: test# 使用druid数据源type: com.alibaba.druid.pool.DruidDataSource# @需要修改 数据库连接及驱动u

分布式系统的个人理解小结

分布式系统:分的微小服务,以小而独立的业务为单位,形成子系统。 然后分布式系统中需要有统一的调用,形成大的聚合服务。 同时,微服务群,需要有交流(通讯,注册中心,同步,异步),有管理(监控,调度)。 对外服务,需要有控制的对外开发,安全网关。