1. 程式人生 > >Android群英傳讀書筆記——第十三章:Android例項提高

Android群英傳讀書筆記——第十三章:Android例項提高

第十三章目錄

13.1 移動迷宮——拼圖遊戲

  • 13.1.1 準備工作
  • 13.1.2 初始介面
  • 13.1.3 拼圖介面
  • 13.1.4 效果預覽與功能進階

13.2 魔幻矩陣——2048

  • 13.2.1 2048概述
  • 13.2.2 2048遊戲分析
  • 13.2.3 2048初始工作
  • 13.2.4 小方塊設計
  • 13.2.5 全域性設定
  • 13.2.6 遊戲面板設計
  • 13.2.7 主程式設計
  • 13.2.8 功能進階

13.3 實戰經驗總結

第十三章讀書筆記

本來這章不想寫了,但是還是把主要內容概括一下吧,一共兩個例項

13.1 移動迷宮——拼圖遊戲

13.1.1 準備工作

13.1.1.1 獲取螢幕相關屬性

  • 建立了一個工具類,封裝了獲取螢幕寬高螢幕density的靜態方法

13.1.1.2 美化按鈕

  • 定義xml檔案,shapeselector來對更改按鈕外觀和點選事件後的變化

13.1.2 初始介面

  • 一些基本的佈局,此書作者用得是GridView,選擇難度用得是PopupWindow

13.1.2.1 點選事件

  • 用到選擇本地相簿和相機拍照,然後在onActivityResult()方法中接受返回值並進行操作

13.1.3 拼圖介面

  • 佈局就不說了

13.1.3.1 拼圖演算法

  • 隨機打亂圖片後,有50%的機率將會是無解的,非常著名的演算法——N Puzzle問題

13.1.3.2 圖片Item實體類

  • 用於放在GridView的介面卡當中的,存放id和bitmmap資訊

13.1.3.3 圖片工具

  • 涉及到2x2、3x3、4x4三種不同模式,封裝兩個方法:1、將bitmap分割,2、放大縮小到合適的位置

13.1.3.4 生成遊戲

  • 去生成亂序的圖片,去根據上面提到的那個演算法並判斷是否有解

13.1.3.5 移動圖片

  • 點選事件:如果是空格圖片周圍的圖片可以去點選
  • 交換:交換後判斷是否還原成功,當前id與初始狀態下的id是否相同
  • 成功:如果成功了,將最後一塊圖片補齊,提示成功
  • 計時:通過Timer進行計時,一秒去重新整理一下TextView
  • 記步:在GridView的點選事件中記數
  • 重置:這個調一下初始的生成圖片的方法
  • 返回:直接finish()
  • 顯示原圖:先Gone掉,然後通過一個動畫的形式顯示出來

13.1.4 效果預覽與功能進階

  • 還可以優化整個專案,新增新的內容,多人競技,成績記錄等功能
  • 另外,還可以開發一些新的拼圖模式,創新玩法等

13.2 魔幻矩陣——2048

13.2.1 2048概述

  • 這個遊戲的開發者是2014年3月份一個20歲的男孩在一個週末完成的一款遊戲,意外躥紅
  • 具體玩法:上下左右滑動,所有數字都將會向滑動方向靠攏,遇到相同的數字就相加、合併,移動成功後會在空白區域隨機出現一個數字,2或者4,直到數字合併到2048,則挑戰成功

13.2.2 2048遊戲分析

13.2.2.1 確定佈局

  • 面板:4x4的格子,作者使用的是GridLayout
  • 小方塊:將小方塊抽象成一個物件,擁有數值,顏色等屬性

13.2.2.2 確定演算法

  • 使用0來代表空格,如果某一行(列)為2204,先將224存入list中,然後2和2合併,為44,並將其作為該行(列)的返回值,從滑動的方向開始放置list中的數字

13.2.3 2048初始化工作

13.2.3.1 遊戲主介面

  • 佈局沒什麼說的,button背景還是用shape自定義

13.2.3.2 配置介面

  • 不光是4x4,也可選擇5x5、6x6等型別,不光是2048,也可以是4096等等

13.2.4 小方塊設計

  • 小方塊設計為繼承自FrameLayout,並新增一個TextView,然後提供一個setNum方法,設定數值,並根據數值判斷顏色

13.2.5 全域性設定

  • 建立一個Application類,在Mainifest檔案中設定Application入口,在此類中完成對遊戲的配置

13.2.6 遊戲面板設計

13.2.6.1 初始化遊戲矩陣

  • 初始化的時候,移除之前遊戲的所有佈局,首先將所有小方塊都設定為0
  • 通過一個方法來新增隨機數字2或者4

13.2.6.2 增加滑動事件

  • 在onTouch()方法中捕獲按下和鬆開的事件,通過座標來判斷向哪個方向去滑動
  • 此書作者加了一個超級使用者的許可權,滑到一定的長度彈出對話方塊,想要什麼數就是什麼數
  • 判斷好具體的滑動方向後,就可以通過封裝好的四個swipeXXX()方法來執行小方塊的合併操作
  • 合併的演算法:對相同數字進行合併,加一個標誌位,合併過一次就不再合併了

13.2.6.3 記錄歷史矩陣

  • 通過記錄矩陣實現撤銷的功能

13.2.6.4 判斷遊戲結束

  • 遊戲成功意味著完成了2048,在每一次ACTION_UP操作都去呼叫一下判斷的方法
  • 遊戲失敗意味著不能再移動了,需要去判斷每一個小方塊的數值在其上下左右都沒有相同的了

13.2.7 主程式設計

13.2.7.1 新增遊戲面板和遊戲資訊

  • 遊戲記錄,遊戲分數什麼的,比較簡單吧

13.2.7.2 動畫效果

  • 本書是通過對小方塊做了一個簡單的Scale變換

13.2.8 功能進階

  • 換膚功能,多人一起玩的功能

13.3 實戰經驗總結

  • 通過這兩個例項,拋磚引玉,讓讀者能夠找到解決問題的方法
  • 在開發過程中,多總結、歸納所獲得的學習經驗

總結

這本書也就算看完了,起碼筆記都過了一遍,但是僅看一次還不夠,我還是認為無論什麼書看第二遍、第三遍和看第一遍是完全不一樣的,所以所以還是要多多回顧,才能學到更多的東西,有一句俗話說的好啊:“溫故而知新”,學習的路程很漫長,堅持一定會有成果的,加油!

相關推薦

Android群英讀書筆記——十三Android例項提高

第十三章目錄 13.1 移動迷宮——拼圖遊戲 13.1.1 準備工作 13.1.2 初始介面 13.1.3 拼圖介面 13.1.4 效果預覽與功能進階 13.2 魔幻矩陣——2048 13.2.1 2048概述 13.2.2 2048遊戲分析 13.2.3

Android群英讀書筆記——Android效能優化

第十章目錄 10.1 佈局優化  10.1.1 Android UI渲染機制 10.1.2 避免Overdraw 10.1.3 優化佈局層級 10.1.4 避免巢狀過多無用佈局 10.1.5 Hierarchy Viewer 10.2 記憶體優化

Android群英讀書筆記——Android動畫機制與使用技巧

第七章目錄 7.1 Android View動畫框架  7.1.1 透明度動畫 7.1.2 旋轉動畫 7.1.3 位移動畫 7.1.4 縮放動畫 7.1.5 動畫集合 7.2 Android屬性動畫分析  7.2.1 ObjectAnimato

Android群英讀書筆記——Android系統資訊與安全機制

第九章目錄 9.1 Android系統資訊獲取  9.1.1 android.os.Build 9.1.2 SystemProperty 9.1.3 Android系統資訊例項 9.2 Android Apk應用資訊獲取之PackageManager 

Android群英知識點回顧——Android系統信息與安全機制

class 以及 包名 bug 也有 不同的 ger class文件 訪問權限控制 9.1 Android系統信息獲取 9.1.1 android.os.Build 9.1.2 SystemProperty 9.1.3 Android系統信息實例

Android群英知識點回顧——Android繪圖機制與處理技巧

ride ets 常用 結合 管理 一個 sla 浮雕效果 調用 6.1 屏幕的尺寸信息 6.1.1 屏幕參數 6.1.2 系統屏幕密度 6.1.3 獨立像素密度dp 6.1.4 單位轉換 6.2 2D繪圖基礎 6.3 Android X

Android群英讀書筆記——十二Android 5.X新特性詳解

第十二章目錄 12.1 Android5.X UI設計初步  12.1.1 材料的形態模擬 12.1.2 更加真實的動畫 12.1.3 大色塊的使用 12.2 Material Design主題 12.3 Palette 12.4 檢視與陰影 12

強化學習(RLAI)讀書筆記十三策略梯度方法(Policy Gradient Methods)

強化學習(RLAI)讀書筆記第十三章策略梯度方法(Policy Gradient Methods) 13.1 Policy Approximation and its Advantages 13.2 The Policy Gradient Theore

Android群英讀書筆記---自定義控制元件(-)

自定義控制元件 雖然我也寫過自定義控制元件,但是從沒有進行一個系統的總結,正好借這本書的內容,重新梳理一下, 通常情況下,常用的有三種方法: 對現有控制元件進行擴充套件 通過組合控制元件來實現新的控制元件 重寫view來實現全新的控制元件(最難) 1

Android群英讀書筆記——Android Scroll分析

5.1  滑動效果是如何產生的         滑動的本質是改變View的座標 5.1.1  Android座標系         螢幕左上角為原點,向右為x軸正方形,向下為y軸正方向         系統提供了View.getLocationOnScreen(i

Android 群英讀書筆記

偶然在知乎上看到了關於《Android 群英傳》的介紹,感覺還不錯,尤其是作者前言中寫的內容和我簡直心照不宣——Android 學習的瓶頸與進階,讀了快半本了,感覺非常不錯,不合適初學者,但絕對適合學習到了瓶頸期,想要突破自我的 Android 開發者,比如我。

《數據庫設計入門經典》讀書筆記——工作場所中的數據庫建模

中間 特定 理論 大學 並且 外鍵 另一個 必須 所有 規範化用於粒度化和組織在數據庫中使用的數據。 在第4章中將詳細介紹規範化和應用範式的過程。在這個階段只需要知道規範化是用於將數據劃分到單獨表中的方法或公式——根據一組規則。 不信任將視圖用於除了安全性目標之外的任何事情

《白話深度學習與Tensorflow》讀書筆記--1機器學習是什麼

機器學習從學習的種類來說,可以分為兩種: 1.無監督學習,即人們獲得訓練的向量資料後在沒有標籤的情況下嘗試找出其內部蘊含關係的一種挖掘工作。 2.有監督學習,即每一個樣本都有著明確的標籤,最後總結出這些訓練向量與標籤的對映關係。 1.1 聚類 定義:是一種典型

Java程式設計思想讀書筆記——訪問許可權控制

第六章 訪問許可權控制 初學Java的時候很納悶,為什麼要提供各種訪問修飾,都用public不就行了,程式都能執行,還多省事 我感覺如果這個程式只有你自己去編寫,去維護,那麼其實訪問許可權可以忽略 但是,比如說我寫了一個第三方開源庫,有很多很多的人在使用我的庫,那麼如

《lua程式設計》讀書筆記 語句

4.1 賦值 Lua支援“多重賦值”,即可以一次性將多個值賦予多個變數。 a,b = 10, 2*x 在多重賦值中,Lua先對等號右邊所有元素求值,然後才執行賦值,這樣便可以進行交叉賦值 x,y = y,x a[i], a[j] = a[j],

《JAVA程式設計思想》學習筆記---十三字串

1,不可變String String物件時不可變的,每一個看起來會修改String的方法,實際上都是建立了一個全新的String物件,而最初的String物件絲毫未動! package com.str; public class Immutable {

Effective Java讀書筆記 -- 對於所有物件都通用的方法

儘管Object是一個具體類,但是設計Object類主要是為了擴充套件。它的所有非final方法(equals、hashCode、toString、clone和finalize)都有明確的通用約定,因為它們就是被設計成要被覆蓋的。第八條:覆蓋equals時請遵守通用約定   

《從0到1》讀書筆記2"像1999 年那樣狂歡"1記:小結及詞匯解析

content 高新 1.8 匯率 穩定 盈利模式 fun csdn 外匯 小結 本章的目的應該是通過90年代末的互聯網泡沫的背景,成因。影響,以及教訓來教誡人們,在全部人都瘋狂的拋身於洪流熱潮之中時,我們要冷靜的思考辨識出那些不切實際的大眾觀點,

《從0到1》讀書筆記4“競爭意識”1記霧失樓臺,月迷津渡

spl 讓我 tails ext ont down 激情 都是 lines 一直以來我們接受的教育都是教導我們要做個出類拔萃的好學生,小學如此,中學這般,大學也是如是。而評論是否是個好學生的標準在我國有“三好學生”做衡量。而隨著社會就業競爭形勢的日益

java並發編程的藝術,讀書筆記

java並發編程的藝術final域的內存語義寫final域的重排規則:禁止把final域的寫重排序到構造方法之外,主要包括倆個個方面1)JMM禁止編譯器把final域的寫重排序到構造方法之外2)編譯器會在final域寫之後,構造函數return之前插入一個storestore屏障,這個屏障禁止處理器把fina