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