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

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

相关文章

最好用的WPF加载动画功能

《最好用的WPF加载动画功能》当开发应用程序时,提供良好的用户体验(UX)是至关重要的,加载动画作为一种有效的沟通工具,它不仅能告知用户系统正在工作,还能够通过视觉上的吸引力来增强整体用户体验,本文给... 目录前言需求分析高级用法综合案例总结最后前言当开发应用程序时,提供良好的用户体验(UX)是至关重要

无线路由器哪个品牌好用信号强? 口碑最好的三个路由器大比拼

《无线路由器哪个品牌好用信号强?口碑最好的三个路由器大比拼》不同品牌在信号覆盖、稳定性和易用性等方面各有特色,如何在众多选择中找到最适合自己的那款无线路由器呢?今天推荐三款路由器让你的网速起飞... 今天我们来聊聊那些让网速飞起来的路由器。在这个信息爆炸的时代,一个好路由器简直就是家庭网编程络的心脏。无论你

Java解析JSON的六种方案

《Java解析JSON的六种方案》这篇文章介绍了6种JSON解析方案,包括Jackson、Gson、FastJSON、JsonPath、、手动解析,分别阐述了它们的功能特点、代码示例、高级功能、优缺点... 目录前言1. 使用 Jackson:业界标配功能特点代码示例高级功能优缺点2. 使用 Gson:轻量

Redis KEYS查询大批量数据替代方案

《RedisKEYS查询大批量数据替代方案》在使用Redis时,KEYS命令虽然简单直接,但其全表扫描的特性在处理大规模数据时会导致性能问题,甚至可能阻塞Redis服务,本文将介绍SCAN命令、有序... 目录前言KEYS命令问题背景替代方案1.使用 SCAN 命令2. 使用有序集合(Sorted Set)

MyBatis延迟加载的处理方案

《MyBatis延迟加载的处理方案》MyBatis支持延迟加载(LazyLoading),允许在需要数据时才从数据库加载,而不是在查询结果第一次返回时就立即加载所有数据,延迟加载的核心思想是,将关联对... 目录MyBATis如何处理延迟加载?延迟加载的原理1. 开启延迟加载2. 延迟加载的配置2.1 使用

Android WebView的加载超时处理方案

《AndroidWebView的加载超时处理方案》在Android开发中,WebView是一个常用的组件,用于在应用中嵌入网页,然而,当网络状况不佳或页面加载过慢时,用户可能会遇到加载超时的问题,本... 目录引言一、WebView加载超时的原因二、加载超时处理方案1. 使用Handler和Timer进行超

鸿蒙开发搭建flutter适配的开发环境

《鸿蒙开发搭建flutter适配的开发环境》文章详细介绍了在Windows系统上如何创建和运行鸿蒙Flutter项目,包括使用flutterdoctor检测环境、创建项目、编译HAP包以及在真机上运... 目录环境搭建创建运行项目打包项目总结环境搭建1.安装 DevEco Studio NEXT IDE

无人叉车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,导致链接无法访问