android-屏幕适配(一)

2024-09-01 06:08
文章标签 android 屏幕 适配

本文主要是介绍android-屏幕适配(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


此文是根据慕课网的android视频自主学习整理的,视频地址。

一.有关屏幕的重要概念
1.什么是屏幕尺寸、屏幕密度、屏幕像素密度?
a.

屏幕尺寸就是手机屏幕的对角线长度。
单位是英寸,1英寸 = 2.54厘米

b.

屏幕分辨率就是手机屏幕在横纵方向上的像素点数。
单位是px,1px = 1个像素点
一般以纵向像素横向像素,如1080 720

c.

屏幕像素密度就是指每英寸上的像素点数。
单位是dpi,即“dot per inch”的缩写
屏幕像素密度是由屏幕的尺寸和屏幕的分辨率来决定的
计算方法:拿华为荣耀3c来计算, 屏幕尺寸是5英寸,分辨率是1280*720
它的像素密度 = (1280^2 + 720^2)^(1/2) / 5 = 293.7

2.什么是dp、dip、sp、px?他们之间有什么关系?

a. dp和dpi是一回事,名字不一样而已,为了和sp统一,现在多用sp。dpi上面已经解释过了,就不用多解释了。
b. px是构成图像的最小单位
c. sp是字体大小的单位,与缩放无关的抽象像素。sp和dp很相似,单位一的区别就是,android系统允许用户自定义文字的大小(小,正常,打,超大等等),当文字尺寸是正常的时候,1sp=1dp=0.00626英寸,而当文字尺寸是大或者超大的时候,1sp>1dp=0.00625英寸。

3.什么是mdpi、hdpi、xdpi、xxdpi?如何计算和区分?

它们都是表示像素密度。

名称像素密度范围
mdpi120-160dpi
hdpi160-240dpi
xhdpi240-320dpi
xxdpi320-480dpi
xxxdpi480-640dpi
二.怎么适配屏幕
1.支持各种屏幕尺寸的方法

a.使用wrap_content、match_parent、weight
warp_content:就是适配内容的大小
match_parent:就是充满父控件
weight:这个属性有点麻烦,比较难理解,我们举个例子看一下。

<!-- 我简单表示一下 就不写全了 -->
<Linearlayout><Button android:id="@+id/button1"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_weight="1"/><Button android:id="@+id/button2"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_weight="2"/></Linearlayout>

假如有以上布局,实际长度 = layout设置的长度+剩余的长度*weight权重
屏幕长度为L,则button1和button2的layout设置值都是L,button1的剩余长度就是总长度L-button1的长度-button2的长度,即为L-2L
L1 = L + (L - 2L) * 1/3 = 2/3L
L2 = L + (L - 2L) * 2/3 = 1/3L
这样算出来发现和我们所设置的权重值是相反的,所以我们一般都是设置为0dp
这样算的话是这样的
L1 = L * 1/3 = 1/3L
L2 = L * 2/3 = 2/3L
b.使用相符布局,禁用绝对布局
c.使用限定符-large
就是同一个布局文件同时适配不同大小的屏幕尺寸。
主要是来适配平板的。
d.使用自动拉伸位图

2.支持各种屏幕密度
3.实施自适应用户界面流程

这篇关于android-屏幕适配(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Android协程高级用法大全

《Android协程高级用法大全》这篇文章给大家介绍Android协程高级用法大全,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友跟随小编一起学习吧... 目录1️⃣ 协程作用域(CoroutineScope)与生命周期绑定Activity/Fragment 中手

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

Android Paging 分页加载库使用实践

《AndroidPaging分页加载库使用实践》AndroidPaging库是Jetpack组件的一部分,它提供了一套完整的解决方案来处理大型数据集的分页加载,本文将深入探讨Paging库... 目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3.

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

Android ClassLoader加载机制详解

《AndroidClassLoader加载机制详解》Android的ClassLoader负责加载.dex文件,基于双亲委派模型,支持热修复和插件化,需注意类冲突、内存泄漏和兼容性问题,本文给大家介... 目录一、ClassLoader概述1.1 类加载的基本概念1.2 android与Java Class

Android DataBinding 与 MVVM使用详解

《AndroidDataBinding与MVVM使用详解》本文介绍AndroidDataBinding库,其通过绑定UI组件与数据源实现自动更新,支持双向绑定和逻辑运算,减少模板代码,结合MV... 目录一、DataBinding 核心概念二、配置与基础使用1. 启用 DataBinding 2. 基础布局

Android ViewBinding使用流程

《AndroidViewBinding使用流程》AndroidViewBinding是Jetpack组件,替代findViewById,提供类型安全、空安全和编译时检查,代码简洁且性能优化,相比Da... 目录一、核心概念二、ViewBinding优点三、使用流程1. 启用 ViewBinding (模块级

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

使用Python实现获取屏幕像素颜色值

《使用Python实现获取屏幕像素颜色值》这篇文章主要为大家详细介绍了如何使用Python实现获取屏幕像素颜色值,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、一个小工具,按住F10键,颜色值会跟着显示。完整代码import tkinter as tkimport pyau