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

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

相关文章

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过

Springboot3+将ID转为JSON字符串的详细配置方案

《Springboot3+将ID转为JSON字符串的详细配置方案》:本文主要介绍纯后端实现Long/BigIntegerID转为JSON字符串的详细配置方案,s基于SpringBoot3+和Spr... 目录1. 添加依赖2. 全局 Jackson 配置3. 精准控制(可选)4. OpenAPI (Spri

关于跨域无效的问题及解决(java后端方案)

《关于跨域无效的问题及解决(java后端方案)》:本文主要介绍关于跨域无效的问题及解决(java后端方案),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录通用后端跨域方法1、@CrossOrigin 注解2、springboot2.0 实现WebMvcConfig

在Java中将XLS转换为XLSX的实现方案

《在Java中将XLS转换为XLSX的实现方案》在本文中,我们将探讨传统ExcelXLS格式与现代XLSX格式的结构差异,并为Java开发者提供转换方案,通过了解底层原理、性能优势及实用工具,您将掌握... 目录为什么升级XLS到XLSX值得投入?实际转换过程解析推荐技术方案对比Apache POI实现编程

Java实现本地缓存的常用方案介绍

《Java实现本地缓存的常用方案介绍》本地缓存的代表技术主要有HashMap,GuavaCache,Caffeine和Encahche,这篇文章主要来和大家聊聊java利用这些技术分别实现本地缓存的方... 目录本地缓存实现方式HashMapConcurrentHashMapGuava CacheCaffe

无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案

《无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案》:本文主要介绍了无法启动此程序,详细内容请阅读本文,希望能对你有所帮助... 在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是"api-ms-win-core-path-l1-1-0.dll丢失

利用Python实现可回滚方案的示例代码

《利用Python实现可回滚方案的示例代码》很多项目翻车不是因为不会做,而是走错了方向却没法回头,技术选型失败的风险我们都清楚,但真正能提前规划“回滚方案”的人不多,本文从实际项目出发,教你如何用Py... 目录描述题解答案(核心思路)题解代码分析第一步:抽象缓存接口第二步:实现两个版本第三步:根据 Fea

SpringBoot实现接口数据加解密的三种实战方案

《SpringBoot实现接口数据加解密的三种实战方案》在金融支付、用户隐私信息传输等场景中,接口数据若以明文传输,极易被中间人攻击窃取,SpringBoot提供了多种优雅的加解密实现方案,本文将从原... 目录一、为什么需要接口数据加解密?二、核心加解密算法选择1. 对称加密(AES)2. 非对称加密(R

MySQL精准控制Binlog日志数量的三种方案

《MySQL精准控制Binlog日志数量的三种方案》作为数据库管理员,你是否经常为服务器磁盘爆满而抓狂?Binlog就像数据库的“黑匣子”,默默记录着每一次数据变动,但若放任不管,几天内这些日志文件就... 目录 一招修改配置文件:永久生效的控制术1.定位my.cnf文件2.添加核心参数不重启热更新:高手应

MySQL中like模糊查询的优化方案

《MySQL中like模糊查询的优化方案》在MySQL中,like模糊查询是一种常用的查询方式,但在某些情况下可能会导致性能问题,本文将介绍八种优化MySQL中like模糊查询的方法,需要的朋友可以参... 目录1. 避免以通配符开头的查询2. 使用全文索引(Full-text Index)3. 使用前缀索