在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.