使用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工具来自己制作。

相关文章
|
前端开发 索引
使用canvas绘制渐变色矩形和使用按键控制人物移动
使用canvas绘制渐变色矩形和使用按键控制人物移动 1.使用canvas绘制渐变色矩形 效果演示 image.png 相关代码: Title canvas { border: 1px solid #ccc; } /* .
1440 0
openlayers之绘制矩形星星拉框放大自定义图形
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gisdoer/article/details/83036414 简介:openlayers绘制矩形、星星、拉框绘制,以及自定义图形。
1647 0
|
7月前
|
机器学习/深度学习 前端开发 算法
canvas系列教程03 —— 线的样式、绘制文本、操作图片(图片的渲染、缩放、裁剪、切割、平铺、特效)、变换元素(平移、缩放、旋转)(二)
canvas系列教程03 —— 线的样式、绘制文本、操作图片(图片的渲染、缩放、裁剪、切割、平铺、特效)、变换元素(平移、缩放、旋转)(二)
130 0
|
7月前
|
存储 前端开发 JavaScript
canvas系列教程03 —— 线的样式、绘制文本、操作图片(图片的渲染、缩放、裁剪、切割、平铺、特效)、变换元素(平移、缩放、旋转)(一)
canvas系列教程03 —— 线的样式、绘制文本、操作图片(图片的渲染、缩放、裁剪、切割、平铺、特效)、变换元素(平移、缩放、旋转)(一)
656 0
|
Android开发 Java
android图片缩放双击旋转效果
需要jar源码的请留言吧。 部分源码    demo下载地址 package uk.co.senab.photoview.sample; import android.app.ListActivity; import android.content.Intent; import android.os.Bundle; import android.view.View; imp
1042 0
|
Android开发
Android CustomShapeImageView对图片进行各种样式裁剪:圆形、星形、心形、花瓣形等
 Android CustomShapeImageView对图片进行各种样式裁剪:圆形、星形、心形、花瓣形等 Android CustomShapeImageView是github上一个第三方开源的对图片进行各种样式...
1420 0
|
前端开发 C#
WPF/Silverlight中图形的平移,缩放,旋转,倾斜变换演示
原文: WPF/Silverlight中图形的平移,缩放,旋转,倾斜变换演示 为方便描述, 这里仅以正方形来做演示, 其他图形从略。 运行时效果图:XAML代码:// Transform.
823 0

热门文章

最新文章