導航:首頁 > 操作系統 > opengles20android

opengles20android

發布時間:2025-06-20 20:30:53

① 游戲開發需要學什麼

游戲開發需要學圖形引擎,聲音引擎,物理引擎,游戲引擎,人工智慧或游戲邏輯,游戲GUI界面(菜單),游戲開發工具,支持區域網對戰的網路引擎開發,支持互聯網對戰的網路引擎開發。

選擇培訓學習游戲開發課程,還可以學到深入的圖形學課程,講解包括OpenGL渲染管線,著色器,高光計算、菲尼爾色散、霧方程式等高階課程。對於從事過Unity游戲開發的人員也具有相當的學習價值。

② 如何在android上使用OpenGL ES 2.0繪制點

如何在Android使用OpenGL
ES
2.0繪制點,看上去並不是一個復雜的問題,但是上網一搜,滿眼都是繪制點的代碼。
如果你看到類似如下代碼,基本上你已經掉坑裡了。
···
c
glBeging();
...
glDrawPoint(...);
...
glEnd();
```
如上是使用OpenGL
ES
1.0繪制點的代碼。因為架構不同,在OPENGL
ES
2.0的世界裡,這一套已經徹底不管用了。
在OpenGL
ES
2.0里繪制點,要使用Shader,使用Shader,用Shader。。。。。。
具體怎麼繪制呢,首先你要搞清楚,如何用Shader繪制一個普通帶顏色的三角形。我這里假設你已經會了。
三角形顯示出來的那一刻,你一定會有這樣的代碼:
GLES20.glDrawArrays(GLES20.GL_TRIANGLES,
0,
vertexCount);
那麼,只顯示三角形的三個頂點該怎麼辦,說來簡單,這行代碼改成
GLES20.glDrawArrays(GLES20.GL_POINTS,
0,
vertexCount);
即可。
但是,理想和現實的差距總是很大,改完後三角形消失了但是頂點沒有出現。正常OpenGL
2.0環境下應該怎麼做呢?
1)首先調用
GL20.glEnable(GL_VERTEX_PROGRAM_POINT_SIZE);
這樣在Shader中可以訪問glPointSize;
2)然後類似准備每個頂點色彩那樣准備頂點的大小的數值,三角形是三個頂點,就准備3個float。把頂點數據像色彩數據那樣,綁定到VOB,再綁定到Shader的參數中。基本上就是照準備色彩那樣准備頂點大小數據,不同之處在於每個色彩4個float,每個頂點尺寸1個float。
3)最後,把你的頂點Shader文件改好,增加頂點大小的輸入參數和gl_PointSize賦值。
4)另外,如果你打算顯示圓形頂點,而不是方形的,還要用GL20.glEnable()函數設置其他參數,具體可查OpenGL官網。
比如:
uniform
mat4
matrix;
attribute
vec4
aVertex;
attribute
vec4
aColor;
attribute
float
aPointSize;
varying
vec4
vColor;
void
main(){
vColor
=
aColor;
gl_Position
=
matrix
*
aVertex;
gl_PointSize
=
aPointSize;
}
這樣,基本上就搞定了。
現在,坑爹的問題來了,在Android上你找不到GLES20.GL_VERTEX_PROGRAM_POINT_SIZE的常量,谷歌似乎認為在手機的3D環境下繪制點沒多大必要性,所以並沒有加上這個參數,好在預設情況下,模擬器中Shader中的gl_PointSize是打開的(Android
4.4.x)。所以你可以跳過第一步,直接傳遞點大小的參數,並把Shader改好就成。
那麼,為什麼你不寫gl_PointSize
=
aPointSize,點就顯示不出來呢。我估計預設情況下,gl_PointSize
=
0.0f,所以顯示不出來。
如果你顯示點的大小總是固定不變的,你甚至可以把傳遞頂點大小數值的步驟也省略掉,直接在Shader中寫上gl_PointSize
=
10.0f;即可。
閱讀本文,當你打算在Android上用OPENGL
ES
2.0顯示點時,即可跳過谷歌的那些坑了。我想,手機GPU硬體廠商的開發包應該對OpenGL
ES
2.0支持的更好些,比如高通的AdrenoSDK,建議大家下載嘗試。

③ 安卓模擬器 運行出錯Could not initialize OpenglES emulation, using software renderer

是你使用的SDK版本和ADT版本過高,目前20以下的都比較穩定,20以上的需要更新window系統軟體(我用的是window7,xp我還沒有發現這個問題),在控制面板\系統和安全\Windows Update 更新系統軟體,問題解決,希望對你有所幫助。

④ 安卓4.o和2.3的區別

可以刷機的手機都可以刷4.0的,以後還有更高的版本

自10月19日上午,谷歌在香港正式發布代號為「冰淇淋三明治」的新一代Andriod 4.0系統到11月底源代碼的高調公布,那麼相比Android 2.3都有那些改進呢,Android 4.0在系統上的9大改進:

1.新的UI界面更加的人性化

相信關注安卓系統的朋友都看過了早些時候網上發布的Android4 .0系統界面。這次看看發布會上的照片吧。

2.新的通知系統

Android 4.0的通知系統有了很大的改進,用戶可以自己決定哪些應用可以發送通知。

Android 4.0的通知系統現在可以直接向側面滑動刪去通知條目,這樣的操作也出現在應用管理列表中。

3.語音輸入系統和面部識別功能

Duarte說新系統的鍵盤在糾錯、精度方面有了很大改進。他還演示了語音輸入系統,說「smiley face」直接在輸入框中插入一個笑臉。

face unlock現場演示失敗了...(莫非因為人太難看了?...)

4.新的安卓瀏覽器

Android 4.0的瀏覽器現在直接支持將完整網頁離線保存。比第三方應用更好的是該功能現在與默認瀏覽器完全集成。實現實時預覽功能,單一手勢關閉所有瀏覽器標簽,快速訪問台式機版網站。能夠自動與Chrome瀏覽器實現數據同步。

5.大幅強化了GMail

Android 4.0的Gmail大幅強化,瀏覽郵件時左右滑動直接切換上一封/下一封郵件。同時增加了離線搜索功能,可訪問過去30天內收到的郵件。新的 GMail 界面,完全集成會話模式,大幅強化了GMail。

6.數據使用管理功能

Android 4.0集成的數據追蹤系統可以追蹤、分析移動數據流量,設置移動數據使用上限,它集成於系統內部,功能非常齊全,第三方的數據流量管理工具前途堪憂。

每月總是怕流量超過的朋友這回不用擔心了,流量管理工具還能具體查看每個應用產生的流量。

7.拍照模式的強化

Android 4.0所拍照片只需三次點擊就能分享到G+、Facebook、Twitter等任意SNS服務,如果國行引入的話肯定會增加人人網,新浪微博等分享。

Android 4.0新的照片應用現在可以像Instagram一樣加濾鏡,並且還能加相框、進行全景拍攝。並且相機可以識別人臉,集成 Zero Shutter 技術,快門反應極快,連拍很快。

8.新加入的people應用

People應用是通訊錄的進化,以聯系人照片為核心,界面偏重滑動而非點擊。

People應用集成了其它通信工具,比如Twitter、Linkedin、Google+,不出意外的話還會支持自己添加第三方服務。

people應用與Gmail整合,點擊郵件里的頭像就能彈出附有大照片的快捷聯系方式,通過Gmail、信息、第三方服務快速聯系對方。

9.Android Beam應用

Android Beam是基於NFC的分享方式,兩部支持NFC的Android手機背靠背碰一下就能分享機上內容。該功能還會向第三方開放。

10.其他一些功能

Android 4.0可以通過長按電源鍵和音量鍵截圖,不再需要其它軟體。

加入新型「Roboto」字體,適用於高清顯示屏,實時牆紙功能。

⑤ 手機操作系統的Android


Android 英文原意為「機器人」,Andy Rubin於2003 年在美國創辦了一家名為Android 的公司,其主要經營業務為手機軟體和手機操作系統。Google 斥資4 000 萬美元收購了Android 公司。Android OS[7] 是Google(谷歌)與由包括中國移動、摩托羅拉、高通、宏達和T-Mobile 在內的30 多家技術和無線應用的領軍企業組成的開放手機聯盟合作開發的基於linux 的開放源代碼的開源手機操作系統。並於2007 年11 月5 日正式推出了其基於Linux 2.6 標准內核的開源手機操作系統,命名為Android,是首個為移動終端開發的真正的開放的和完整的移動軟體,支持廠商有摩托羅拉、HTC、三星、LG、索尼愛立信,聯想,中興等。
Android 平台最大優勢是開發性,允許任何移動終端廠商、用戶和應用開發商加入到Android 聯盟中來,允許眾多的廠商推出功能各具特色的應用產品。平台提供給第三方開發商寬泛、自由的開發環境,由此會誕生豐富的、實用性好、新穎、別致的應用。產品具備觸摸屏、高級圖形顯示和上網功能,界面友好,是移動終端的Web 應用平台。 Android版本概覽 版本號 名稱 發布時間 特性 Android1.1 未命名 2008年9月 內置應用商店;支持html網頁瀏覽 Android 1.5 Cupcake
紙杯蛋糕 2009年4月30日 來電照片顯示;採用webkit瀏覽器;支持復制粘貼操作;屏幕虛擬鍵盤 Android 1.6 Donut
甜甜圈 2009年9月15日 重新設計的Android Market手勢;支持CDMA網路;文字轉語音系統;查看應用程序耗電;支持虛擬私人網路(VPN);支持更多屏幕解析度;支持OpenCore2媒體引擎 Android2.0/2.0.1/2.1 Eclair
松餅 2009年10月26日 優化硬體速度;支持更多解析度;優化UI;新的瀏覽器的用戶介面和支持HTML5;新的聯系人名單;改進Google Maps;支持Microsoft Exchange;支持相機閃光燈;改進虛擬鍵盤;支持藍牙2.1;支持動態桌面的設計 Android 2.2/2.2.1 Froyo
凍酸奶 2010年5月20日 3G網路共享功能;Flash的支持;App2sd功能;全新的軟體商店;更多的Web應用API介面的開發 Android 2.3 Gingerbread
姜餅 2010年12月7日 優化垃圾回收和優化處理事件;原生代碼可直接存取輸入和感應器事件、EGL/OpenGLES、OpenSL ES;新的管理窗口和生命周期框架;支持VP8和WebM視頻格式,提供AAC和AMR寬頻編碼,提供了新的音頻效果;支持前置攝像頭、SIP/VOIP和NFC;一鍵文字選擇復制粘帖;改進電源管理系統;新的應用管理方式 Android 3.0 Honeycomb
蜂巢 2011年2月2日 優化針對平板 ;全新設計的UI增強網頁瀏覽功能 ;n-app purchases功能 Android 3.1 Honeycomb
蜂巢 2011年5月11日 優化Gmail;全面支持Google Maps;將Android手機系統跟平板系統再次合並;任務管理器可滾動,支持USB輸入設備(鍵盤、滑鼠等) ;支持Google TV.支持XBOX 360無線手柄;widget支持優化 Android 3.2 Honeycomb
蜂巢 2011年7月13日 支持7英寸設備;引入了應用顯示縮放功能 Android 4.0 Ice Cream Sandwich冰激凌三明治 2011年10月19日 全新的UI;新Chrome Lite瀏覽器,有離線閱讀,16標簽頁,隱身瀏覽模式;截圖功能;Gmail加入手勢、離線搜索功能,UI優化;新功能People:以聯系人照片為核心,集成了Twitter、Linkedin、Google+等通訊工具;新增流量管理工具,可查看每個應用產生的流量,限制和禁用流量 Android 4.1 Jelly Bean
果凍豆 2012年6月28日 特效動畫幀速提高至60fps,增加三倍緩沖;增強通知欄;全新搜索UI、智能語音搜索和Google Now;桌面插件自動調整大小;語言和輸入法擴展;新的輸入類型和功能;新的連接類型 Android 4.2 Jelly Bean
果凍豆 2012年10月30日 鍵盤手勢輸入功能;改進鎖屏功能,鎖屏狀態下支持桌面掛件和直接打開照相功能;可擴展通知,允許用戶直接打開應用;Gmail郵件可縮放顯示;用戶連點三次可放大整個顯示頻,兩根手指進行旋轉和縮放,專為盲人用戶設計的語音輸出和手勢模式導航 Android 4.3 Jelly Bean
果凍豆 2013年7月25日 多用戶登錄;智能藍牙;OpenGL ES3.0;數字版權加密(DRMs) Android 4.4 KitKat
奇巧 2013年9月4日 支持兩種編譯模式;RAM優化;新圖標、鎖屏、啟動動畫和配色方案;新的撥號和智能來電顯示;加強主動式語音功能;集成Hangouts IM軟體;全屏模式;支持Emoji鍵盤;輕松訪問在線存儲;無線列印;屏幕錄像功能;內置字幕管理功能;計步器應用;低功耗音頻和定位模式;新的接觸式支付系統;以及新的藍牙配置文件和紅外兼容性。 Android 5.0 Lollipop
棒棒糖 2014年10月15日谷歌將為自家的語音服務Google Now 加入一個名為 OK Google Everywhere 的全新功能。 Android 5.0 將會加入更多的健身功能。 整合碎片化。 支持64位處理器。 使用ART虛擬機。 Android6.0Marshmallow
棉花糖 2015年5月28日1。鎖屏下語音搜索。
2.指紋識別。
3.更完整的應用許可權管理。
4.Doze電量管理。
5.Now on Tap功能。
6.App Links。 1、Smartisan OS
Smartisan OS是由羅永浩帶領的錘子科技團隊基於Android深度定製的手機操作系統。
2015年1月18日,在2015極客公園創新大會上,錘子科技(北京)有限公司的Smartisan OS智能手機操作系統獲得「2014 中國互聯網年度創新產品大獎」和「最佳用戶體驗獎」兩個獎項。
SmartisanOS和其他第三方ROM相比變革最大的是在UI交互設計方面 ,Smartisan OS與其他定製UI最大的不同之處是Smartisan OS的視覺美感。視覺美感分為很多層面:圖標設計、交互設計、字體選用等等。
在圖標設計方面,現今扁平化的風潮讓用戶產生了審美疲勞,而Smartisan OS的工程師們重繪了大量第三方應用圖標,以擬物化為主,這與市場上所有的其他安卓系統有著明顯的區別,Smartisan OS的圖標重繪水平在全世界范圍內,也屬頂尖。
此外,Smartisan OS的交互動畫非常精緻,充滿了擬物化的設計元素。
Smartisan OS的字體渲染做得非常漂亮。據官方的說法,他們是改進了安卓的底層渲染機制,這才讓字體渲染能夠達到他們滿意的效果。
「多宮格」模式找應用是Smartisan OS最大的賣點,其獨有的各種「宮格」顯示模式,使得移動圖標很方便,也更多地用於查找應用程序。相比於大部分ROM找應用必須要滑來滑去,Smartisan OS直接按菜單鍵即可呼出「多宮格」模式,可以預覽所有的App。而且由於Smartisan OS採用的是擬物化的圖標設計,所以即使是縮小到81宮格模式下,各個圖標的視覺特徵也十分明顯,很方便查找。
2、IUNI OS
IUNI OS最早的內部代號叫Aurora, 英文里的「極光」一詞。負責人劉世超表示,IUNI OS中的OS主要是指「OUR SERVICE」,其本義是通過深度定製的安卓操作系統,為用戶提供獨特的體驗與服務。這種獨特性主要體現在四個方面,即優雅文藝的設計風格、精簡輕快的實用功能、精緻悅動的交互體驗以及純凈精良的服務傳遞。
支持廠商:IUNI
3、Sense
HTC自主研發的Sense,是一款基於Android系統研發的智能手機系統。
支持廠商:HTC
4、LG Optimus
基於標准Android修改的LG Optimus系統
支持廠商:LG
5、CyanogenMod
CyanogenMod是一個基於開源Android系統,供某些手機使用的二級市場固件。它提供一些在官方Android系統或手機廠商沒有提供的功能 ,例如:支持Free Lossless Audio Codec- FLAC (無損音頻壓縮編碼)音頻格式的音樂,多點觸控, 從SD外置存儲器運行程序,壓縮緩存,大量APN的名單,重新啟動功能,Wi-Fi無線網路支持,藍牙,USB網路分享等。CyanogenMod也是第一個使用BFS作任務管理器的操作系統。CyanogenMod聲稱提供比官方固件版本更高性能和更可靠。
6、小米MIUI系統
MIUI是小米公司旗下基於Android系統深度優化、定製、開發的第三方手機操作系統,能夠帶給國內用戶更為貼心的Android智能手機體驗。從2010年8月16日首個內測版發布至今,MIUI已經擁有國內外1億的發燒友用戶,享譽中國、英國、德國、西班牙、義大利、澳大利亞、美國、俄羅斯、荷蘭、瑞士、巴西等多個國家。MIUI是一個基於CyanogenMod而深度定製的Android流動操作系統,它大幅修改了Android本地的用戶介面並移除了其應用程序列表(Application drawer)以及加入大量來自蘋果公司iOS的設計元素,這些改動也引起了民間把它和蘋果iOS比較。MIUI系統亦採用了和原裝Android不同的系統應用程序,取代了原裝的音樂程序、調用程序、相冊程序、相機程序及通知欄,添加了原本沒有的功能。由於MIUI重新製作了Android的部分系統資料庫表並大幅修改了原生系統的應用程序,因此MIUI的數據與Android的數據互不兼容,有可能直接導致的後果是應用程序的不兼容。MIUI是一個由中國一班愛好者一起開發的定製化系統,根據中國用戶的需求而作出修改,現正處於Beta測試階段,在收集用戶意見後每逢周五均會提供OTA升級。現時MIUI系統由小米科技負責開發,而小米科技在2011年8月發布推出一部預載MIUI,名為小米手機的智能手機,2012年5月15日發布「青春版小米手機。
2010年8月16日深度定製的Android手機系統MIUI誕生,每周五更新。
2011年8月16日MIUI一周年,同時小米公司也推出第一款小米手機 MiOne
2012年8月16日,小米正式宣布MIUI中文名為「米柚」,並發布基於android4.1的MIUI4.1版本,最大特點如絲般順滑。更安全的操作系統,內置科大訊飛提供的全球最好的中文語音技術,內置由金山快盤提供的雲服務,可以在網頁上瀏覽通訊錄,發送簡訊。通過簡訊和網路找回手機功能,還有大字體模式。
2012年8月16日也是MIUI二周年,小米手機發布一周年。在今天,雷軍在發布小米手機二代時,同時也公布了MIUI的中文名「米柚」,並向我們介紹了MIUI v4.1的功能。
MIUI是小米公司基於Android原生深度優化定製的手機操作系統,對Android系統有超過100項優化和改進。MIUI還是中國首個基於互聯網開發模式進行開發的手機操作系統,根據社區發燒友的反饋意見不斷進行改進,並在每周更新迭代。從2010年8月16日首個內測版發布至今,MIUI受到了全球23個國家、1億手機發燒友的追捧。
小米主要特色
1)綠色簡約
MIUI提供綠色、干凈的ROM空間,不會集成其他繁雜的第三方應用軟體
2)獨特用戶體驗設計
MIUI根據中國用戶習慣,自主原創了全套的用戶體驗設計體系。更貼近你的使用習慣和心理習慣,讓你上手操作更簡單、更貼心。
3)個性操作界面體驗
MIUI全球首創「百變主題」以及「百變鎖屏」功能,為你帶來更為華麗、極致個性的手機操作界面感官體驗。
4)更好電話簡訊體驗
MIUI從電話、簡訊功能細節入手,對Android原生系統進行了多達近百項的深度優化、微創新,努力為用戶提供智能手機中最好的電話以及簡訊使用體驗。用戶話語權的「活」系統,MIUI團隊開發人員與用戶打成一片、組建用戶榮譽開發組,將系統功能選擇權交與用戶。根據用戶意見、建議選擇功能進行開發,並在每周五進行更新、升級。
5)雙版本共存
MIUI實行獨特的開發版和穩定版共存模式,滿足不同用戶需求:開發版著重於嘗鮮和快速更迭,延續原有的模式,每周五升級,不斷測試開發新功能;穩定版則著重穩定性,更新周期更長,大約1到2個月。
7、Emotion UI
Emotion UI是華為基於Android進行開發的情感化用戶界面。獨創的Me Widget整合常用功能,一步到位;快速便捷的合一桌面,減少二級菜單;繽紛海量的主題,何止讓你眼花繚亂。觸手可及的智能指導,瀟灑脫離小白狀態。貼心的語音助手,即刻解放你的雙手。隨時隨地,盡情愉悅體驗。
支持廠商:華為
8、Blur
Blur是摩托羅拉(Motorola)基於谷歌Android平台開發的應用界面,除了基本的Android特性之外,Blur最突出的特色是注重網路社交功能。Blur已經集成了很多國外知名社交網路的組件,包括Facebook、Twitter、Gmail、MySpace、Yahoo、Picasa 等,只要用戶將Email與社交網路賬戶綁定,來自於這些社交網路的信息就會自動推送到手機當中。
支持廠商:摩托羅拉
9、Flyme OS
魅族手機操作系統。 全新Flyme OS 1.0是魅族為其新一代智能手機傾力開發的創新之作,凝聚了魅族多年來對智能手機用戶體驗的深度發掘和在其歷代操作系統上演進優化的經驗和技術實力,力求為魅族手機提供更強大的應用功能和更卓越的操作感受。Flyme OS 1.0將提供邏輯更清晰、操作線程更短的用戶交互,令功能一目瞭然、易用順手。系統應用也將結合各項快速操作方式而更加智能

貼心。新系統UI將全面革新,在清新簡潔的基礎上使界面表現更富個性化,視覺效果超乎想像,操作中新增大量動態效果,令指尖感受更加逼真,界面隨心而動。同時,魅族精心研發、積極布局的手機雲服務在新系統上也開始了新一輪創新。數據備份、同步,手機遺失查找、定位鎖定等雲服務將藉此獲得全面升級,並將新提供手機聯系人間的文件雲傳輸等多項新增服務。憑借對系統的全面優化,魅族手機的多媒體影音功能也將更加強大,並將搭載高品質全無損的在線音樂服務。相信Flyme OS 1.0將成為Android4.0時代標志性的深度定製人性化操作系統,更多精彩讓我們一同期待魅族未來公布的新系統細節。
10、網路雲
網路雲智能終端平台是深度整合了網路核心技術與服務的智能終端軟體平台。
支持廠商:戴爾,天語,海爾
11、中國移動OMS
Open Mobile System是中國移動通訊集團和Google合作聯合開發的一款基於Linux內核Android平台構建的開放式手機操作系統簡稱OMS,它在原有Android平台基礎上針對中國市場做了特殊優化,加入了中移動運營的3G網路TD-SCDMA的支持。在界面和開機畫面上和Android有著細微的區別,在針對中國用戶的中文錄入、簡體中文顯示都進行了特殊的優化,未來還會加入中國移動自己的產品等功能,Open Mobile System是2008年4月份開始的一個系統定製計劃,經過1年的修改調試後預計將在2009年4月份開始正式推向市場,同時首款使用oms系統的是聯想oPhone手機。如今的OMS2.5完全兼容android2.2。用戶體驗得到了很大的提升,已經達到或者超越android原生系統。
搭載OMS系統的手機被稱為Ophone,為中國移動的定製機,聯想、摩托羅拉、華為等多家企業均有此類手機。

⑥ android面試題會出現什麼內容

這是一篇介紹android面試題的文章,下面就讓我們一起來了解一下吧!
1.android dvm 的進程和Linux的進程,應用程序的進程是否為同一個概念:
答:dvm是dalivk虛擬機。每一個android應用程序都在自己的進程中運行,都擁有一個dalivk虛擬機實例。而每一個dvm都是在linux的一個進程。所以說可以認為是同一個概念。
2.android的動畫有哪幾種?他們的特點和區別是什麼?
答:兩種,一種是tween動畫,一種是frame動畫。tween動畫,這種實現方式可以使視圖組件移動,放大或縮小以及產生透明度的變化。frame動畫,傳統的動畫方法,通過順序的播放排列好的圖片來實現,類似電影。
3.handler進制的原理:
答:android提供了handler和looper來滿足線程間的通信。Handler先進先出原則。looper用來管理特定線程內對象之間的消息交換(message Exchange).
1)looper:一個線程可以產生一個looper對象,由它來管理此線程里的message queue(消息隊列)
2)handler:你可以構造一個handler對象來與looper溝通,以便push新消息到messagequeue里;或者接收looper(從messagequeue里取出)所送來的消息。
3)messagequeue:用來存放線程放入的消息。
4)線程:UI thread 通常就是main thread,而android啟動程序時會為它建立一個message queue.
4.android view的刷新:
答:Android中對View的更新有很多種方式,使用時要區分不同的應用場合。我感覺最要緊的是分清:多線程和雙緩沖的使用情況。
1).不使用多線程和雙緩沖
這種情況最簡單了,一般只是希望在View發生改變時對UI進行重繪。你只需在Activity中顯式地調用View對象中的invalidate()方法即可。系統會自動調用 View的onDraw()方法。
2).使用多線程和不使用雙緩沖
這種情況需要開啟新的線程,新開的線程就不好訪問View對象了。強行訪問的話會報:android.view.ViewRoot$:Only the originalthread that created a view hierarchy can touch its views.
這時候你需要創建一個繼承了android.os.Handler的子類,並重寫handleMessage(Messagemsg)方法。android.os.Handler是能發送和處理消息的,你需要在Activity中發出更新UI的消息,然後再你的Handler(可以使用匿名內部類)中處理消息(因為匿名內部類可以訪問父類變數,你可以直接調用View對象中的invalidate()方法 )。也就是說:在新線程創建並發送一個Message,然後再主線程中捕獲、處理該消息。
3).使用多線程和雙緩沖
Android中SurfaceView是View的子類,她同時也實現了雙緩沖。你可以定義一個她的子類並實現SurfaceHolder.Callback介面。由於實現SurfaceHolder.Callback介面,新線程就不需要android.os.Handler幫忙了。SurfaceHolder中lockCanvas()方法可以鎖定畫布,繪制玩新的圖像後調用unlockCanvasAndPost(canvas)解鎖(顯示),還是比較方便得。
5.說說mvc模式的原理,它在android中的運用:
答:android的官方建議應用程序的開發採用mvc模式。何謂mvc?
mvc是model,view,controller的縮寫,mvc包含三個部分:
l模型(model)對象:是應用程序的主體部分,所有的業務邏輯都應該寫在該層。
2視圖(view)對象:是應用程序中負責生成用戶界面的部分。也是在整個mvc架構中用戶唯一可以看到的一層,接收用戶的輸入,顯示處理結果。
3控制器(control)對象:是根據用戶的輸入,控制用戶界面數據顯示及更新model對象狀態的部分,控制器更重要的一種導航功能,想用用戶出發的相關事件,交給m哦得了處理。
android鼓勵弱耦合和組件的重用,在android中mvc的具體體現如下:
1)視圖層(view):一般採用xml文件進行界面的描述,使用的時候可以非常方便的引入,當然,如何你對android了解的比較的多了話,就一定 可以想到在android中也可以使用javascript+html等的方式作為view層,當然這里需要進行java和javascript之間的通 信,幸運的是,android提供了它們之間非常方便的通信實現。
2)控制層(controller):android的控制層的重 任通常落在了眾多的acitvity的肩上,這句話也就暗含了不要在acitivity中寫代碼,要通過activity交割model業務邏輯層處理, 這樣做的另外一個原因是android中的acitivity的響應時間是5s,如果耗時的操作放在這里,程序就很容易被回收掉。
3)模型層(model):對資料庫的操作、對網路等的操作都應該在model裡面處理,當然對業務計算等操作也是必須放在的該層的。
6.Activity的生命周期:
答:onCreate: 在這里創建界面,做一些數據 的初始化工作
onStart: 到這一步變成用戶可見不可交互的
onResume:變成和用戶可交互 的,(在activity 棧系統通過棧的方式管理這些個Activity的最上面,運行完彈出棧,則回到上一個Activity)
onPause: 到這一步是可見但不可交互的,系統會停止動畫 等消耗CPU 的事情從上文的描述已經知道,應該在這里保存你的一些數據,因為這個時候你的程序的優先順序降低,有可能被系統收回。在這里保存的數據,應該在
onstop: 變得不可見,被下一個activity覆蓋了
onDestroy: 這是activity被幹掉前最後一個被調用方法了,可能是外面類調用finish方法或者是系統為了節省空間將它暫時性的幹掉
7.讓Activity變成一個窗口:
答:Activity屬性設定:有時候會做個應用程序是漂浮在手機主界面的。這個只需要在設置下Activity的主題theme,即在Manifest.xml定義Activity的地方加一句:
android :theme="@android:style/Theme.Dialog"
如果是作半透明的效果:
android:theme="@android:style/Theme.Translucent"
8.Android中常用的五種布局:
答:LinearLayout線性布局;AbsoluteLayout絕對布局;TableLayout表格布局;RelativeLayout相對布局;FrameLayout幀布局;
9.Android的五種數據存儲方式:
答:sharedPreferences;文件;SQLite;contentProvider;網路
10.請解釋下在單線程模型中Message、Handler、Message Queue、Looper之間的關系:
答:Handler獲取當前線程中的looper對象,looper用來從存有Message的Message Queue里取出message,再由Handler進行message的分發和處理。
11.AIDL的全稱是什麼?如何工作?能處理哪些類型的數據?
答:AIDL(AndroidInterface Definition Language)android介面描述語言
12.系統上安裝了多種瀏覽器,能否指定某瀏覽器訪問指定頁面?請說明原由:
答:通過直接發送Uri把參數帶過去,或者通過manifest里的intentfilter里的data屬性。代碼如下:
Intent intent = new Intent();
Intent.setAction(「android.intent.action.View」);
Uri uriBrowsers = Uri.parse(「http://www.sina.com.cn」);
Intent.setData(uriBrowsers);
//包名、要打開的activity
intent.setClassName(「com.android.browser」,」com.android.browser.BrowserActivity」);
startActivity(intent);
13.什麼是ANR,如何避免?
答:ANR的定義:
在android上,如果你的應用程序有一段時間響應不移靈敏,系統會向用戶提示「應用程序無響應」(ANR:application Not Responding)對話框。因此,在程序里對響應性能的設計很重要,這樣,系統不會顯示ANR給用戶。
如何避免:
首先來研究下為什麼它會在android的應用程序里發生和如何最佳構建應用程序來避免ANR.
android應用程序通常是運行在一個單獨的線程(例如:main)里,這就意味你的應用程序所做的事情如果在主線程里佔用了大長時間的話,就會引發ANR對話框,因為你的應用程序並沒有給自己機會來處理輸入事件或者Intent廣播。
因此,運行在主線程里的任何訪求都盡可能少做事情。特別是,activity應該在它的關鍵生命周期方法(onCreate()和onResume())里盡可能少的去作創建操作。潛在的耗時操作,例如網路或資料庫操作,或者高耗時的計算如改變點陣圖尺寸,應該在子線程里(或者以資料庫操作為例,通過非同步請求的方式)來完成。然而,不是說你的主線程阻塞在那裡等待子線程的完成---也不是調用Thread.wait()或者Thread.sleep()。替代的方法是:主線程應該為子線程提供一個Handler,以便完成時能夠提交給主線程。以這種方式設計你的應用程序,將能保證你的主線程保持對輸入的響應性並能避免由5秒輸入事件的超時引發的ANR對話框。這種做法應該在其它顯示UI的線程里效仿,因為它們都受相同的超時影響。
IntentReceiver執行時間的特殊限制意味著它應該做:在後台里做小的、瑣碎的工作,如保存設定或注冊一個Notification。和在主線程里調用的其它方法一樣,應用程序應該避免在BroadcastReceiver里做耗時的操作或計算,但也不是在子線程里做這些任務(因為BroadcastReceiver的生命周期短),替代的是,如果響應Intent廣播需要執行一個耗時的動作的話,應用程序應該啟動一個Service。順便提及一句,你也應該避免在Intent Receiver里啟動一個Activity,因為它會創建一個新的畫面,並從當前用戶正在運行的程序上搶奪焦點。如果你的應用程序在響應Intent廣播時需要向用戶展示什麼,你應該使用Notification Manager來實現。
一般來說,在應用程序里,100到200ms是用戶能感知阻滯的時間閾值,下面總結了一些技巧來避免ANR,並有助於讓你的應用程序看起來有響應性。
如果你的應用程序為響應用戶輸入正在後台工作的話,可以顯示工作的進度(ProgressBar和ProgressDialog對這種情況來說很有用)。特別是游戲,在子線程里做移動的計算。如果你的程序有一個耗時的初始化過程的話,考慮可以顯示一個Splash Screen或者快速顯示主畫面並非同步來填充這些信息。在這兩種情況下,你都應該顯示正在進行的進度,以免用戶認為程序被凍結了。
14.什麼情況會導致Force Close?如何避免?能否捕獲導致其的異常?
答:如空指針等可以導致ForceClose;可以看Logcat,然後找到對應的程序代碼來解決錯誤。
15.橫豎屏切換時候的activity的生命周期:
答:
1) 新建一個activity,並把各個生命周期列印出來
2) 運行activity,得到如下信息:
onCreate()à
onStart()à
onResume()à
3) 按ctrl+F12切換成橫屏時
onSaveInstanceState()à
onPause()à
onStop()à
onDestroy()à
onCreate()à
onStart()à
onRestoreInstanceState()à
onResume()à
4) 再按ctrl+f12切換成豎屏時,發現列印了兩次相同的Log
onSaveInstanceState()à
onPause()à
onStop()à
onDestroyà
onCreate()à
onStart()à
onRestoreInstanceState()à
onResume()à
onSaveInstanceState()à
onPause()à
onStop()à
onDestroyà
onCreate()à
onStart()à
onRestoreInstanceState()à
onResume()à
5) 修改AndroidManifest.xml,把該Activity添加android:configChanges=「orientation」,執行步驟3
onSaveInstanceState()à
onPause()à
onStop()à
onDestroy()à
onCreate()à
onStart()à
onRestoreInstanceState()à
onResume()à
6) 修改AndroidManifest.xml,把該Activity添加android:configChanges=「orientation」,執行步驟4,發現不會再列印相同信息,但多列印了一行onConfigChanged
onSaveInstanceState()à
onPause()à
onStop()à
onDestroy()à
onCreate()à
onStart()à
onRestoreInstanceState()à
onResume()à
onConfigurationChanged()à
7) 把步驟5的android:configChanges=「orientation」改成
android:configChanges=「orientation|keyboradHidden」,執行步驟3,就只列印onConfigChanged
onConfigurationChanged()à
8) 把步驟5的android:configChanges=「orientation」改成
android:configChanges=「orientation|keyboradHidden」,執行步驟4
onConfigurationChanged()à
onConfigurationChanged()à
總結:
1) 不設置activity的android:configChanges時,切屏會重新調用各個生命周期,切橫屏時會執行一次,切豎屏時會執行兩次。
2) 設置activity的android:configChanges=「orientation」時, 切屏會重新調用各個生命周期,切橫屏、豎屏時都只會執行一次,但是豎屏最後多列印一條onConfigurationChanged()
3) 設置activity的android:configChanges=「orientation|keyboardHidden」時,切屏不會重新調用各個生命周期,只會執行onConfigurationChanged(),橫屏一次,豎屏兩次
再總結下整個activity的生命周期:
1) 當前activity產生事件彈出Toast和AlertDialog的時候Activity的生命周期不會有改變
2) Activity運行時按下HOME鍵(跟被完全覆蓋一樣的)
onSavaInstanceStateà
onPauseà
onStopà
onRestartà
onStartà
onResumeà
3) 未被完全覆蓋,只是失去焦點:
onPauseà
onResumeà
16.如何將SQLite資料庫(.db文件)與apk文件一起發布?
答:可以將.db文件復制到Eclipse Android工程中的res aw目錄中。所有在res aw目錄中的文件不會被壓縮,這樣可以直接提取該目錄中的文件。可以將.db文件復制到res aw目錄中
17.如何將打開res aw目錄中的資料庫文件?
答:在Android中不能直接打開res aw目錄中的資料庫文件,而需要在程序第一次啟動時將該文件復制到手機內存或SD卡的某個目錄中,然後再打開該資料庫文件。復制的基本方法是使用getResources().openRawResource方法獲得res aw目錄中資源的 InputStream對象,然後將該InputStream對象中的數據寫入其他的目錄中相應文件中。在Android SDK中可以使用SQLiteDatabase.openOrCreateDatabase方法來打開任意目錄中的SQLite資料庫文件。
18.android 中有哪幾種解析xml的類?官方推薦哪種?以及它們的原理和區別:
答:XML解析主要有三種方式,SAX、DOM、PULL。常規在PC上開發我們使用Dom相對輕鬆些,但一些性能敏感的資料庫或手機上還是主要採用SAX方 式,SAX讀取是單向的,優點:不佔內存空間、解析屬性方便,但缺點就是對於套嵌多個分支來說處理不是很方便。而DOM方式會把整個XML文件載入到內存 中去,這里Android開發網提醒大家該方法在查找方面可以和XPath很好的結合如果數據量不是很大推薦使用,而PULL常常用在J2ME對於節點處 理比較好,類似SAX方式,同樣很節省內存,在J2ME中我們經常使用的KXML庫來解析。
19.DDMS和TraceView的區別?
答:DDMS是一個程序執行查看器,在裡面可以看見線程和堆棧等信息,TraceView是程序性能分析器
20.談談Android的IPC機制:
答:IPC是內部進程通信的簡稱,是共享"命名管道"的資源。Android中的IPC機制是為了讓Activity和Service之間可以隨時的進行交互,故在Android中該機制,只適用於Activity和Service之間的通信,類似於遠程方法調用,類似於C/S模式的訪問。通過定義AIDL介面文件來定義IPC介面。Servier端實現IPC介面,Client端調用IPC介面本地代理。
21.NDK是什麼:
答:NDK是一系列工具的集合
NDK提供了一系列的工具,幫助開發者迅速的開發C/C++的動態庫,並能自動將so和java應用打成apk包
NDK集成了交叉編譯器,並提供了相應的mk文件和隔離cpu,平台等的差異,開發人員只需簡單的修改mk文件就可以創建出so
22.描述一下android的系統架構:
答:android系統架構分從下往上為Linux內核層、運行庫、應用程序框架層和應用程序層。
Linux內核層:負責硬體的驅動程序、網路、電源、系統安全以及內存管理等功能。
運行庫和androidruntion:運行庫:即c/c++函數庫部分,大多數都是開放源代碼的函數庫,例如webkit,該函數庫負責android網頁瀏覽器的運行;例如標準的c函數庫libc、openssl、sqlite等,當然也包括支持游戲開發的2dsgl和3dopengles,在多媒體方面有mediaframework框架來支持各種影音和圖形文件的播放與顯示,如mpeg4、h.264、mp3、aac、amr、jpg和png等眾多的多媒體文件格式。Androidruntion負責解釋和執行生成的dalvik格式的位元組碼
應用軟體架構:java應用程序開發人員主要是使用該層封裝好的api進行快速開發的。
應用程序層:該層是java的應用程序層,android內置的googlemaps、email、IM、瀏覽器等,都處於該層,java開發人員工發的程序也處於該層,而且和內置的應用程序具有平等的地位,可以調用內置的應用程序,也可以替換內置的應用程序

閱讀全文

與opengles20android相關的資料

熱點內容
數據壓縮解壓是誰的工作 瀏覽:878
linux中dns配置伺服器地址 瀏覽:514
Android射手播放器 瀏覽:634
什麼是有效識別文件夾 瀏覽:881
火影忍者伺服器大全下載地址 瀏覽:953
冰箱壓縮機圖紙 瀏覽:1000
迅速pdf注冊碼 瀏覽:429
百變秀相機app怎麼卸載 瀏覽:288
掃碼抗疫情app怎麼注冊 瀏覽:136
chm反編譯教程 瀏覽:677
海康用的誰的伺服器地址 瀏覽:351
javaxa 瀏覽:158
linux系統硬碟格式 瀏覽:259
對文件和文件夾的理解 瀏覽:270
xs電池加密晶元 瀏覽:994
單片機就是開發板嗎 瀏覽:665
led屏和單片機連接 瀏覽:154
win磁碟命令 瀏覽:857
電力電子控制演算法工程師前景 瀏覽:579
g96線速度怎樣編程 瀏覽:916