精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開(kāi)通VIP
Android游戲開(kāi)發(fā)21:Android設(shè)備掩蓋真實(shí)分辨率的解決方法及游戲引擎的用法簡(jiǎn)述

    有時(shí)你可能會(huì)碰到這種情況:新建一個(gè)配置為WAGA800、分辨率是800*480的設(shè)備模擬器,我們?cè)诔绦蛑蝎@取其Height和Width的時(shí)候發(fā)現(xiàn)總是320*533,明顯是系統(tǒng)對(duì)我們?nèi)隽酥e!那么系統(tǒng)為何要輸出假分辨率呢?有什么意義呢?

       簡(jiǎn)單的來(lái)說(shuō),在SDK1.6 (sdk version 4)以后,Android 增加了新功能“支持多屏”,所謂這項(xiàng)新功能也就是為了讓我們的游戲、軟件能在不同的分辨率,不同機(jī)型上一樣流暢、玩美運(yùn)行,其作用一來(lái)減輕我們的移植工作量,二來(lái)更好的體現(xiàn)Android 越來(lái)越強(qiáng)勁的勢(shì)頭。

       自適應(yīng)效果如下圖:(WVGA高密度(左),中密度的HVGA(中),低密度和QVGA(右)

       在不同的分辨率上想玩美的跑起來(lái)一款游戲和軟件,有兩種方式,一種是我們做游戲的時(shí)候都做成自適應(yīng)屏幕的游戲方式,比如我們?nèi)∽鴺?biāo)都根據(jù)屏幕的寬、高、圖片的寬、高等等而不是寫成死的位置坐標(biāo)。 第二種那就是Android os 在1.6以后的這種自適應(yīng)技術(shù)。

       但是有些時(shí)候顯然Android提供的這種自適應(yīng)有時(shí)候我們不需要,或者說(shuō)不太適合我們的開(kāi)發(fā),(其實(shí)這也類似于現(xiàn)在的游戲引擎,很多人都在問(wèn)我開(kāi)發(fā)游戲用什么引擎,其實(shí)公司都有自己的引擎。我自己寫游戲一般不使用他人引擎(自己寫引擎),因?yàn)闆](méi)有一款游戲引擎適應(yīng)所有的游戲類型開(kāi)發(fā),例如用RPG的引擎去做個(gè)益智連連看?是不是搞了點(diǎn) – -…當(dāng)然現(xiàn)在市面上已經(jīng)有不少的游戲開(kāi)發(fā)引擎,但是使用別人的游戲引擎,對(duì)于開(kāi)發(fā)來(lái)說(shuō),雖然提高了開(kāi)發(fā)效率,縮短了開(kāi)發(fā)周期,但是對(duì)于其擴(kuò)展性不得不說(shuō)很是頭疼的一件事情,so~建議大家去吸收這些開(kāi)源引擎的知識(shí)和技術(shù),自己整理出一份屬于自己的游戲引擎,畢竟自己的擴(kuò)展起來(lái)就容易多了!而不能去一謂的去使用和強(qiáng)加灌輸別人的思維方式到自己腦中)咳咳、回到主題上來(lái),剛才說(shuō)了,有時(shí)候我們并不想使用Android os 提供的自適應(yīng),而是我們自己去寫自適應(yīng),這樣更加的靈活.

       下面給講解如何避開(kāi)Android os的自適應(yīng)的方法

       先來(lái)看下官方的一段話:

       這里是從官方文檔中截取的一段,這里是在說(shuō),當(dāng)Android sdk的版本是4或更低與版本為5或更高的之間的區(qū)別;

       那么從這里可以得知Android sdk 1.6(version 4)之前是不支持自適應(yīng)的,那么解決的方法也就有了;

       我們只需要在AndroidMainFest 中定義  <uses-sdk android:minSdkVersion=”4″ /> 就OK了!

XML/HTML代碼
  1. <?xml version="1.0" encoding="utf-8"?>     
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"    
  3.     package="com.desmo.testAd" android:versionCode="1" android:versionName="1.0">     
  4.     <application android:icon="@drawable/icon" android:label="@string/app_name">     
  5.         <activity android:name=".Test" android:label="@string/app_name">     
  6.             <intent-filter>     
  7.                 <action android:name="android.intent.action.MAIN" />     
  8.                 <category android:name="android.intent.category.LAUNCHER" />     
  9.             </intent-filter>     
  10.         </activity>     
  11.     </application>     
  12.     <uses-sdk android:minSdkVersion="4" />     
  13. </manifest>  

       然后我們看看修改后xml后的運(yùn)行截圖:

       這樣就正常啦。

       最后再補(bǔ)充兩點(diǎn)內(nèi)容:

       第一:

一般來(lái)說(shuō)800X480的density為240, 這樣得到的系數(shù)大小為240/160,所以320X533再乘上1.5就是正確的像素,這個(gè)需要結(jié)合屏幕的density來(lái)計(jì)算。

       這段話說(shuō)的沒(méi)錯(cuò),(公式的由來(lái)官方api 文檔中有寫)Android SDK 1.6 以上才可以通過(guò) canvas.getDensity(); 得到密度,canvas.setDensity(240);設(shè)置密度,但是很多群友設(shè)置過(guò)密度的都知道這根本沒(méi)有任何的效果。然后我就想通過(guò)利用比值去對(duì)canvas進(jìn)行縮放處理處理畫布使其回到正確的分辨率(像素),雖然目的達(dá)到了,但是發(fā)現(xiàn)失真效果很嚴(yán)重。所以我認(rèn)為還是用xml定義minSdkVersion 的方式方便、實(shí)用。但是又出現(xiàn)了下一個(gè)問(wèn)題:

       第二:

<uses-sdk android:minSdkVersion=”4″ /> ,加了這句話之后SDK=3時(shí)候(也就是SDK 1.5的時(shí)候),做出來(lái)的APK不就裝不成了嗎?

       沒(méi)錯(cuò),我們一旦定義了應(yīng)用程序運(yùn)行的最低版本,那么低于此版本的都無(wú)法安裝此應(yīng)用,但是除了利用密度比值,現(xiàn)在我也沒(méi)有其好的解決方案。

       總結(jié):先說(shuō)一句,我們這種使用定義應(yīng)用程序運(yùn)行的最低版本的方式來(lái)解決,存在兩種弊端:

       第一: 低于1.6sdk無(wú)法安裝程序。

       第二:影響高版本的功能,例如我們的BlueTooth(藍(lán)牙)是在2.0+的api中才有的。

       但是可以利用密度比值,但是最好不要,畢竟失真嚴(yán)重。

       有的童鞋說(shuō)利用在項(xiàng)目的AndroidManifest.xml中定義這些屬性:

       android:normalScreens=”true”

       android:smallScreens=”true”

       android:anyDensity=”true”

       這些是一些開(kāi)關(guān),比如是否支持小屏幕、是否支持任意密度等等,但是通過(guò)嘗試發(fā)現(xiàn)效果不理想,甚至沒(méi)效果。可能是使用的方法不對(duì),希望對(duì)這方面比較深入探究的童鞋可以將心得分享出來(lái)供大家討論學(xué)習(xí)。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Android的minSdkVersion,targetSdkVersion,maxSdkVersion
Unity的背景故事和基礎(chǔ)介紹
跨平臺(tái)引擎
Cocos2d-x VS. OGEngine,聯(lián)盟與部落的戰(zhàn)爭(zhēng)
手機(jī)QQ搭載虛幻4引擎,不止是為QQ秀準(zhǔn)備
一個(gè) android 項(xiàng)目中解決畫面模糊問(wèn)題的小結(jié)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

主站蜘蛛池模板: 望谟县| 马鞍山市| 越西县| 乌拉特中旗| 汕尾市| 武宣县| 晴隆县| 汉阴县| 许昌市| 万盛区| 潼关县| 佛坪县| 两当县| 大悟县| 青神县| 美姑县| 长寿区| 穆棱市| 鄂伦春自治旗| 高唐县| 监利县| 汨罗市| 镇平县| 淅川县| 黎城县| 兴安盟| 东乡族自治县| 临江市| 鄱阳县| 泰州市| 黔南| 花莲县| 内乡县| 海晏县| 江阴市| 阜新| 美姑县| 甘南县| 布尔津县| 古蔺县| 连江县|