首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

创建支持多种屏幕尺寸的Android应用

例如,应该给高密度屏幕提供更高分辨率的位图,系统会使用它们,而不是使用为中等密度屏幕设计的缩放位图。以下段落将介绍更多关于如何提供不同替代资源给不同的屏幕配置。...2.在应用程序代码中不要使用硬编码的像素值* 出于性能方面的原因及为了保持代码更简单,Android系统采用像素作为尺寸或坐标值的标准单位。...例如,如果myView.getWidth()函数的返回值是10,在当前屏幕上视图有10个像素宽度,但是在更高密度屏幕的设备上,返回值可能是15.如果在你的应用程序代码中,使用像素值为位图的单位,且该位图不是为当前屏幕密度预先调整的...附加密度的注意事项 本节描述了更多关于系统如何在不同屏幕密度上调整位图绘图、以及如何更好地控制位图在不同密度上的显示信息。...2.像素尺寸和坐标值的自动调整 :应用程序可以通过在清单文件中设置android:anyDensity的属性为“假”或在程序中设置位图的inScaled值为“假”禁止预先调整资源。

2.7K60

了解 Android 的矢量图片格式:`VectorDrawable`

因为 Android 设备通常具有不同的尺寸、形状和屏幕像素密度,所以我更喜欢用与分辨率无关的矢量资源(vector assets)。但它们究竟是什么?有什么益处?需要什么成本?什么时候应该使用它们?...放大的位图(左)与放大的矢量图(右) 这就是为什么在 Android 上我们需要为不同密度的屏幕提供多个版本的位图资源: res/drawable-mdpi/foo.png res/drawable-hdpi...这是位图与矢量图的基本权衡。矢量图提供上述好处,但代价是渲染更加昂贵。在 Android 早期, 设备性能差一点,屏幕密度差别不大。现在,Android 设备性能越来越好,屏幕密度却各不相同。...第二个 视口 大小定义虚拟画布,或者定义所有后续绘制命令的空间坐标。固有和视口尺寸可以不同(但应该以相同的比例)— 如果你需要,可以在 1*1 画布中定义矢量。...修剪路径 您可以从路径的开头或结尾进行修剪,也可以对任何修剪使用偏移。它们被定义为路径 [0,1] 的一部分。了解如何设置不同的修剪值会更改绘制线条的部分。另请注意,偏移可以使修剪值“环绕”。

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

    android系统如何自适应屏幕大小

    dip/pixel=dpi值/160,也就是px = dp * (dpi / 160) 当你定义应用的布局的UI时应该使用dp单位,确保UI在不同的屏幕上正确显示。...如果android:anyDensity="false" 应用程序支持不同密度,系统自动缩放图片尺寸和这个图片的坐标。具体解释一下系统是如何自动缩放资源的。...4.2自动缩放的像素尺寸和坐标(密度兼容) 1)如果应用程序不支持不同密度android:anyDensity="false",系统自动缩放图片尺寸和这个图片的坐标。...进行描述,这样可以保证在屏幕上面展示的时候有合适的大小 2)为不同屏幕密度的手机,提供不同的位图资源,可以使得界面清晰无缩放。...例如,当前为高精度屏幕,平台会加载高精度资源(如HelloAndroid中drawable-hdpi 中的位图资源),如果没有,平台会将中精度资源缩放至高精度,导致图片显示不清晰。

    5.3K10

    Android中文API——Bitmap

    注意:并非所有的格式都直接支持位图结构,所以通过BitmapFactory返回的位图很可能有不同的位深度,或许会丢失每个象素的alpha值(例如,JPEG 只支持不透明像素)。...,该位图来自源位图的子集,并根据可选的矩阵进行转换。...,且该位图每一个像素值由颜色数组中对应的值来设定。...public int getDensity () 返回位图的像素密度。 默认的像素密度和当前的显示密度一样,除非当前的应用程序不支持不同的屏幕密度,当它是DENSITY_DEFAULT时。...Y  被写入位图中第一个像素的y坐标 width 从pixels[]中拷贝的每行的颜色个数 height 写入到位图中的行数 异常 IilegalStateException  如果这个位图不可改变

    1.3K30

    android学习笔记----关于图形的基本处理讲解

    参数 bitmap Bitmap:要绘制的位图 这个值绝不能是null. matrix Matrix:用于在绘制位图时转换位图的矩阵。 这个值绝不能是null. paint Paint:可能为空。...注意:并非所有Formats都直接支持所有位图配置,因此BitmapFactory返回的位图可能位于不同的bitdepth中,和/或可能丢失了每像素alpha(例如,JPEG仅支持不透明像素)。...会根据设备的屏幕密度,将这一数值转换为不同的像素数量,那么对图片来说是如何操作的呢?...作为开发者,你应该用 dp 值来声明图片的宽度和高度,例如 48dp x 48dp。然后 Android 会确保所有这些图片在各种不同的设备上大概保持相同的尺寸,无论是每英寸的像素数量是多少。...文件夹设置得不对,那么获取的值就不是这个,而是对应比例的缩放 // 但是还是会因为机型屏幕改变其大小去显示(因为dpi每英寸像素密度不同) // 这就是可能出现获得bitmap.getwidth

    65220

    二维纹理映射(2D textures)【转】

    纹理映射就是这样一种方法,在程序中通过为物体指定纹理坐标,通过纹理坐标获取纹理对象中的纹理,最终显示在屏幕区域上,已达到更加逼真的效果。...因此纹理坐标使用规范化的值,大小范围为[0,1],纹理坐标使用uv表示,如下图所示(来自:Basic Texture Mapping):这里有错误,纹理坐标在左上角 ?...当纹理坐标超出[0,1]范围后,使用不同的选项,输出的效果如下图所示(来自Textures objects and parameters): ?...使用Mipmaps 考虑一个情景:当物体在场景中离观察者很远,最终只用一个屏幕像素来显示时,这个像素该如何通过纹素确定呢?如果使用最近邻滤波来获取这个纹素,那么显示效果并不理想。...如果直接在不同等级的MipMap之间切换,会形成明显的边缘,因此对于Mipmap也可以同纹素一样使用滤波方法在不同等级的Mipmap之间滤波。

    1.2K20

    2014-11-6Android学习------Android 仿真翻页效果实现--------贝塞尔曲线(二)

    //黄色位图上也有阴影效果 canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);//在默认设置的位图上画上设计的位图 } 2.如何去确定坐标呢?.../ 2)//如果手指触摸点的x坐标小于宽度的一半,页脚的x坐标就是0,也就是左上角 mCornerX = 0; else//右上角 mCornerX = mWidth;//当触摸点的x坐标超过屏幕宽度的一半的时候...,页脚的x坐标就是宽度的值 if (y 如果触摸点的高度小于屏幕高度的一半,页脚的y坐标就是0,左上角 mCornerY = 0; else//右下角 mCornerY...= mHeight;//如果触摸点的高度大于屏幕的高度的一半,页脚的y坐标就是高度, if ((mCornerX == 0 && mCornerY == mHeight)//代表是左下角 || (...2; mMiddleY = (mTouch.y + mCornerY) / 2; //第一条贝塞尔曲线的控制点坐标,也就是黄色的那个位图,这个计算值请看数学方法 mBezierControl1

    1.5K10

    Bitmap图片压缩,大图加载防止OOM

    先看一些基础知识(后面有答案) Android官网-提供备用位图 这篇文章链接中的有讲到: 要在像素密度不同的设备上提供良好的图形质量,您应该以相应的分辨率在应用中提供每个位图的多个版本(针对每个密度级别提供一个版本...否则,Android 系统必须缩放位图,使其在每个屏幕上占据相同的可见空间,从而导致缩放失真,如模糊。...[format,png#pic_center] 例如,如果您有一个可绘制位图资源,它在中密度屏幕上的大小为 48x48 像素,那么它在其他各种密度的屏幕上的大小应该为: 36x36 (0.75x) -...之后,每当您引用@drawable/xxx时,系统都会根据屏幕的 dpi 选择适当的位图。如果您没有为某个密度提供特定于密度的资源,那么系统会选取下一个最佳匹配项并对其进行缩放以适合屏幕。...不同的采样算法会产生不同效果,除了 Android 中这两种常用的采样算法之外,还有比较常见如:双立方/双三次采样(Bicubic Resampling) 和 Lanczos Resampling 等。

    2.8K00

    Bitmap图片压缩,大图加载防止OOM

    在这里插入图片描述 前言 Android官网中处理位图 和 高效加载大型位图 这两篇文章中已经做了很明确指出了如何高效的加载大图。...先看一些基础知识(后面有答案) Android官网-提供备用位图 这篇文章链接中的有讲到: 要在像素密度不同的设备上提供良好的图形质量,您应该以相应的分辨率在应用中提供每个位图的多个版本(针对每个密度级别提供一个版本...否则,Android 系统必须缩放位图,使其在每个屏幕上占据相同的可见空间,从而导致缩放失真,如模糊。 ?...image 例如,如果您有一个可绘制位图资源,它在中密度屏幕上的大小为 48x48 像素,那么它在其他各种密度的屏幕上的大小应该为: 36x36 (0.75x) - 低密度 (ldpi) 48x48(1.0x...之后,每当您引用@drawable/xxx时,系统都会根据屏幕的 dpi 选择适当的位图。如果您没有为某个密度提供特定于密度的资源,那么系统会选取下一个最佳匹配项并对其进行缩放以适合屏幕。

    2K20

    Android相机开发那些坑

    这篇文章主要是从如何使用相机API来定制自定义相机这个方向展开的。...说明这个问题之前,先介绍下Android手机上几个方向的概念: 屏幕方向:在Android系统中,屏幕的左上角是坐标系统的原点(0,0)坐标。原点向右延伸是X轴正方向,原点向下延伸是Y轴正方向。...相机传感器方向:手机相机的图像数据都是来自于摄像头硬件的图像传感器,这个传感器在被固定到手机上后有一个默认的取景方向,如下图2所示,坐标原点位于手机横放时的左上角,即与横屏应用的屏幕X方向一致。...在相机API中可以通过setDisplayOrientation()设置相机预览方向。在默认情况下,这个值为0,与图像传感器一致。...因此在计算时要一定注意坐标系的转换以及越界保护。 [image.jpg] 4.

    29.6K50

    可折叠设备的桌面模式

    这是一个简单的媒体播放器案例,它会自动调节尺寸以避免让折叠处出现在画面中间,并且调整播放控制组件的位置,从屏幕完全展开时嵌入画面中,变为当屏幕部分折叠时显示为单独的面板。...这样一来该控件会在屏幕完全展开时被隐藏,而当屏幕部分折叠时又出现在底部。 请注意第 28 行的 layout_constraintGuide_end 属性。它就是当您移动参考线时需要改变的值。...如果是这样的话,您可以计算出折叠处的相对位置,然后将 ReactiveGuide 移动到该位置;如果情况相反,您可以将其移动到 0 (屏幕底部)。...如果您要实现横屏功能,那么大多数时候,边界会以一个在屏幕中垂直居中的矩形来表示,它和屏幕一样宽,并且高度与铰链相同 (对于可折叠设备而言值为 0,对于双屏幕设备而言会是两个屏幕之间的距离)。...* 这里的计算中默认会包含内边距。

    2.4K30

    Flutter文字渲染模块总结(一)

    1.文字渲染概述 1.1 字体存储 ​ 把文字渲染到屏幕上主要是通过加载字体获得字形(Glyph)纹理,然后通过字体测量计算出字体左上角的位置和宽高,然后再把纹理贴到2D方块中。...每次想使用不同的字体时,你不得不重新生成位图字体。 ​...2.2.2 交互 手势识别 手势识别主要有两种: 一是Tap获取光标的位置,这一步需要将touch的屏幕坐标转换到字形的坐标,这里面代码比较复杂先不展示,计算步骤主要分如下几步: 1.根据Tap位置计算...touch的屏幕坐标找到最近的一个单词(如果是英文),也需要基于排版信息。...另外如果一个段落中每个字符都有一个固定的坐标,这种情况下Flutter要实现只能是为每一个字符都提供一个TextPainter,执行Layout和Paint,这样如果文字较多势必会非常耗时,官方类似这样的

    1.3K20

    Android图片资源

    目前,Android设备的配置种类繁多——不同的屏幕尺寸,分辨率,以及用户使用时的不同的屏幕方向等。为了让自己的程序运行在多种不同的尺寸上都表现良好,Android系统提供了很多有用的方式。...它是一个虚拟的像素单位,以像素无关的方式来表示UI元素的尺寸和位置。 设备最终显示时,UI上的任何元素都是需要一个具体的像素值的,那么dp是如何转换为最终的像素值的?...具体做法是: 像素密度分级mdpi为基准,它的dpi值为160,此时1dp = 1px。对于运行程序的设备,Android系统会根据其尺寸和屏幕像素来计算出它的像素密度分级。...以dp为尺寸和位置,使得UI元素在不同屏幕上拥有一致的表现。原理就是“等比缩放”,方式就是dp,dp的概念和对应px的计算方式如上面所记。...若只提供单一的图片资源,在缩放后图片往往会变得模糊与期望不一样,所以图片,尤其是位图,需要针对不同的像素密度来提供不同的合适的像素尺寸的图片。 所以,需考虑对不同的像素密度的屏幕提供不同的图片资源。

    1.2K100

    10.多媒体

    它是一个长整型的数组,用于设置手机静止和振动的时长,以毫秒为单位。下标为0的值表示手机静止的时长,下标为1的值表示手机振动的时长,下标为2的值又表示手机静止的时长, //以此类推。...在创建通知的时候给每条通知指定的id,当时给这条通知设置的id就是1。 //因此,如果想要取消哪一条通知,就在cancel()方法中传入该通知的id就行了。...,占用1个字节 G:0-255,需要一个长度为8的二进制数字,占用1个字节 B:0-255,需要一个长度为8的二进制数字,占用1个字节 加载大图片 计算机把图片所有像素信息全部解析出来,保存至内存 Android...startY =(int)event.getY(); break; //在屏幕上滑动 caseMotionEvent.ACTION_MOVE: //用户滑动手指,坐标不断的改变,获取最新坐标 int newX...,B画布在内存中绘制下一帧画面,绘制完毕后B显示至屏幕,A在内存中继续绘制下一帧画面 播放视频也是用MediaPlayer,不过跟音频不同,要设置显示在哪个SurfaceView SurfaceView

    1.3K80

    Android训练课程(Android Training) - 高效的显示图片

    Android应用的UI 需要即时地加载多个位图。像ListView,GridView 和 ViewPager 组件 通常包含多个位图在屏幕上,更多可能性在关闭屏幕时,使用手指拨动,立即准备去显示。...管理图片内存 除了在 缓存图像(Caching Bitmaps) 章节描述的步骤,这里有些明确的事情可以做,以帮助垃圾回收和重用图像。根据不同的Android版本不同有不同的推荐策略。...BitmapFun 示例包含了一些类,展示了如何设计你的程序以在不同的Android版本中更有效率的工作。...Android 3.0 (API 级别 11)中,像素数据也被存储在Dalvik 的堆中,和它关联到的位图一起了。 下面的章节描述了 在不同的Android版本中如何优化内存的管理。...的值。注意,如果它找到了一个合适的匹配时,这个方法也仅仅设置了inBitmap. 的值。你的代码永远不要假设可以找到匹配。

    2.9K00

    【Android 性能优化】布局渲染优化 ( CPU 与 GPU 架构分析 | 安卓布局显示流程 | 视觉与帧率分析 | 渲染超时卡顿分析 | 渲染过程与优化 )

    : GPU 适合用于大量的复杂的算术逻辑计算 , 如图像运算 , 声音运算等 ; CPU 适合用于控制系统 , 应用运行 ; 三、 Android 布局显示到屏幕流程 ---- Android 布局显示到屏幕流程...) ; ④ GPU 处理 : GPU 接收上述多维向量图形 , GPU 将该向量图进行栅格化 , 将向量图转为位图 ( 矢量图转为像素图 ) , 计算出对应屏幕上每个像素点显示的值 ; ⑤ 显示器显示...: GPU 向显示器推送位图 , 会判定前面的 4 个步骤花费时间是否小于 16ms , 如果小于该值 , 那么就显示该位图 , 如果大于该值 , 那么不绘制 , 等待下一帧位图绘制完成 , 这是为了避免显示卡顿而设计的机制...{1000}{60} = 16.66 , 即每隔 16.66 毫秒刷新一次 ; ③ Android 设备刷新机制 : Android 中每隔 16ms 就会发出 VSYNC 信号通知屏幕该进行渲染 ,...VSync 信号 : Android 每隔 16 毫秒发出 VSync 信号 , 屏幕接收到该信号时 , 开始显示渲染好的位图 , CPU 和 GPU 开始渲染新的图像 ; 2.

    4.1K21

    《Android游戏编程之从零开始》笔记「建议收藏」

    、RotateAnimation 第二种 自定义动画 a 在游戏逻辑处理中调整x和y轴坐标 b 利用帧动画 c 剪切图动画 最常用 动态物体的动作帧全部放在一张图片中,通过设置可视区域完成...11.游戏适屏 利用视图和屏幕宽高获取x和y坐标 当想要用按下人物一直动的效果时,View的onKeyDown和onKeyUp一起用 设置private...碰撞检测 a、矩形碰撞,利用两个矩形之间的位置进行判断,如果一个矩形的像素在另外一个矩形之中,或者之上,就可以认为这两个矩形发生了碰撞。 b。...首先遍历算出一张位图所有的像素点坐标,然后与另外一张位图上的所有点坐标进行对比,一旦有一个像素点坐标相同, d。多矩形碰撞 多个矩形碰撞区域 e。...实际使用中,需要通过摇杆控制游戏主角的移动,首先将整个360°分成4或8等分 2.多触点实现图片缩放 3.触屏手势识别 根据玩家接触屏幕时间的长短、在屏幕上滑动的距离、按下抬起的时间等包装,就是触屏事件监听

    1.3K21

    一种基于相位靶标的摄像机标定迭代畸变补偿算法

    ,打印出的标定板定位精度真的很低,其实配合结构光中的相移法,利用ipad屏幕即可进行高精度的相机标定。...所提出的畸变补偿方法需要计算真实像素与重投影像素之间的偏差。当使用相位靶标时,摄像机像素可以根据连续的相位图,根据不同的标定姿态找到相应的世界点。...两组相互垂直的移相条纹图案按顺序显示在液晶显示器(LCD)屏幕上,这些显示的图案由照相机从不同的视点捕捉到。在应用相移法和相位展开法[28–30]后,得到了两个相互垂直的绝对相位图,如图1所示。...如果已知LCD像素间距的大小 和每个条纹周期的LCD像素数 ,则一个摄像机像素可以根据公式(1)和(2)的相位值,唯一地定位其在世界坐标系中的相应的物理位置,。...变形来自于液晶屏幕上记录的像素网格,以及由相机像素和液晶像素之间的干涉所产生的摩尔条纹。取计算得到的相位图中间的一个小区域,从相位值与其拟合平面的差值可以看出影响,如图4b所示。

    89210

    探讨iOS 图片解压缩到渲染过程

    一.图像从文件到屏幕过程 通常计算机在显示是CPU与GPU协同合作完成一次渲染.接下来我们了解一下CPU/GPU等在这样一次渲染过程中,具体的分工是什么?...CPU计算好图片的Frame,对图片解压之后.就会交给GPU来做图片渲染 渲染流程 GPU获取获取图片的坐标 将坐标交给顶点着色器(顶点计算) 将图片光栅化(获取图片对应屏幕上的像素点) 片元着色器计算...(计算每个像素点的最终显示的颜色值) 从帧缓存区中渲染到屏幕上 我们提到了图片的解压缩是一个非常耗时的 CPU 操作,并且它默认是在主线程中执行的。...图片渲染到屏幕的过程: 读取文件->计算Frame->图片解码->解码后纹理图片位图数据通过数据总线交给GPU->GPU获取图片Frame->顶点变换计算->光栅化->根据纹理坐标获取每个像素点的颜色值...(如果出现透明值需要将每个像素点的颜色*透明度值)->渲染到帧缓存区->渲染到屏幕 面试中如果能按照这个逻辑阐述,应该没有大的问题.不过,如果细问到离屏渲染和渲染中的细节处理.就需要掌握OpenGL ES

    1.7K40

    iOS开发 - 图片的解压缩到渲染过程

    一.图像从文件到屏幕过程 通常计算机在显示是CPU与GPU协同合作完成一次渲染.接下来我们了解一下CPU/GPU等在这样一次渲染过程中,具体的分工是什么?...* CPU计算好图片的Frame,对图片解压之后.就会交给GPU来做图片渲染渲染流程 * GPU获取获取图片的坐标 * 将坐标交给顶点着色器(顶点计算) * 将图片光栅化(获取图片对应屏幕上的像素点...) * 片元着色器计算(计算每个像素点的最终显示的颜色值) * 从帧缓存区中渲染到屏幕上 我们提到了图片的解压缩是一个非常耗时的 CPU 操作,并且它默认是在主线程中执行的。...图片渲染到屏幕的过程: 读取文件->计算Frame->图片解码->解码后纹理图片位图数据通过数据总线交给GPU->GPU获取图片Frame->顶点变换计算->光栅化->根据纹理坐标获取每个像素点的颜色值...(如果出现透明值需要将每个像素点的颜色*透明度值)->渲染到帧缓存区->渲染到屏幕 面试中如果能按照这个逻辑阐述,应该没有大的问题.不过,如果细问到离屏渲染和渲染中的细节处理.就需要掌握OpenGL ES

    1.7K00
    领券