成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

概括Android系統存在的種種BUG

移動開發 Android
Android系統里有這樣兩個概念,向上類型轉換,向下類型轉換,分別描述的是子類向基類和基類向子類的強制類型轉換。

Android系統還是比較常用的,于是我研究了一下Android系統,在這里拿出來和大家分享一下,希望對大家有用。經過長時間學習Android系統的原理,于是和大家分享一下,看完本文你肯定有不少收獲,希望本文能教會你更多東西。

就界面Layout來說,這個程序其實和Snake沒有什么不同,同樣是采用了FrameLayout,而且游戲的主界面由一個自定義的View來實現,這里是LunarView。讀過上一篇文章的朋友也許會發現,Snake的架構是“定時器+系統調用onDraw”來實現的。

這里有一個***的缺陷就是onDraw是由Android系統來調用的。我們只能依賴它,卻無法自行控制。這就好比一個黑盒,當然,總是能把我們要的東西給做出來,可卻無法控制其做事的細節。

這對于游戲這樣高效率的東西可是不利的,因此***的解決之道當然是把繪制這部分工作自己”承包“過來,告別吃大鍋飯的,進入”聯產承包制”時代。此外,由于游戲的本質就是連續兩幀圖片之間發生些許差異,那么要不斷催生這種差異的發生,只要有某種連續不斷發生的事件在進行就可以。

例如Snake中使用的定時器,就是在不斷地產生這種“差異源”,與此類似,一個線程也是不斷在運行中,通過它也是可以不斷產生這種“差異源”的。如果說Snake中使用的Layout加自定義View是一把小型武器的話,那在SurfaceView對于android中游戲的開發來說就算是重型武器了。

我們使用前者時總是容易把游戲中某個對象(比如上文的每一個方格)當做一個小組件來處理,而后者則根本沒有這種劃分的概念,在它眼中,所有東西都是在Canvas(畫布)中自行繪制出來的(背景,人物等)。

SurfaceView提供直接訪問一個可畫圖的界面,可以控制在界面頂部的子視圖層。SurfaceView是提供給需要直接畫像素而不是使用窗體部件的應用使用的。Android圖形系統中一個重要的概念和線索是surface。View及其子類(如TextView, Button)

要畫在surface上。每個surface創建一個Canvas對象(但屬性時常改變),用來管理view在surface上的繪圖操作,如畫點畫線。還要注意的是,使用它的時候,一般都是出現在最頂層的:The view hierarchy will take care of correctly compositing 。

with the Surface any siblings of the SurfaceView that would normally appear on top of it.使用的SurfaceView的時候,一般情況下還要對其進行創建,銷毀,改變時的情況進行監視,這就要用到SurfaceHolder.Callback。

  1.   public void surfaceChanged(SurfaceHolder holder, int format, int width,int height)  
  2.     {  
  3.         thread.setSurfaceSize(width, height);  
  4.     }  
  5. public void surfaceCreated(SurfaceHolder holder)  
  6. {//啟動工作線程結束  
  7.         thread.setRunning(true);  
  8.         thread.start();  
  9.     }  
  10.     public void surfaceDestroyed(SurfaceHolder holder)  
  11.     {  
  12.         boolean retry = true;  
  13.         thread.setRunning(false);  
  14.         while (retry)   
  15.         {  
  16.             try  
  17.             {//等待工作線程結束,主線程才結束  
  18.                 thread.join();  
  19.                 retry = false;  
  20.             }   
  21.             catch (InterruptedException e)   
  22.             {  
  23.             }  
  24.         }  
  25.     } 

這個線程由私有類Android系統實現,它里面還有一個自己的消息隊列處理器,用來接收游戲狀態消息,并在屏幕上顯示當前狀態。(而這個功能在Snake中是通過View自己控制其包含的TextView是否顯示來實現的,相比之下,LunarThread的消息處理機制更為高效)。由于有了LunarThread這個負責具體工作的對象,所以LunarView的大部分工作都委托給后者去執行。

【編輯推薦】

  1. Android應用程序組建原理深入剖析 
  2. Android SMS短信服務相關概念簡述 
  3. PythonAndroid數據庫相關代碼解讀 
  4. PythonAndroid安裝卸載程序具體操作方法解析 
  5. Android應用程序的四個關鍵點 
責任編輯:chenqingxiang 來源: NET130
相關推薦

2010-03-03 16:14:56

Android系統市場

2010-02-05 18:09:12

Android

2010-03-05 15:43:46

Android SDK

2009-10-14 17:56:43

光纖布線系統

2010-03-03 14:06:38

2009-10-15 12:54:09

綜合布線系統

2010-02-06 09:32:18

Android Ser

2009-10-28 16:20:01

2010-07-20 16:14:42

2009-11-27 16:25:54

2009-10-16 12:55:27

結構化布線系統

2020-04-07 15:28:22

蘋果MacOS漏洞

2009-12-29 13:12:03

Ubuntu Linu

2017-12-18 11:16:31

iOS蘋果Bug

2021-02-27 09:25:37

漏洞網絡安全網絡攻擊

2011-05-11 11:08:57

2009-12-29 13:30:23

Ubuntu操作系統

2021-09-24 16:16:27

iOS蘋果系統

2010-01-07 13:17:35

JSON變量

2009-12-24 11:25:14

EPON技術
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 免费成人在线网站 | 一区二区三区四区国产 | 国产精品一区二区av | 美女视频一区二区三区 | 毛片视频观看 | 成人一区二区视频 | 精品在线观看一区 | 日韩精品免费视频 | 国产精品乱码一区二区三区 | 日韩欧美国产一区二区 | 国产精品一区二区三区在线 | 人人干97| 一区二区三区日韩 | 精品免费国产视频 | 中国一级特黄真人毛片 | 9久9久| 91久久国产综合久久 | 免费看片在线播放 | 韩国精品一区二区三区 | 日本三级全黄三级三级三级口周 | 欧美国产精品一区二区三区 | 亚洲综合在线一区二区 | 国产高清区 | av中文字幕在线 | 麻豆一区二区三区精品视频 | 亚洲精品一区二区三区在线 | 四虎影视免费在线 | 国产一区2区 | 久久久国产精品一区 | 黄色片免费看 | 国产一区二区三区四区五区3d | 免费看一级毛片 | 久久这里只有精品首页 | 日韩不卡一区二区三区 | 亚洲精品久久久久久久久久久 | av一区二区三区四区 | 射欧美| 天天拍天天操 | 国产精品久久久久久妇女6080 | 国产农村妇女毛片精品久久麻豆 | 在线观看国产视频 |