使用Matrix进行图形变换来完成图片在屏幕上的全屏显示(屏幕自适应)

简介: Matrix是Android提供的一个矩形工具类,主要是结合其他的API(如Canvas有个使用到Matrix做参数的drawBitmap()方法)来控制图形或者View组件的平移、旋转、缩放和倾斜变换。

MatrixAndroid提供的一个矩形工具类,主要是结合其他的API(如Canvas有个使用到Matrix做参数的drawBitmap()方法)来控制图形或者View组件的平移、旋转、缩放和倾斜变换。这里只对其做一个简要介绍,之所以有此一文,也只为记录在开发过程中曾使用到Matrix解决了一个我曾比较头疼的问题,就是让不同尺寸的图形,如何在不同尺寸的屏幕上全屏且完整的显示,具体的解决方式就是就是通过Matrix可以控制图形缩放的setScale(float sx,float sy)方法来实现的。这个问题或许还有其他的解决方式,如能告知,在此先谢过。

先简单的介绍下Matrix提供的用于控制平移、旋转和缩放的方法:

setTranslate(float dx, float dy):用于控制图形的平移

setSkew(float kx, float ky, float px, float py):控制Matrixpxpy为轴心进行倾斜,其中,kxkyXY方向上的倾斜距离。

setSkew(float kx, float ky):控制Matrix进行倾斜。其中kxkyXY方向上的倾斜距离。

setRoatate(float degrees):控制Matrix进行旋转,degrees为旋转的角度。

setRotate(float degrees, flaot px, float py):设置以pxpy为轴心进行旋转,degrees为旋转的角度。

setScale(float sx, float sy):设置Matrix进行缩放,sxsy控制XY方向上的缩放比例。

setScale(flaot sx, float sy, float px, float py):设置以pxpy为轴心进行缩放,sx/sy控制XY方向的缩放比例。

使用Matrix进行图形变换的步骤也很简单:首先是先得到Matrix对象,然后就是调用Matrix的方法进行设置变换方式,最后便是将这个Matrix对象与Android其他的API共同完成图形变换(比如通过调用CanvasdrawBitmap(Bitmap bitmap, Matrix matrix, Paint paint)方法将变换后的图形绘制在界面上),这样便是通过Matrix结合其他API完成图形变换的方式了。

这里再简单的介绍下我当时解决的问题的思路,其实很简单,要想将图片完整且全屏的显示在屏幕上,肯定调用的方法就是setScale(float sx, float sy)方法了,关键就是设置setScale()方法中的两个参数,这两个参数主要用于控制缩放比例,都为1.0是表示没有缩放,当为其他数时,便会缩小或者放大相应数值,正是基于这样,可以通过将屏幕的宽高分别比上图片的宽高,然后将这两个比值作为setScale()的两个参数,便可以完整且全屏的显示一张图片了。


也正是基于这种原理,程序界面就可以实现屏幕自适应,当然根据需要,也可以不将程序设为全屏显示,而将程序界面显示为全屏的某指定比例。


当然这种方式实现的图片的全屏显示,图片是有失真的。无失真的屏幕自适应,可以考虑使用draw9patch工具来自己制作。

相关文章
|
4月前
|
机器学习/深度学习 前端开发 算法
canvas系列教程03 —— 线的样式、绘制文本、操作图片(图片的渲染、缩放、裁剪、切割、平铺、特效)、变换元素(平移、缩放、旋转)(二)
canvas系列教程03 —— 线的样式、绘制文本、操作图片(图片的渲染、缩放、裁剪、切割、平铺、特效)、变换元素(平移、缩放、旋转)(二)
64 0
|
4月前
|
存储 前端开发 JavaScript
canvas系列教程03 —— 线的样式、绘制文本、操作图片(图片的渲染、缩放、裁剪、切割、平铺、特效)、变换元素(平移、缩放、旋转)(一)
canvas系列教程03 —— 线的样式、绘制文本、操作图片(图片的渲染、缩放、裁剪、切割、平铺、特效)、变换元素(平移、缩放、旋转)(一)
316 0
|
6月前
[MFC] 将像素坐标点缩放,准确的画在所在控件的图片上
[MFC] 将像素坐标点缩放,准确的画在所在控件的图片上
83 0
cesium中绘制立方体、设置材质、操作相机及获取鼠标经纬度和高度的方法
cesium中绘制立方体、设置材质、操作相机及获取鼠标经纬度和高度的方法
229 0
鼠标控制物体旋转、移动、缩放(Unity3D)
Unity3D对于鼠标操作物体的旋转、移动、缩放的功能点使用的比较多。 今天就分享如何使用Unity实现鼠标对于物体的旋转、移动、缩放。
|
定位技术 图形学
交互式QGraphicsView(平移/缩放/旋转)
简述 Graphics View提供了一个平台,用于大量自定义 2D 图元的管理与交互,框架包括一个事件传播架构,支持场景 Scene 中的图元 Item 进行精确的双精度交互功能。Item 可以处理键盘事件、鼠标按下、移动、释放和双击事件,同时也能跟踪鼠标移动。 和 Google 地图一样,在管理大量 Item 的时候,通常需要 View 具有交互(平移/缩放/旋转)
10399 1
3D立方体图片切换动画
在线演示 本地下载
994 0
openlayers之绘制矩形星星拉框放大自定义图形
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gisdoer/article/details/83036414 简介:openlayers绘制矩形、星星、拉框绘制,以及自定义图形。
1615 0
|
前端开发 索引
使用canvas绘制渐变色矩形和使用按键控制人物移动
使用canvas绘制渐变色矩形和使用按键控制人物移动 1.使用canvas绘制渐变色矩形 效果演示 image.png 相关代码: Title canvas { border: 1px solid #ccc; } /* .
1422 0
u3d无锯齿遮罩shader-可用于ugui
图片.png 图片.png // 遮罩shader Shader "Custom/CircleMask" { Properties{ _MainTex("MainTex", 2D) = "white" ...
1752 0