首页
学习
活动
专区
圈层
工具
发布

Android中图片大小和屏幕密度的关系讲解

Android手机适配是非常让人头疼的一件事,尤其是图片,android为了做到是适配提供了很多文件夹来存放不同大小的图片,比如:drawable-ldpi、drawable-mdpi、drawable-hdpi...、drawable-xhdpi、drawable-xxhdpi等,其实同一张内容的图片放到上面不同的文件夹中是有区别的,可能你会问:如果在上述各个文件夹中都放置一张内容相同,尺寸不同的图片,那么系统会选择加载哪一张图片呢...例如:图片大小为80×80像素。这样处理的问题在于,如果在一个每英寸点数(dpi)更高的新显示器上运行该程序,则用户界面会显得很小。在有些情况下,用户界面可能会小到难以看清内容。...: 屏幕密度为320的手机设备 xxhdpi:屏幕密度为480的手机设备 ?...图片放在drawable中,等同于放在drawable-mdpi中,原因为:drawable目录不具有屏幕密度特性,所以采用基准值,即mdpi 图片放在某个特定drawable中,比如drawable-hdpi

1.4K60

Android中的像素密度,屏幕密度,屏幕大小,分辨率,ldpi,mdpi,xhdpi,xxhdpi

大家好,又见面了,我是你们的朋友全栈君。 Android开发为适配不同屏幕需要在资源文件中添加多套图片或者多套布局文件,这篇文章讲解多套图片。...1屏幕大小 智能手机普及,屏幕也随之越来越大,从经典的iPhone 4的3.5英寸到iphone XR 6英寸多,Android手机也逐渐进入了6.x英寸行列。...屏幕大小定义:手机对角线的物理尺寸,以英寸(inch)为单位,一英寸大约2.54厘米。...,Android中获取的屏幕密度,不是对应屏幕真实的屏幕密度值,类似1280720和1290730都会被认为是720p的手机,屏幕密度都是2.0。...dp与px的转换 系统密度为160dpi的中密度手机屏幕为基准屏幕,即320×480的手机屏幕中,1dp=1px。

7.6K42
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    NativeScript和React Native对比

    UI组件是原生的,UI事件由在JavaScript代码中声明的原生处理程序处理,如View.OnClickListener,UIControl.addTarget。      ...,它的 rootView 继承自 UIView,所以可以在部分 View 是使用,很方便混着,不需要重写整个 app,而且混用的时候还需要显示地将 API 暴露给 JavaScript NativeScript...中虽然已经支持了很多组件,比如说tabview、srcollview、button,但是提供的组件方法、属性过少,整个框架还不是很丰满。...但是目前NativeScript里面Button是没办法设置背景的,所以要想实现这个按钮,只能使用图片,所以上面那个按钮在NativeScript中XML布局里面的代码是这样的: GridLayout...row="0" col="0" cssClass="crossBtn">    GridLayout

    4.5K10

    【Android 应用开发】AndroidUI设计之 布局管理器 - 详细解析布局实现

    布局管理器都是以ViewGroup为基类派生出来的; 使用布局管理器可以适配不同手机屏幕的分辨率,尺寸大小; 布局管理器之间的继承关系 :  在上面的UML图中可以看出, 绝对布局 帧布局 网格布局...组件增加行 : 如果直接向TableLayout中添加组件, 就相当于直接添加了一行; 列宽 : TableLayout中, 列的宽度由该列最宽的单元格决定, 整个表格的宽度默认充满父容器本身; 2....绝对布局介绍  绝对布局特点 : 在绝对布局中,组件位置通过x, y坐标来控制, 布局容器不再管理组件位置, 大小, 这些都可以自定义;  绝对布局使用情况 : 绝对布局不能适配不同的分辨率, 屏幕大小...1dp = 1px, 随着屏幕密度改变, dp 与 px 换算会发生改变; sp : scale pixels, 比例像素, 处理字体的大小, 可以根据用户字体大小进行缩放; in : 英寸, 标准长度单位...屏幕密度与大小 手机屏幕密度分类 : 高 hdpi 240 , 中 mdpi 160, 小 ldpi 120, 在res下有对应密度的标签资源, 注意这些资源与屏幕大小无关; 手机屏幕大小分类 : 大屏幕

    3K40

    布局管理器

    Java语言中,提供了布局管理器类的对象 管理Component在Container中的布局,不必直接设置Component位置和大小 每个Container都有一个布局管理器对象,当容器需要对某个组件进行定位或判断其大小尺寸时...不同的布局管理器有不同的风格 FlowLayout布局管理器 FlowLayout是Panel类的默认布局管理器 FlowLayout布局管理器对组件逐行定位,行内从左到右,一行排满后换行 不改变组件大小...BorderLayout布局管理器 BorderLayout是Frame类的默认布局管理器 BorderLayout将整个容器的布局划分成 东(EAST) 西(WEST) 南(SOUTH) 北(NORTH...GridLayout布局管理器 GridLayout型布局管理器将空间划分成规则的矩形网格,每个单元格区域大小相等。...组件被添加到每个单元格中,先从左到右添满一行后换行,再从上到下 在GridLayout构造方法中制定分割的行数和列数 如:GridLayout(3,4) import java.awt.*; public

    1.2K10

    JAVA学习Swing章节流布局管理器简单学习

    ,流布局管理器在整个容器中 * 的布局正如其名,像流一样从左到右摆放组件,直到占据了这一行的所有空间,然后再向下移动一行。...* 默认情况下,组件在每一行上都是居中排列的,但是通过设置也可以更改组件在每一行上的排列位置 * * 2:FlowLayout类中具有三种构造方法 * alignment参数使用流布局管理器后组件在每一行的具体摆放位置...,并且整个组件占据了窗体的所有的空间 * * 3:容器调用Container类的add()方法添加组件时可以设置此组件在边界布局管理器中的区域 * 区域的控制可以由BorderLayout类中的成员变量来决定...)布局管理器将容器划分为网格,所以组件可以按行和列进行排列 * 在网格布局管理器中,每一个组件的大小都相同,并且网格中空格的个数由网格的行数和列数决定 * 如一个两行两列的网格能产生4个大小相等的网格..., * * 2:组件从网格的左上角开始,按照从左到右,从上到下的顺序加入到网格中,而且每一个组件都会填满 * 整个网格,改变窗体的大小,组件的大小也会随之改变 * * 3:网格布局管理器主要有

    1.2K30

    JAVA学习Swing章节流布局管理器简单学习

    ,流布局管理器在整个容器中 * 的布局正如其名,像流一样从左到右摆放组件,直到占据了这一行的所有空间,然后再向下移动一行。...* 默认情况下,组件在每一行上都是居中排列的,但是通过设置也可以更改组件在每一行上的排列位置 * * 2:FlowLayout类中具有三种构造方法 * alignment参数使用流布局管理器后组件在每一行的具体摆放位置...,并且整个组件占据了窗体的所有的空间 * * 3:容器调用Container类的add()方法添加组件时可以设置此组件在边界布局管理器中的区域 * 区域的控制可以由BorderLayout类中的成员变量来决定...,所以组件可以按行和列进行排列 * 在网格布局管理器中,每一个组件的大小都相同,并且网格中空格的个数由网格的行数和列数决定 * 如一个两行两列的网格能产生4个大小相等的网格, * * 2:组件从网格的左上角开始...,按照从左到右,从上到下的顺序加入到网格中,而且每一个组件都会填满 * 整个网格,改变窗体的大小,组件的大小也会随之改变 * * 3:网格布局管理器主要有2个构造方法 * rows参数代表网格的行数

    1.6K00

    Android 4.0开发之GridLayOut布局实践

    开始设计   首先,我们先设计下将要设计的键盘布局图,如下图: 可以看到这个布局的一些特点:   1) 有5行4列   2)每行的单元格和列方向的单元格的大小都是不一定相等的,比如“+”号这个按钮...,在纵向上是横跨了两行的   可以看到,如果要用传统的tablelayout布局样式,要实现以上的布局,可能要外加嵌套linarlayout布局样式,这样就会使的布局设计十分麻烦,而如果有了GridLayout...即如果设置为垂直方向布局,则下一个单元格将会在下一行的同一位置或靠右一点的位置出现,而水平方向的布局,则意味着下一个单元格将会在当前单元格的右边出现,也有可能会跨越下一行(因为有可能GridLayout...>  定义简单的单元格   在GridLayout中,定义每个子控件跟以前使用布局中定义的方法有点不同,默认的是对所有的子控件使用wrap_content的方式,而不是显式声明宽度和高度并使用...,这里其实可以调整每个数字按钮中的位置即可,可以利用android 4.0 GridLayout布局中的   layout_gravity属性,设置每个按钮中的位置,只需要设置layout_gravity

    48510

    python通过正则获取网页上的全部链接

    JTextField resultText = new JTextField("0"); // 标志用户按的是否是整个表达式的第一个数字,或者是运算符后的第一个数字 private boolean...(500, 300); // 不许修改计算器的大小 this.setResizable(false); // 使计算器中各组件大小合适 this.pack(); } /** 初始化计算器 */...private void init() { // 文本框中的内容采用右对齐方式 resultText.setHorizontalAlignment(JTextField.RIGHT); // 不允许修改结果文本框...,将键放在一个画板内 JPanel calckeysPanel = new JPanel(); // 用网格布局器,4行,5列的网格,网格之间的水平方向间隔为3个象素,垂直方向间隔为3个象素 calckeysPanel.setLayout...1列的网格,网格之间的水平方向间隔为3个象素,垂直方向间隔为3个象素 calmsPanel.setLayout(new GridLayout(5, 1, 3, 3)); for (int i = 0

    1.7K00

    Android精通:布局篇

    shrinkColumns为设置被收缩的列的序号,收缩是用于在一行中列太多或者某列的内容文本过长,会导致某列的内容会被挤出屏幕,这个属性是可以帮助某列的内容进行收缩,用于防止被挤出的。...,让该列填满这一行所有的剩余空间,也就是在整个父宽度的情况在,放几个按钮,剩下的空间宽度将用第二列填满,代码如下: <TableLayout  android:id="@+id/TableLayout...GridLayout网格布局 GridLayout网格布局是在Android 4.0以后引入的一种新的布局模式,和表格布局是有点类似的,但比表格布局的好,功能也是很强大的,它可以设置布局有多少行和有多少列...,也可以设置布局中的组件的排列方式,也可以设置组件的位置,横跨多少行,多少列。...由于绝对布局不常见,不常用,因为在不同大小的适配屏幕上的位置直观上会变化,适应能力差,所以不建议使用。

    2.7K40

    Android 六大布局之 GridLayout(网格布局)「建议收藏」

    目录 GridLayout(网格布局) 简述 计算器布局的实现 GridLayout(网格布局) 简述 1、GridLayout 布局是 Android 4.0 以后引入的新布局,和 TableLayout...(表格布局) 有点类似,不过它功能更多,也更加好用 可以自己设置布局中组件的排列方式 可以自定义网格布局有多少行,多少列 可以直接设置组件位于某行某列 可以设置组件横跨几行或者几列 计算器布局的实现...> GridLayout android:layout_width=”fill_parent”:网格布局宽度为填满屏幕 GridLayout android:layout_height=”wrap_content...6 行 GridLayout android:orientation=”horizontal”:网格布局设置为水平布局 回退 与 清空 按钮横跨两列,其它按钮都是直接添加,占用一行一列 通过 android...:layout_rowSpan 与 android:layout_columnSpan 设置了组件横跨多行或者多列时,如果想要让组件填满横越过的行或列的话,则可以设置 android:layout_gravity

    8.7K10

    Android六大布局

    FrameLayout(帧布局) FrameLayout(帧布局)可以说是五大布局中最为简单的一个布局,这个布局会默认把控件放在屏幕上的左上角的区域,后续添加的控件会覆盖前一个,如果控件的大小一样大的话...,简单直接就可以定位,但是手机的屏幕不一样大,适配性差; 可以直接用Android:layout_x和android:layout_y来定义组件的位置(两个属性只能在绝对布局中使用,在相对布局中都不会显示的...shrinkColumns 为设置被收缩的列的序号,收缩是用于在一行中列太多或者某列的内容文本过长,会导致某列的内容会被挤出屏幕,这个属性是可以帮助某列的内容进行收缩,用于防止被挤出的。...// GridLayout Android4.0之后新加的布局管理器 能够把整个容器划分为rows*columns的网格,每个网格可以放置一个组件 可以设置一个组件横跨多少列或者纵跨多少行 当单元格大小大于组件大小时...R.java 文件中。

    3.1K20

    跟我学Android之六 布局

    分隔填写多个值 布局中的视图可以使用如下属性 android:layout_gravity 表示单个视图的对齐方式,android:layout_weight 表示单个视图所在大小的比重,当layout_weight...,对应代码中的类是android.widget.RelativeLayout,布局中的视图通过设置相互间的相对位置进行排列,相对的排列位置,相对的对齐方式;相对布局使用拖放式比较方便。...,使用和标签进行配置,对应的类是android.widget.TableLayout,一对标签包含着一行中显示的视图。...表格布局的常用属性 android:stretchColumns 用于指定可以被拉伸的列,可以被拉伸的列在屏幕还有空白区域时被拉伸充满,列通过0开始的索引值表示,多个列之间用逗号隔开。...: android:layout_column 指定列索引号,由于有些行可能列数量不全,这时候需要给列指定索引号 ​网格布局​ 网格布局由GridLayout代表,它是Android 4.0新增的布局管理器

    32210

    Android精通:TableLayout布局,GridLayout网格布局,FrameLayout帧布局,AbsoluteLayout绝对布局,RelativeLayout相对布局

    shrinkColumns为设置被收缩的列的序号,收缩是用于在一行中列太多或者某列的内容文本过长,会导致某列的内容会被挤出屏幕,这个属性是可以帮助某列的内容进行收缩,用于防止被挤出的。...,让该列填满这一行所有的剩余空间,也就是在整个父宽度的情况在,放几个按钮,剩下的空间宽度将用第二列填满,代码如下: tablelayout <TableLayout android:id="@+id...GridLayout网格布局 GridLayout网格布局是在Android 4.0以后引入的一种新的布局模式,和表格布局是有点类似的,但比表格布局的好,功能也是很强大的,它可以设置布局有多少行和有多少列...,也可以设置布局中的组件的排列方式,也可以设置组件的位置,横跨多少行,多少列。...四大控制属性.png 由于绝对布局不常见,不常用,因为在不同大小的适配屏幕上的位置直观上会变化,适应能力差,所以不建议使用。

    4.6K20

    23 Java 图形化编程

    布局管理器负责,如组件的排列顺序、大小、位置,当窗口移动或调整大小后组件如何变化等。...FlowLayout.LEADING:指示每一行组件都应该与容器方向的开始边对齐,例如,对于从左到右的方向,则与左边对齐。 FlowLayout.LEFT:指示每一行组件都应该是左对齐的。...GridLayout 布局 GridLayout布局以网格形式对组件进行摆放,容器被分成大小相等的矩形,一个矩形中放置一个组件。...GridLayout布局主要的构造方法如下: GridLayout():创建具有默认值的GridLayout对象,即每个组件占据一行一列。...缺省的绘图 模式为覆盖模式。 (2) 异或模式:绘制图形像素与屏幕上像素信息进行异或运算,以运 算结果作为显示结果。

    3.1K20

    跟我学Android之六 布局

    布局中的视图可以使用如下属性 android:layout_gravity 表示单个视图的对齐方式,android:layout_weight 表示单个视图所在大小的比重,当layout_weight...,对应代码中的类是android.widget.RelativeLayout,布局中的视图通过设置相互间的相对位置进行排列,相对的排列位置,相对的对齐方式;相对布局使用拖放式比较方便。...,使用和标签进行配置,对应的类是android.widget.TableLayout,一对标签包含着一行中显示的视图。...表格布局的常用属性 android:stretchColumns 用于指定可以被拉伸的列,可以被拉伸的列在屏幕还有空白区域时被拉伸充满,列通过0开始的索引值表示,多个列之间用逗号隔开。...: android:layout_column 指定列索引号,由于有些行可能列数量不全,这时候需要给列指定索引号 网格布局 网格布局由GridLayout代表,它是Android 4.0新增的布局管理器

    35510

    11 - JavaSE之GUI

    setBounds 方法中设置的位置大小是相对于相对装入的 Frame 窗口位置和大小的。...FlowLayout 布局管理器对组件逐行定位,行内从左到右,一行排满后换行。 不改变组件的大小,按组件原有尺寸显示组件,可以设置不同的组件间距,行距以及对齐方式。...BorderLayout 将整个容器的布局划分成: 东(EAST) 西(WEST) 南(SOUTH) 北(NORTH) 中(CENTER) 五个区域,组件只能被添加到指定的区域。...GridLayout 布局管理器将空间划分成规则的矩形网格,每个单元格区域大小相等。...组件被添加到每个单元格中,先从左到右填满一行后换行,再从上到下。 在 GridLayout 构造方法中指定分割的行数和列数。(如:GridLayout(3, 4); // 整个空间分为3行4列。)

    2.1K50

    Qt入门-layout布局

    在设计一个界面之前,应该考虑到开发的界面可能给不用的用户使用,而用户的屏幕大小、纵横比例、分辨率可能不同,界面还可能是可缩放的,程序应该可以适应这些变化。        ...前面的程序中都是使用setGeometry()方法定位控件的位置,这个方法比较笨拙。试想如果控件很多,布局这些控件需要编写大量的代码。幸运的是,QT提供了更好的方法布局控件。        ...在界面中,最外部是mainLayout,它的类型是垂直布局类QVBoxLayout。它包含了两个水平布局类QHBoxLayout,分别是topLayout和bomLayout。...4)fromRow:指放置控件的起始网格行号;     5)fromColumn:指放置控件的起始网格列号;     6)rowSpan:指放置控件占多少行;     7)columnSpan:指放置控件占多少列...gridLayout->addWidget(edit3, 1, 1);       gridLayout->addWidget(lbl4, 1, 3);       gridLayout->addWidget

    2.4K20
    领券