亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

【Android游戲開發之六】在SurfaceView中添加組

系統 2343 0

Himi 原創, 歡迎轉載,轉載請注明! 謝謝。

原文地址: http://blog.csdn.net/xiaominghimi/archive/2010/12/26/6099194.aspx

各位童鞋請你們注意:surfaceview中確實有 onDraw這個方法,但是surfaceview不會自己去調用!!!

而我代碼中的ondraw 也好 draw 也好,都是我自己定義的一個方法。。。放在線程中不斷調用的,一定要注意!!

昨天圣誕節,沒有出去,而是一天時間全部糾結在如何在SurfaceView中添加組件,例如添加常用的Button,TextView等等、一開始也想著從網上找些資料看看有沒有可參考的,但是發現搜到的結果仍是些童鞋對此很疑惑并且也在找尋答案,那么,這里就把圣誕節一天的成果來和各位童鞋分享;

1.因為我們的SurfaceView是個View對于添加的組件其實也是View,如果我們只是一味的想在SurfaceView中添加View組件其實是錯誤的思想,當然我一開始也是想著直接在SurfaceView中定義或者去使用組件,但是結果肯定是不成功的, 因為View不能添加View!

2.既然第一條肯定是錯誤的,那么我們就應該想到把我們的SurfaceView和組件都放在一個Layout里面,畢竟我們的的SurfaceView也是一個view和其他組件一同放在我們的layout里,那么這樣一來肯定就能完成在SurfaceView中添加組件的目的啦。下面先上截圖、

【Android游戲開發之六】在SurfaceView中添加組件!!!!并且相互交互數據!!!!

大家看到中間白色區域就是我們的SurfaceView啦,最上方是組件TextView ,最下方是Button 、對的,要的就是這個效果!而不是像前面文章中多個Activity切換,這樣都在一個界面中啦。哇哈哈啊。好、下面來看代碼吧:

先放上Xml 代碼:

以上代碼很簡單,都是一些布局方式和各個組件一些屬性及顯示方式的設定,當然主要看如何對我們的SurfaceView如何注冊在xml中的,那么每個組件都有id這樣為了對后面其交互數據用到,因為我們要對每個組件操作,所以這里都索引了id方面從R文件中取出其對象。

那么,xml我們定義好了,看看代碼中如何實現的,這里先說下Activity類中代碼:

該有的備注在代碼后面都備注了,MySurfaceView.button_str,這個是自己的SurfaceView中定義的一個static 的變量用來交互數據用到;在那么下面就要看我們的SurfaceView,當在Xml注冊需要注意什么了,我半天的時候都花在了這里!!!一定要引起注意,這也是在SurfaceView中并顯示組件完成最重要的一步。

先分析:

1.SurfaceView類的創建和實現等等和之前都是一樣的,該怎么去寫還怎么去寫,但是!構造函數一定要注意!


這里解釋下備注1: 這里有兩個構造函數,當然我們用哪個都是可以的,但是在此時我們需要明確我們到底要使用哪個。

一個參數的構造函數: 如果是new出來的此類實例肯定是沒有問題,但是我們為了能在顯示SurfaceView同時顯示別的組件,所以把自定義的SurfaceView也當作組件注冊在了main——xml中,所以這里需要注意, 當在xml中注冊的就必須在SurfaceView中使用這種含有兩個參數的構造函數的方法 , xml初始化的時候會調用兩個參數的這個構造方法, (當時這個問題困擾了半天的研究時間,最后在一個群友的幫助下才發現是這里出了問題) 那么含有兩個構造參數的方法里第二個參數指的自定義的組件的一些屬性,就像長寬一樣,你可以給組件屬性,就是通過這個來傳遞的!

那么在SurfaceView 中并一同顯示組件也就到底完結了,回顧下,一共分為3步,1.將我們的SurfaceView 作為一個組件view 和其他組件一同放置到布局中,當然布局的方式和顯示的方式大家自己隨自己喜歡定義! 2.在我們的SurfaceView中一定要使用兩個構造函數的構造函數,一定!一定! 就這里有區別,別的還是該怎么處理就怎么處理,就是構造函數換了 3.交互數據,對其按鍵的綁定在 activity中完成,別把view綁定在咱們的SurfaceView中啊,否則報錯- -、

這里說下為什么要在activity中去綁定按鍵處理 而不是在我們的surfaceview中去綁定:

其實根據xml中定義button時的id 我們可以通過R.id 索引取到button,不管在activity中還是我們的surfaceview中都可以取到,但是!綁定button這一步如果在surfaceview中去寫就一定報錯,原因我解釋下;

我們在xml中定義我們的surfaceview 和 組件button、textview等等的時候 他們是同一級別的!!而不是把button包含在surfaceview

里,所以雖然在surfaceview中可以根據id索引到button但綁定的時候是無法找到button的,只有我們的activitysetContentView(R.layout.main); 顯示的button,所以只能在顯示它的activity中去綁定,這里需要注意下;

下面分享出源碼:

源碼下載地址:

http://download.csdn.net/source/2939526

(推薦大家訂閱本博客,因為咱的更新速度可是很快的~娃哈哈)

【Android游戲開發之六】在SurfaceView中添加組件!!!!并且相互交互數據!!!!


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 黄片毛片 | 99热精品成人免费观看 | 久久综合综合久久 | 成人激情小视频 | 欧美日韩一区二区高清免费视频 | 亚洲国产精品自产拍在线播放 | 一区二区中文字幕 | 日本亚洲精品一区二区三区 | 99热久久精里都是精品6 | 久色网 | 成人精品第一区二区三区 | 一本到亚洲网 | 97s色视频一区二区三区在线 | 亚洲成在人线中文字幕 | 四虎在线播放免费永久视频 | 成人午夜性视频欧美成人 | 欧美亚洲第一区 | 99九九久久 | 91精品国产免费久久 | aaaaa级毛片| 久久久久久尹人网香蕉 | 久久99九九精品免费 | 欧美日韩亚洲另类 | v片视频| 久久久久久国产精品免费免 | 国产99久久精品一区二区 | 麻豆伦理| 羞羞网站在线看 | 天天射天天怕 | 奇米777影视| 一级网站在线观看 | 亚洲国产精品综合久久20 | 日本网站在线播放 | 亚洲精品www久久久久久久软件 | 999成人国产精品 | 国产精品国产三级国产普通话 | 成人www| 久久视频免费在线观看 | 久久精品影院永久网址 | 欧美激情_区二区三区 | c看欧美激情毛片 |