第一篇:最佳安卓游戲
2010 年度最易上癮游戲 年度最易上癮游戲 憤怒的小鳥 Angry Birds 瞄準射擊 shoot U!涂鴉切割 Slice It!碧湖垂釣 Fishin2 Go 涂鴉跳躍 Doodle Jump 重力滾球迷宮 Labyrinth 水果忍者 Fruit Ninja 扔紙團 Paper Toss 極限挑戰 The Impossible Game 炸毀 Blow up 物理空間 Space Physics 2010 年度最具人氣游戲 憤怒的小鳥 Angry Birds 會說話的湯姆貓 Talking Tom Cat 口袋傳奇 Pocket Legends 地牢守護者 Dungeon Defenders First Wave 和雛子一起做運動 一起高爾夫 2 Lets Golf 2 HD 會說話的圣誕老人 Talking Santa 植物大戰僵尸 3 細胞分裂 5 Splinter Cell Conviction HD 阿凡達 3D Avatar 天空的榮耀 Skies of Glory 2010 年度最具創意游戲 你畫我猜 What The Doodle 食物大合作 Spaghetti Marshmallows 繁忙的辦公室 Office Rush 小羊快跑 SheepRun 吉他 Guitar Solo 爆竹娃 Squibble 火箭兔子 Rocket Bunnies 扔紙團 Paper Toss 水果忍者 Fruit Ninja 涂鴉跳躍 Doodle Jump 2010 年度最佳競速游戲 都市賽車 5 Asphalt5 極品飛車 13 變速 Need For Speed:Shift 速度與激情之地下狂飆 Fast&Furious Adrenaline 魯莽賽車 Reckless Racing 3D 超音速飛行 TurboFly 3D 摩托大賽 Motorbike GP 瘋狂卡丁車 Krazy Kart Racing 穿山甲大冒險 Armadillo Roll
口袋賽車 PocketRacing 我的紙飛機 2 My Paper Plane2 2010 年度最佳塔防游戲 機器人塔防 Robo Defense 城堡勇士 Castle Warriors 槍之榮耀 Guns'n Glory 喪尸圍城 Grave defence 植物大戰僵尸 Plants vs Zombies 失落的戰役 Towser Defense 水晶塔防 Crystallight Defence 別惹惡魔 leave Devil alone 農夫大戰外星人 Rednecks vs Aliens 釘子戶大戰拆遷隊 2010 年度最佳對戰游戲 地牢守護者 Dungeon Defenders First Wave 天空的榮耀 Skies of Glory 狂野飆車 5 Asphalt5 迷你空中軍隊 Mini Squadron 三國殺 FIFA10 足球盛宴 EA FIFA 10 瘋狂卡丁車 Krazy Kart Racing 史瑞克 3D 賽車 Shrek Karting HD 2010 年度最佳益智游戲 涂鴉切割 Slice It 重力球迷宮 Labyrinth 超級跌落 Super tumble 炸毀 Blow up 軌道建設 X Construction 煉金術 Alchemy 飛機領航員 Flightfrenzy 功夫泡泡球 Bonsai Blast 俄羅斯方塊 Terris 景麗時間 Tangram Time 2010 年度最佳重力感應游戲 重力球迷宮 Labyrinth 保齡球 iBowl 穿山甲大冒險 Armadillo Roll 專業模擬飛行 X Plane Flight Simulator 碧湖垂釣 Fishin Go 涂鴉跳躍 Doodle Jump 小鐵球歷險記 Little Metal Ball 極限摩托車 MX Moto 3D 重力球完整版 Prism 3D 天生殺人狂之食人鯊 3D Hungry Shark
2010 年度最佳模擬經營游戲 模擬人生 3 The Sims 瘋狂農場 Farm Frinzy 美女餐廳 2 Diner Dash 游戲發展國 Game Dev Story 海盜餐廳 Barrr 口袋上帝 Pocket God 飯店大亨 Hotel Mogul 瘋狂壽司店 歡樂王國 Haypi kingdom 貨物管理員 Cargo 2010 年度最佳角色游戲 澤諾尼亞傳奇系列 ZENONIA 地牢守護者 Dungeon Defenders First Wave 蜘蛛俠 SpiderMan Tot
al Mayhem HD 地牢獵人 Dungeon Hunter 神秘傳說阿卡納 Legends Arcana 惡魔獵手 CaligoChaser 斯巴達英雄 Hero of Sparta 罪惡都市之西海岸的喧囂 Gangstar West Coast Hustle 2010 年度最佳體育游戲 年度最佳體育游戲 實況足球 2011 Real Soccer 2011 勁爆棒球 Homerun Battle 3D 高山滑雪 Big Mountain Snowboarding 超級棒球明星 2011 Baseball Superstars 2011 一起高爾夫 2 Lets Golf 2 HD 魔幻保齡球 Magic Bowling 3D 臺球大師 3d pool master 美式足球 Backbreaker Football 3D 投籃 Basketball Shots 3D 09 國際橄欖球賽 Rugby Nations09 手指任意球 Flick Kick Football 2010 年度最佳網游 口袋傳奇 Pocket Legends 明珠三國 2011 年度最值得期待游戲 植物大戰僵尸 Plants vs Zombies 割繩子 Cut the Rope
第二篇:安卓手機怎樣錄制游戲視頻?
迅捷錄屏大師
www.tmdps.cn
安卓手機怎樣錄制游戲視頻?
對于一些經常操作電腦的小伙伴來說,電腦屏幕因該是比較簡單的,但是對于手機來說錄屏的操作還真沒怎么聽到過,每一次打游戲的時候,我們都希望將自己一流的操作錄制下來,安卓手機怎樣錄制游戲視頻呢?小編可以告訴大家只要安裝一款迅捷錄屏大師的APP就行。
什么是手機屏幕錄像呢? 手機屏幕錄像,就是把你在手機上的操作變為視頻,把你玩游戲或者操作的過程錄制下來,變成視頻。迅捷錄屏大師
www.tmdps.cn
操作工具:迅捷錄屏大師
安裝操作步驟:
首先下載安裝好軟件之后,打開軟件我們首先要允許獲取錄音,錄制視頻等權限,只有這樣才會錄制聲音以及畫面。
然后我們點擊軟件上方的“懸浮窗顯示”設置手機授予“懸浮窗權限”這樣我們就可以在手機右側看到“懸浮窗”方便我們日后錄制迅捷錄屏大師
www.tmdps.cn
視頻的操作。
我們可以在手機上安裝迅捷錄屏大師,它可以輕松的幫助我們完成手機屏幕的錄制。迅捷錄屏大師
www.tmdps.cn
為了方便大家,小編在此精心整理了迅捷錄屏大師在手機上錄制屏幕的操作教程,希望對大家有所幫助哦!
第三篇:安卓游戲 跑跑卡丁車 攻略
先介紹菜單(從左到右)---道具賽、競速賽、藍牙比賽、車庫(黃色是車,藍色是角色)、商店(韓版的所以不能用)【開地圖】
冰山在冰山圖中 道具賽,競速賽各2次獲勝第一名(4/4)地獄沙漠獲勝全部地圖
下面是其他地圖,但需要用韓幣買。。得等破解版的才可地圖全。【關于車輛】
韓國人習慣性的外來語(不知道怎么翻譯),從新手車下面按順序說明吧。。
1橙色用3種A,B,C操作方式各跑一次 3藍色在FACEBOOK里交3個朋友
5xx獲得36次第一名(不管破記錄,只要第一名就可)7隨機圖 人物下面左邊的是【否】、右邊的是 【是】 剛進游戲后右上角有【設置】操作方法、游戲說明、道具說明、網址 跑完之后有兩個選項-左邊的是【再跑一次】 右邊的是 【退出】
第四篇:安卓學習心得
Android學習心得
-----093380117
計算機應用(1)
張峰
1.關于Activity
1.在一個Activity中使用多個View
如果把Activity看作MVC中的Control?它負責管理UI和接受事件(包括用戶的輸入),雖然說一個Activity通常對應一個屏幕,但事實上,我們是可以只用一個Activity管理多個不同的View來實現簡單的邏輯。首先,我們增加一個新的資源描述layout/second.xml。
除了一個“Hello中國”以外,增加一個按鈕可以返回前一個界面。然后,在代碼中我們要為helloTwo增加兩個方法,setViewOneCommand和setViewTwoCommand,分別處理一下在不同界面時,從資源里加載組件并為組件綁定一個事件處理器最后,我們需要在onCreate的時候,也就是啟動后的main界面上設置一下按鈕事件處理器。2.還是回到正道上,多個Activity之間的跳轉
Android中提供一個叫Intent的類來實現屏幕之間的跳轉,按文檔的說法,似乎他們也建議采用這種方法,Intent的用法比較復雜,現在我先看看它最簡單的用法。
這里的跳轉功能用Intent來操作,它的最簡單用法就是用函數setClass()設置跳轉前后兩個Activity類的實例,然后調用Activity自己的startActivity(intent)即可。最后一句finish()表示將當前Activity關掉(如果不關掉會如何?你可以自己試一下看效果,事實上有時我們是不需要關掉當前Activity的)。
然后,我們同樣弄一個Activity類HelloThreeB,代碼與前面的差不多,只是將setClass的兩個參數反一下,這樣就可以簡單地實現在兩個Activity界面中來回切換的功能了。
2.關于 Intent的使用
Intent分為兩大類,顯性的(Explicit)和隱性的(Implicit)。一般來說,intent要定位事件的目的地,無外乎需要以下幾個信息: 1.種類(category),比如我們常見的 LAUNCHER_CATEGORY 就是表示這是一類應用程序。
2.類型(type),在前面的例子中沒用過,表示數據的類型,這是隱性Intent定位目標的重要依據。
3.組件(component),前面的例子中用的是setClass,不過也可以用setComponent來設置intent跳轉的前后兩個類實例。4.附加數據(extras),在ContentURI之外還可以附加一些信息,它是Bundle類型的對象。
其實,如果是在一個應用內部,這種隱性的intent實在有點別扭,個人覺得,這種松藕合的實現方法,只適用于那些較大的系統或者多個不同的應用之間的調用,可手機上又有什么“較大”的系統呢?無非是可以與不同來源的多個應用之間方便地互操作而已,那么會是什么樣的場景呢?比如,給QQ好友發送gmail郵件,用GoogleMap查找QQ好友所在的位置?看上去挺不錯的。
關于這個ContentProvider,其實還有話說,它主要是的那些看似數據庫操作的方法我們都沒真正去實現呢。不過今天就到這里了,等下回再去研究吧。
3.關于ListActivity
準備一個List對象并借助Adapter就可以構造出一個列表。重載onListItemClick方法可以響應選擇事件,利用第一個參數可以訪問到這個ListView實例以得到選中的條目信息。這里有一點要說明的,就是如果更簡單的話,其實連那個setContentView都可以不要了,Android也會自動幫我們構造出一個全屏的列表。但是本例中我們需要一個TextView來顯示選中的條目,所以我們需要一個layout.mainb描述一下這個列表窗口。
這里需要注意的是那個ListView的ID,是系統自定義的android:list,不是我們隨便取的,否則系統會說找不到它想要的listview了。然后,在這個listview之外,我們又增加了一個TextView,用來顯示選中的條目。
再來說說這里用到的ArrayAdapter,它的構造函數中第二個參數是一個資源ID,ArrayAdapter的API文檔中說是要求用一個包含TextView的layout文件,平臺用它來顯示每個選擇條目的樣式,這里的取值是R.layout.list_row,所以,我們還有一個list_row.xml文件來描述這個布局,相當簡單。
從ArrayAdapter上溯到BaseAdapter,發現還有幾個同源的Adapter也應該可以使用,象SimpleAdapter和CursorAdapter,還是做個例子來實驗一下吧。
然后,在HelloTwoB中的onCreate函數中,修改代碼,有幾個不同:items的元素是HashMap實例,這是一點變化,然后構造函數除了要求items以外,還要求提供一個string[]來說明用hash表中的哪個字段顯示在列表中,而后是一個資源ID的數組。
因為單純的CursorAdapter是抽象類,所以我用的是它的子類SimpleCursorAdapter,很好理解,先用ContentResolver查詢通訊簿得到一個游標,然后告訴SimpleCursorAdapter要用其中的People.NAME作為顯示項來構造出一個adapter即可。4.關于Dialog
注意到android.app包下除了Dialog(可用于制作復雜的對話框)以外,還包括了幾個系統定義好的對話框類,如DatePickerDialog、TimePickerDialog及AlertDialog。
其中AlertDialog我上回用過一次,基本上就那樣子了,今天看看另外兩個對話框的使用吧。
很簡單的,無非是需要一個OnDateSetListener接口的實現而已,在它里面的dateSet方法中就可以得到選擇的日期了。而TimePickerDialog與DatePickerDialog使用如出一轍。
看看另一個ProgressDialog的用法吧,這個類與AlertDialog一樣包含了多個static的方法,所以使用起來是非常方便的。比如說,如果我們需要用它來表示一個長時間的操作。
5.關于Service和Notification
大略地看了一下android.app下的Service類,覺得它與Activity非常相似,只是要注意幾個地方:
1.生命周期,Service的從onCreate()->onStart(int,Bundle)->onDestroy()顯得更為簡單。但是它的onStart是帶參數的,第一個ID可用來標識這個service,第二個參數顯示是用來傳遞數據的了。比較Activity,傳遞數據的Bundle是在onCreate就帶進入的。
2.Service的啟動由Context.startService開始,其實Activity或者Service都是Context的派生類。結束于Context.stopService()或者它自己的stopSelf()。
3.Service還有一個與Activity不一樣的是它可以由另一個Context去綁定一個已存在的Service。就是這個方法Context.bindService(),被綁定的Service要求是已經onCreate了但可以沒有onStart。在Service類中有個抽象方法getBinder()可以得到這個IBinder對象。關于這方面的細節,以后再看,這里只做個記錄罷。
4.與Service有關的還有一個安全的問題,可以在AndroidManifest.xml中用
6.GridView與ImageView
簡單一點吧,就瞧瞧那個Grid的效果,Android提供了一個GridView,不過從APIDemo中看來,它似乎與PC上的GRID差別還是挺大的,更像那個IconView的感覺。不知道Android中如何實現表格界面?雖然在移動終端上,表格一般不會有誰使用,大家似乎更傾向于使用ListView,而Android對于ListView則有更簡單的實現ListActivity。
很簡單,只要重載幾個方法就可以了,關鍵是那個getView方法,它負責構建出每個單元格中的對象實例。這里我們構造的是一個ImageView實例。
然后就是同樣的將這個Adapter賦給GridView即可,大家可以看看效果,注意在做這個例子前,先放幾個小圖片到res/drawable目錄下,buildproject一下就可以得到那個R.drawable.a了(這里的a是圖像文件名,如a.png)。
在getView方法中我們使用了ImageView類,這又是一個widget。除了上面用到的幾個方法以外,還有以下幾個方法值得注意: 與圖像來源有關的方法,我們只用了資源文件的方式。
還是習慣性跑題了,其實,我是想通過我對這個類的無數次Debugger跟進,說說它的多線程異步處理的解決策略的。他的基本策略如下: 1.當你實例化一個AsyncQueryHandler類時(包括其子類...),它會單件構造一個線程(后面會詳述...),這個線程里面會構建一個消息循環。
2.獲得該消息循環的指針,用它做參數實例化另一個Handler類,該類為內部類。至此,就有了兩個線程,各自有一個Handler來處理消息。3.當調用onXXX的時候,在XXX函數內部會將請求封裝成一個內部的參數類,將其作為消息的參數,將此消息發送至另一個線程。4.在該線程的Handler中,接受該消息,并分析傳入的參數,用初始化時傳入的ContentResolver進行XXX操作,并返回Cursor或其他返回值。
5.構造一個消息,將上述返回值以及其他相關內容綁定在該消息上,發送回主線程。
6.主線程默認的AsyncQueryHandler類的handleMessage方法(可自定義,但由于都是內部類,基本沒有意義...)會分析該消息,并轉發給對應的onXXXComplete方法。
7.用戶重寫的onXXXComplete方法開始工作。
這就是它偷偷摸摸做過的事情,基本還是很好理解的。我唯一好奇的是它的線程管理方式,我猜測他是用的單件模式。第一個AsyncQueryHandler的實例化會導致創建一個線程,從此該線程成為不死老處男,所有的ContentResolver相關的工作,都由該線程統一完成。個人覺得這種解決方式很贊。本來這個線程的生命周期就很難估量,并且,當你有一個ContentProvider的請求的時候,判斷你會做更多的類似操作并不過分。就算錯了,花費的也只是一個不死的線程(與進程同生死共存亡...),換來的卻是簡單的生命周期管理和無數次線程生死開銷的節約。同時另外一個很重要的問題,他并會涉及到單件中數據同步的問題,每個類都有各自的Handler類,彼此互不干擾,分發可以分別進行。當多個數據請求的時候,在同一個ContentResolver上進行的可能微乎其微,這就避免了堵塞。總而言之,這套解決辦法和Android的整體設計算是天作之合了。
所以建議,如果你有什么非ContentProvider操作,卻需要異步多線程執行的話,模擬一套,是個不錯的策略,當然,具體情況具體分析,生搬硬套是學不好馬列主義的。
7.顯示控件使用
Android的界面顯示同樣也是基于控件的。通常是用View(包括ViewGroup)控件配上XML的樣式來做的。具體細節不想說了,可以參考 Samples里的ApiDemos/View,和View的Doc,以及Implementing a UI這篇Doc。其他還有很多,感覺算是SDK講述的最多的內容。
從控件的使用上,和網頁的設計類似,盡量用parent_width之類的抽象長度,用Theme來做風格,抽取所有的字串等信息做本地化設計。相關內容參看Implementing a UI就好。
一類比較重要的是數據綁定控件。如果做過ASP.Net會從中看到很多類似的地方。一個支持數據綁定的控件,比如ListView。可以通過一個 ListAdapter綁定到一個數據源上。ListAdapter是一個抽象類,主要的實現類包括SimpleAdapter和 SimpleCursorAdapter。前者是綁定一個靜態的Array,后者是綁定一個動態的Cursor。Cursor前面說過,是一個指向數據源的隨機迭代器,將View綁定到Cursor通常要設置這樣幾個參數。一個是每一行的樣式,稱作Row Layout,其實就是一個普通的Layout的XML文件。還有就是一個列和現實控件的對應關系。那個控件顯示哪個列的值,這是需要配置的。為了定制一個良好的數據顯示控件,最簡單你可以定制很PP的Row Layout,復雜一點就是可以重載綁定控件View,或者是適配器ListAdapter。如果是一個數據顯示密集的應用,且你對UI有些追求,這個工作估計是必不可少的。
一個主要用于顯示數據內容的Activity,可以選擇派生自ListActivity。它提供了一個具有ListView 的Layout,還有simple_list_item_1, simple_list_item_2, two_line_list_item等默認的Row Layout,還有一些比較不錯的API,和可供響應選擇Item的事件。可以滿足你比較基礎的需求。如果你覺得只有一個ListView的界面太突兀,你可以為這個ListActivity指定一個Layout,需要注意的是,你需要提供一個id為@android:id/list的ListView控件,避免Activity在內部偷偷尋找該控件的時候失敗。
除了這些要求,做好UI還有注意易用性和效率。快捷鍵是一個比較不錯的選擇,在 Activity中調用setDefaultkeyMode(SHORTCUT_DEFAULT_KEYS),可以開啟快捷鍵模式,然后你可以將菜單綁定到指定快捷鍵上就OK了。個人覺得Tip也是一個比較重要的東西,但目前觀察看來,這個東西只能夠自己提供了。界面的動態性有時候是不可避免的,比如說菜單就是一個需要經常根據光標位置提供不同的選項。這個東西Android很人道的考慮到了,你可以參看NodeList這個Sample。它采取的應該是一個靜態模擬動態的方式,這樣有助于提高速度。你也可以利用ViewInflate,動態從一個XML創建一個控件。成本據Doc說很大,不到萬不得已不要使用。
8.Intent消息傳遞
在前面寫Android的ContentProvider時候,可以看到那是基于觀察者模式的一個消息傳遞方法。每一個Cursor、ContentResolver做為一個小的注冊中心,相關觀察者可以在這個中心注冊,更新消息由注冊中心分發給各個觀察者。而在MFC或Winform中,都會形成一個消息網,讓消息在網中流動,被各節點使用、吃掉或者在出口死掉。
相比之下,我個人覺得基于Intent的Android核心消息傳遞機制是有所不同的。它應該會有一個全局性的注冊中心,這個注冊中心是隱性的,整個Android系統中就那么一個。所有的消息接收者,都被隱形的注冊到這個中心。包括Activity,Service和IntentReceiver。其實說隱形注冊是不確切的,所有注冊都還是我們手動告訴注冊中心的,只是與傳統的方式不一樣,我們通常不是通過代碼,而是通過配置文件來做。在應用的Manifest中,我們會為一些Activity或Service添加上Intent-filter,或在配置文件中添加
當程序有一個消息希望發出去的時候,它需要將消息封裝成一個Intent,并發送。這時候,應該是有一個統一的中心(恩,有可能Android底層實現的時候不是,但簡單這樣看是沒問題的...)接受到這個消息,并對它進行解析、判定消息類型(這個步驟降低了耦合...),然后檢查注冊了相匹配的filter或receiver,并創建或喚醒接收者,將消息分發給它。這樣做有很多好處。雖然這種傳遞有的時候不如點對點的傳遞快(這有些需要速度的地方,我們看到Android會通過直接通信來做),但有時候又因為它只經過一跳(姑且這么叫吧...),比復雜的流動又要更快。更重要的是,它耦合性低,在手機平臺這種程序組件多變的條件下使用十分適合。并且它可以很容易實現消息的精確或模糊匹配,彈性很大。(我個人曾想在開發一個C++二次平臺的時候引入這樣的機制,但在C++中,建立一套完整的數據marshal機制不容易,相比之下,用java來做會簡單很多...)
恩,廢話說了很多,具體講講Android中Intent的使用。當你有一個消息需要傳遞,如果你明確知道你需要哪個Activity或者其他Class來響應的話,你可以指定這個類來接受該消息,這被稱為顯性發送。你需要將Intent的class屬性設置成目標。這種情況很常見,比如startActivity的時候,會清楚當前Activity完了應該是哪個Activity,那就明確的發送這個消息。
但是,有的時候你并不確定你的消息是需要具體哪個類來執行,而只是知道接收者該符合哪些條件。比如你只需要有一個接收者能顯示用戶所選的數據,而不想制定某個具體的方法,這時候你就需要用到隱形發送(傳統上,我們可能會考慮用多態,但顯然這種方式更為靈活...)。在Android中,你可以為Intent指定一個action,表示你這個指令需要處理的事情。系統為我們定義了很多Action類型,這些類型使系統與我們通信的語言(比如在Activity里面加一個Main的filter,該activity就會做成該應用的入口點),當然你也可以用于你自己的應用之間的通信(同樣當然,也可以自定義...)。強烈建議,在自己程序接收或發出一個系統action的時候,要名副其實。比如你響應一個view動作,做的確實edit的勾當,你發送一個pick消息,其實你想讓別人做edit的事,這樣都會造成混亂。當然只有Action有時候是不夠的,在Android中我們還可以指定catalog信息和type/data信息,比如所有的顯示數據的Activity,可能都會響應View action。但很多與我們需要顯示的數據類型不一樣,可以加一個type信息,明確的指出我們需要顯示的數據類型,甚至還可以加上一個catalog信息,指明只有你只有按的是“中鍵”并發出這樣的消息才響應。從上面可以看出,Android的Intent可以添加上class, action, data/type, catalog等消息,注冊中心會根據這些信息幫你找到符合的接收者。其中class是點對點的指示,一旦指明,其他信息都被忽略。Intent中還可以添加key/value的數據,發送方和接收方需要保持統一的key信息和value類型信息,這種數據的marshal在java里做,是不費什么力氣的。
Android的Intent發送,可以分成單播和廣播兩種。廣播的接收者是所有注冊了的符合條件的IntentReceiver。在單播的情況下,即使有很多符合條件的接收者,也只要有一個出來處理這個消息就好(恩,個人看法,沒找到確切條款或抉擇的算法,本來想實驗一下,沒來得及...),這樣的情況很容易理解,當你需要修改某個數據的時候,你肯定不會希望有十個編輯器輪流讓你來處理。當廣播不是這樣,一個receiver沒有辦法阻止其他receiver進行對廣播事件的處理。這種情況也很容易理解,比如時鐘改變了,鬧鐘、備忘錄等很多程序都需要分別進行處理。在自己的程序的使用中,應該分清楚區別,合理的使用。
9.ContentProvider數據模型
數據庫操作
從我目前掌握的知識來看,SQLite比較輕量(沒有存儲過程之類的繁雜手段),用起來也比較簡單。實例化一個SQLiteDatabase類對象,通過它的APIs可以搞定大部分的操作。從sample中看,Android中對db的使用有一種比較簡單的模式,即派生一個 ContentProviderDatabaseHelper類來進行SQLiteDatabase對象實例的獲取工作。基本上,ContentProviderDatabaseHelper類扮演了一個singleton的角色,提供單一的實例化入口點,并屏蔽了數據庫創建、打開升級等細節。在ContentProvider中只需要調用ContentProviderDatabaseHelper的openDatabase方法獲取SQLiteDatabase的實例就好,而不需要進行數據庫狀態的判斷。URI 像進行數據庫操作需要用SQL一樣,對ContentProivder進行增刪改查等操作都是通過一種特定模式的URI來進行的(ig:content: //provider/item/id),URI的能力與URL類似,具體細節可以查看SDK。建立自己的ContentProvider,只需要派生 ContentProivder類并實現insert, delete, update等抽象函數即可。在這些接口中比較特殊的是getType(uri)。根據傳入的uri,該方法按照MIME格式返回一個字符串(==!沒聽過的詭異格式...)唯一標識該uri的類型。所謂uri的類型,就是描述這個uri所進行的操作的種類,比如content://xx/a與 content://xx/a/1不是一個類型(前者是多值操作,后者是單值),但content://xx/a/1和content://xx/a/2 就會是一個類型(只是id號不同而已)。
在ContentProvider通常都會實例化一個ContentURIPraser來輔助解析和操作傳入的URI。你需要事先(在static域內)為該ContentURIPraser建立一個uri的語法樹,之后就可以簡單調用 ContentURIPraser類的相關方法進行uri類型判斷(match方法),獲取加載在uri中的參數等操作。但我看來,這只是在使用上簡化了相關操作(不然就需要自己做人肉解析了...),但并沒有改變類型判定的模式。你依然需要用switch...case...對uri的類型進行判斷,并進行相關后續的操作。從模式來看,這樣無疑是具有強烈的壞味道,類似的switch...case...代碼要出現N此,每次一個 ContentProvider做uri類型的增減都會需要遍歷修改每一個switch...case...,當然,如果你使用模式(策略模式...)進行改造對手機程序來說無疑是崩潰似的(類型膨脹,效率降低...),所以,只能是忍一忍了(恩,還好不會擴散到別的類中,維護性上不會有殺人性的麻煩...)。增刪改查
ContentProvider 和所有數據源一樣,向外提供增刪改查操作接口,這些都是基于uri的指令。進行insert操作的時候,你需要傳入一個uri和 ContentValues。uri的作用基本就限于指明增減條目的類型(從數據庫層面來看就是table名),ContentValues是一個 key/value表的封裝,提供方便的API進行插入數據類型和數據值的設置和獲取。在數據庫層面上來看,這應該是column name與value的對應。但為了屏蔽ContentProvider用戶涉及到具體數據庫的細節,在Android的示例中,用了一個小小的模式。它為每一個表建一個基于BaseColumn類的派生類(其實完全可以不派生自BaseColumn,特別當你的表不基于默認的自動id做主鍵的時候),這個類通常包括一個描述該表的ContentURI對象和形如 public static final TITLE = “title”這樣的column到類數據的對應。從改變上角度來看,你可以修改column的名字而不需要更改用戶上層代碼,增加了靈活性。insert方法如果成功會返回一個uri,該uri會在原有的uri基礎上增加有一個row id。對于為什么使用row id而不是key id我想破了腦袋。到最后,我發現我傻了,因為ContentProvider不一定需要使用數據庫,使用數據庫對應的表也可以沒有主鍵,只有row id,才能在任何底層介質下做索引標識。
但,基于row id在刪除和修改操作是會造成一定的混亂。刪除和修改操作類似。刪除操作需要傳入一個uri,一個where字串,一組where的參數(做條件判定...),而修改操作會多一個ContentValues做更新值。著兩個操作的uri都支持在末尾添加一個row id。于是混亂就出現了。當在where參數中指明了key id,而在uri中提供了row id,并且row id和key id所指函數不一致的時候,你聽誰的?示例代碼中的做法是完全無視row id(無語...),如此野蠻的方式我估計也只能在示例中出現,在實際中該如何用,恩,我也不知道。幸運的是,我看了下上層對 ContentProvider的刪除操作,其實都不會直接進行,而是通過調用Cursor的delete方法進行,在這前提下,我想Cursor會處理好這些東西吧。
最后一個操作是查詢操作,可以想見,查詢的參數是最多的,包括uri和一組條件參數。條件參數類型和標準的sql類似,包括 sort, projection 之類的。從這些參數到sql語句的生成,可以尋求QueryBuilder類的幫助,它提供了一組操作接口,簡化了參數到sql的生成工作,哪怕你不懂 sql都完全沒有問題(這話說的我自己都覺得有點懸...)。查詢返回一個Cursor。Cursor是一個支持隨機讀寫的指針,不僅如此,它還提供了方便的刪除和修改的API,是上層對ContentProvider進行操作一個重要對象,需要仔細掌握(Cursor還可以綁定到view上,直接送顯,并與用戶進行交互,真是程序越往上,封裝越好,工作越機械沒有復雜性了...)。數據模型
在與界面打交道的Cursor、ContentResolver等數據操作層中,大量采用觀察者模式建立數據層與顯示層的聯系。一個顯示層的視圖,可以做成某一種觀察者注冊到Cursor或ContentResolver等數據中間層中,在實現底層ContentProvider中,我們需要特別注意在對數據進行修改操作(包括增刪改...)后,調用相應類型的notify函數,幫助表層對象進行刷新(還有一種刷新方式是從一個view發起的)。可以看到 Android的整體數據顯示框架有點像MVC的方式。Cursor、ContentResolver相當于控制層,數據層和顯示層的交互通過控制層來掌管,而且控制層很穩定不需要特別定制,通常工作只在定制數據層和顯示層空間,還是比較方便和清晰的。
10.學習感想
通過這學期對安卓的學習,大概了解了以上一些知識,對安卓有了初步的了解,這幾個月給我的東西我想用有形的和無形的兩部分概敘,形的當然就是技術水平的長進,雖然其中肯定有很多的不足,相信慢慢會體會到。
第五篇:安卓版手機單機游戲下載排行榜2013前十名
安卓版手機單機游戲下載排行榜2013前
十名:
1.保衛蘿卜安卓版v1.1.1.258 簡介:保衛蘿卜安卓版v1.1.1.258下載提供一款操作順暢的經典超萌塔防游戲,很容易上手、老少皆宜,內置新手引導。保衛蘿卜安卓版含有豐富的關卡和主題包,擁有各自風格特色的多種防御塔,有趣的音效設定和搞怪的怪物造型及名字大大地增加了游戲的趣味性。玩家還可以收集道具和怪物,完成更多的成就。【游戲特點】
-48個關卡,3套精美的主題包,從天際到叢林,再到沙漠!-附加9張極限模式地圖等你來挑戰!-12關BOSS模式地圖,更多驚喜等你發現!獨一無二,讓塔防通過限時MINIGAME方式玩出花樣、玩出樂趣!-14個風格獨特的防御塔(瓶子塔,太陽塔、大便塔、花花塔?..更多花樣等你探索~)-精美的道具裡,藏著許多寶貝和秘密,別錯過,打掉它!-50+個搞笑滑稽的怪物,它們有著奇怪的名字:Woowala、PinkyNinja、TwistyFork??
-100+滑稽的音效,每個怪物和塔都會發出獨特有趣的聲音!-每個關卡只有15-25波怪物,碎片時間就可以玩的很過癮啦!-好多成就等你來完成!2.捕魚達人2免兌換碼版
y2t0d 手機游戲 www.tmdps.cn 手游 安卓V1.1.8 簡介:捕魚達人2免兌換碼版是安卓平臺上一款益智休閑游戲,在這個版本中,玩家可以體驗到捕魚達人2兌換碼去除后的游戲順暢度,同時定時領獎方式改為滑動領取,新版的捕魚達人2游戲不僅繼承了原版的特色,并增加“挑戰好友”模式,需聯網驗證的基于排行榜好友互動的游戲方式。使用新浪微博登錄;新增了“海洋之輪”老虎機玩法。游戲中玩家可以用網可捕捉到多達11種魚類,從觀賞魚到大型魚甚至包括鯊魚!當你成功捕獲時這些魚同時也會化為數不盡的金幣滾滾而來,堆滿你的船艙這將是一次新奇有趣的探寶之旅。
游戲特色:一,-爽快的捕魚體驗。二-更自然優美的魚群游動。三-可供選擇的豐富漁場,展現海底多樣風情。四-機槍、散彈、激光,三大類武器各具特色。五-開放自由調整倍率,與不同武器組合出多樣捕魚策略。六-全新卡牌系統,隨機觸發事件和小游戲。3.鱷魚小頑皮愛洗澡安卓版v1.12.0 簡介:鱷魚小頑皮愛洗澡安卓版是安卓平臺一部基于物理原理的智益游戲,迪斯尼品質保證,并且是原
y2t0d 手機游戲 www.tmdps.cn 手游 生簡體中文。鱷魚小頑皮愛洗澡安卓版的靈感來自一個都市故事,住在城市下面的鱷魚Swampy希望過上人一樣的生活,他尤其喜歡干凈。對于鱷魚Swampy的怪癖,其他鱷魚并不認可,他們合謀破壞Swampy的水源供給。樂趣才剛剛開始。Swampy的管道斷了,在7個主題章節里,您要負責讓水再流起來,每個章節包含20個富有挑戰性的關卡。繼續玩!免費升級包含新章節。4.捕魚達人官方版安卓v1.8.12 簡介:捕魚達人官方版安卓FishingJoy支持android2.1以上系統版本,捕魚達人官方版安卓在游戲中用網可捕捉到多達11種魚類,從觀賞魚到大型魚,甚至包括鯊魚!簡單操作、金幣滾滾。游戲中有不同的魚群,回報的金幣數也不盡相同。只要對準屏幕上的魚群點擊,就會發射出網來捕捉,玩家將體驗到前所未有的爽快感。更有前所未有的獨創攻擊,可使用激光或者全屏撒網,讓捕捉的魚數加倍,金幣加倍。5.神廟逃亡魔境仙蹤安卓v2.2.0官方中文版
簡介:神廟逃亡魔境仙蹤安卓v2.2.0官方中文版打造全新的神廟系列,游戲的場景震撼人心,在黃磚路上體驗最驚心動魄的魔境仙蹤逃亡,這款神廟逃亡魔
y2t0d 手機游戲 www.tmdps.cn 手游 境仙蹤安卓中文版由迪斯尼和ImangiStudios出品。玩家化身為奧茲,通過轉彎、跳躍和滑動來逃脫狒狒的魔爪。現快來開始這令人興奮的冒險之旅吧,看您可以跑多遠!游戲特色: 重現電影中那些令人驚嘆的場面-快去探索。乘坐熱氣球飛行-賺取更多金幣。探索奧茲國中不同的地點–循著信號桿!當您奔跑的時候環境會有變化–測試您的反射。在每周挑戰中競賽–打敗您的朋友!神廟逃亡:魔境仙蹤6.燃燒的蔬菜2安卓版V2.0.1介紹
簡介:燃燒的蔬菜2安卓版為廣大用戶提供正版蔬菜益智類游戲,燃燒的蔬菜2安卓版開啟全新場景--“月光花園”浪漫登場。新玩法、新伙伴、新地圖,傳承經典、締造新劇情。夠膽、夠聰明就來“月光花園”挑戰吧。燃燒的蔬菜2,將2歡樂到底。新版本擁有全新怪物家族,全新故事,全新系統,蔬菜家族新伙伴,華麗升級.燃燒的蔬菜2游戲中原本的Q版小清新風格依
y2t0d 手機游戲 www.tmdps.cn 手游 然得以保留。戲里的蔬菜形象,看起來呆頭呆腦,更加有趣,絕對是女朋友一看就喜歡。7.割繩子瘋狂實驗室安卓版v2.3.1 簡介:割繩子瘋狂實驗室安卓版v2.3.1中游戲的主角依然是那只貪吃的綠皮小怪獸,現在,它將到達一個科學家的家里,繼續吃到自己喜歡的餅干。新版續作包含了5個大關125個全新的關卡,分別為:新手入門、射擊糖果、粘性臺階、精密科學、沐浴時間,其中后三個關卡需要手機足夠的星星才能解鎖。新關卡中加入了多種全新的道具元素,包括繩槍、火箭、水等,會給你帶來全新的游戲體驗。
游戲特色: 175個富含創意的游戲關卡,讓玩家大呼過癮,從此愛上做實驗!中文配音,另類搞怪,瘋狂實驗室與眾不同,更加給力!7個關卡環環相扣,難度適中:重力實驗合力實驗壓力實驗火藥實驗浮力實驗機械實驗生物實驗,樂趣不打折,精彩更翻倍!8.神廟逃亡2安卓版v1.3.2
y2t0d 手機游戲 www.tmdps.cn 手游 簡介:神廟逃亡2安卓版下載已超過1億7千萬重新定義了跑酷游戲,安卓神廟逃亡2中文版下載方便,神廟逃亡2安卓版新作中的游戲主角有四種,分別是兩男兩女。默認情況下會是一名男性,其他三人均需要用游戲金幣來進行,最貴的好像是一名中國籍的女性。四款角色在人物屬性方面沒有區別,但是在彈跳的動作和叫聲方面有明顯區別。不少玩家喜歡選擇女性角色就是因為她的叫聲與眾不同。神廟逃亡2安卓版游戲特色: 擁有炫目的新場景,可享受到華麗的新體驗 添加多個新障礙,添加新能量道具 更多成就,每個英雄都擁有特殊技能
超級無敵大猩猩9.找你妹安卓版v5.0.0介紹 簡介:找你妹安卓版是一款結合了傳統的找茬系列元素和經典的角色扮演系列元素的游戲。找你妹安卓版擁有風趣幽默的故事情節,詼諧搞笑的畫面,包含豐富的游戲模式以及道具系統,同時也充滿了時下流行語和網絡紅人的搞笑尋物游戲。玩家在游戲中要不惜一切代價找到題目要求的物品,努力掙錢從“屌絲”
y2t0d 手機游戲 www.tmdps.cn 手游 變成“高富帥”。
游戲特色: 游戲結合經典找圖系列游戲和RPG游戲元素,玩家在游戲中培養角色,完成任務,升級各類牛B技能。還能使用多種道具,在困難時刻助你克服困難,找到目標。10.極限摩托3安卓中文版v5.2介紹
簡介:極限摩托3安卓中文版v5.2TrialXtreme3是一款平衡極限摩托特技競速游戲,這是極限摩托系列的第三部,極限摩托3安卓中文版游戲需要通過重力感應平衡控制摩托車的駕駛,非常具有挑戰性。一套全新的背景,將競技場地搬到了擁有開闊景致的海邊,而高架凌空的場地設施,不僅讓你可以一覽美麗景色,也帶來了臨空失重的刺激。游戲中玩家依然可以自定義騎手的外觀裝備以及座駕,從頭盔武裝到腳的服裝提供了比較多的選擇,不過相比在摩托車的裝飾與新車選擇上,外觀的支出比較少。游戲中提供了Classic、Jumper、Storm三種車型,不過在這上面的花費可是一筆不小的支出。操作上,你可以通過加速、剎車以及重力感應來控制摩托的機動與平衡,收集路上的道具可以為你本關成績加分,抵達終點即算過關。76個關卡等
y2t0d 手機游戲 www.tmdps.cn 手游 你挑戰,末日了,抓緊時間騎個車吧!