surfaceview图像拉伸问题

在surfaceview的使用时,发现一个现象:

1、当AndroidManifest.xml文件中定义了uses-sdk属性时,使用drawBitmap(Bitmap bitmap, float left, float top, Paint paint)画图时,显示结果为图片的实际大小。

2、当AndroidManifest.xml文件中不定义了uses-sdk属性时,使用drawBitmap(Bitmap bitmap, float left, float top, Paint paint)画图时,显示结果为图片拉伸后的显示。

<uses-sdk> 是用来描述该应用程序可以运行的最小和最大API级别,以及应用程序开发者设计期望运行的平台版本。由于安卓平台的碎片化,可以通过它来解决系统版本上的安装和兼容性体验问题。具体的相关知识看这篇博客就差不多了 http://blog.csdn.net/fuzhengchao/article/details/28121193。因此,在不指定uses-sdk属性时,系统会以兼容模式运行程序。

为了进一步确定问题的原因,我调整了uses-sdk中minSdkVersion和targetSdkVersion的值,发现在不指定targetSdkVersion的情况下(此时targetSdkVersion的值默认等于minSdkVersion),当minSdkVersion<=3时,现象同现象2;当minSdkVersion>=4时,现象同现象1 。查看谷歌官方的api版本特性(http://www.android-doc.com/about/versions/android-1.6-highlights.html)时可以发现以下特性:

Expanded support for screen densities and resolutions

Android 1.6 adds screen support that enables applications to be rendered properly on different display resolutions and densities. Developers can also specify the types of screens supported by their application.

即从android1.6才开始加入屏幕适配的黑科技(严肃脸),而这之前统一输出为569*320.

时间: 2024-10-08 10:08:44

surfaceview图像拉伸问题的相关文章

第六章 - 图像变换 - 图像拉伸、收缩、扭曲、旋转[2] - 透视变换(cvWarpPerspective)

透视变换(单应性?)能提供更大的灵活性,但是一个透视投影并不是线性变换,因此所采用的映射矩阵是3*3,且控点变为4个,其他方面与仿射变换完全类似,下面的例程是针对密集变换,稀疏图像变换则采用cvPerspectiveTransform函数来处理. ------------------------------------------------------------------------------------------------ WarpPerspective 对图像进行透视变换 voi

第六章 - 图像变换 - 图像拉伸、收缩、扭曲、旋转[1] - 仿射变换(cvWarpAffine)

拉伸.收缩.扭曲.旋转是图像的几何变换,在三维视觉技术中大量应用到这些变换,又分为仿射变换和透视变换.仿射变换通常用单应性建模,利用cvWarpAffine解决密集映射,用cvTransform解决稀疏映射.仿射变换可以将矩形转换成平行四边形,它可以将矩形的边压扁但必须保持边是平行的,也可以将矩形旋转或者按比例变化.透视变换提供了更大的灵活性,一个透视变换可以将矩阵转变成梯形.当然,平行四边形也是梯形,所以仿射变换是透视变换的子集. 本小节实现图像的仿射变换. -----------------

迅雷Bolt图像拉伸不清晰的解决办法

迅雷Bolt库中的图像拉伸的效果锯齿比较严重,常见的导致锯齿的情况: 1.在使用ImageObject时,drawmode为1拉伸模式下: 2.使用Bitmap类的Stretch函数拉伸图像: 虽然ImageObject有antialias属性支持反走样,不过设置后没有特别明显的优化效果. 解决锯齿的办法就是用C++编写拉伸函数,大家在处理时可以参考我写的处理函数: int CXLuaCImpl::StretchBitmap(lua_State* luaState) { XL_BITMAP_HA

iOS图像拉伸解决方案

UIButton实现背景拉伸,即图片两端不拉伸中间拉伸的办法有如下两种: 第一种方法很简单而且使用性更广.做法就是直接拉伸想要setBackgroundImage的image,代码如下: UIImage *image = [UIImage imageNamed:@"image.png"]; image = [image stretchableImageWithLeftCapWidth:floorf(image.size.width/2) topCapHeight:floorf(imag

OpenCV2学习笔记(二):图像的直方图

直方图(Histogram)又称质量分布图.是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据分布的情况.一般用横轴表示数据类型,纵轴表示分布情况.众所周知,一幅图像是由不同颜色值的像素组成,因此像素值在图像中的分布情况是这幅图像的一个重要特征,因此直方图广泛应用在数字图像处理中. 拍照是现实生活中必不可少的一部分,由于环境亮度.图像拍摄过程中透视光圈设置错误等影响,经常会拍出一些"过暗"的照片,此时美图.PS等美化工具可以派上用场.但是这些工具的算法通常都是不公开的,鉴于研究

html-css控制背景图全屏拉伸不重复显示

在HTML中,当我们设置背景图,只能采用是否重叠.居中.重叠方向这几个选项 CSS3中设置 body { background:#3d71b8 url(../back_main.png); background-size: 100%; background-position:center; } 但是background-siz是CSS 3的属性,并不是所有的浏览器都支持. CSS2中并没有图片全屏拉伸的属性,只能想其他办法. 利用一个DIV层,在里面装载一个IMG标签.然后设置DIV和IMG的大

Android资源之图像资源(1)

以前看别人的程序的drawable文件夹里有xml资源,说实话第一次见到这样的xml图像资源时,我真心不知道是干什么的.抽空学习了一下图像资源,才了解了这类图像资源的妙用.下面我来分享一下这部分知识: Android 中的图像资源文件保存在res/drawable目录中.在图像资源目录中不仅可以存储各种格式(jpg,png,gif等)的图像文件,还可以使用各种XML格式的图像资源来控制图像的状态 和行为. 1.普通图像资源 Android支持3种图像格式:png.jpg和gif.官方推荐使用pn

Zxing二维码精简(竖屏、拉伸处理、扫描框大小和扫描线移动)

本帖最后由 levil_ad 于 2013-12-30 13:55 编辑 最近没事做了下二维码扫描,用的是ZXing的开源代码,官方源码地址:http://code.google.com/p/zxing/downloads/list:我是在ZXing2.2基础上做的,因此只下载了ZXing-2.2.zip:此外还需要ZXing的核心Jar包,下载地址:http://repo1.maven.org/maven2/com/google/zxing/core/2.2/,只需下载core-2.2.jar

【分享】性能比肩美拍秒拍的Android视频录制编辑特效解决方案【1】

前言 本人接触Android的时间有限,如果您有更好的解决方案,欢迎吐槽. 众所周知,Android平台开发分为Java层和C++层,即Android SDK和Android NDK.常规产品功能只需要涉及到Java层即可,除非特殊需要是不需要引入NDK的.但如果是进行音视频开发呢?Android系统Java层API对音视频的支持在MediaCodec之前,还停留在非常抽象API的级别(即只提供简单的参数和方法,可以控制的行为少,得不到中间数据,不能进行复杂功能的开发,更谈不上扩展).而在Med