2C課程筆記分享_StudyJams_2017

来源:http://www.cnblogs.com/DerekKen/archive/2017/05/28/6915800.html
-Advertisement-
Play Games

課程2C的內容主要是練習鞏固2A、2B中講解的內容,並設計實現一款籃球比賽的計分板應用及其界面的美化。 ...


課程2C-實踐:創建互動式應用

概述

  • 課程2C的內容主要是練習鞏固2A、2B中講解的內容,並設計實現一款籃球比賽的計分板應用及其界面的美化。

Warm-Up:準備活動

  • 新建項目PracticeSet2(包名android.example.com,Minimum SDK:API 15,Empty Activity),主要練習了int型變數的聲明和初始化。

  • 這部分練習要想實現的功能是計算一個人一周的睡眠時間與推薦值之間的差距。課程中的代碼計算過程有一個邏輯錯誤:只計算了一個工作日(weekday)的睡眠時間,而漏掉了剩下4天工作日的睡眠時間。

    課程中介紹:通過手動模擬程式運行(hand simulation)的方法,可以幫助程式員避免邏輯錯誤。主要的思路是比較"what the program does"與"what we actually do"

  • 接下來的一些練習有計算通勤者花在路上的時間、計算購物清單總價等等,它們都是為了幫助初學者修複或者避免代碼中的邏輯錯誤。

  • 第三部分(Part 3)的練習的主題是作用域(scope)。在HealthyLiving(健康生活)這一塊兒的練習中,解釋了為什麼不使用全局變數:a)使用到當前變數的地方並沒有跨方法(即該變數只在一個方法中用到);b)該變數存儲的是一些中間值,更新的頻率很高,不適於共用,因此也就不適於使用全部變數;3)可以避免錯誤:濫用全局變數的話,有可能引入副作用(side effects,在程式設計的語境中,表示發生了程式員不知道且不期望的行為)。即全局變數的值可能在其他地方“不小心”地被更改了,從而引入BUG。

    關於全局變數與局部變數的選取問題,有一個基本原則:僅在必要的時候使用全局變數。一個簡單的判斷方法是,當你發現不用全局變數無法實現期望的功能時,就說明此時全局變數的使用應該是必要的。

CourtCounter:籃球計分板應用

    a) 首先介紹了一些新的Android XML屬性,TextView控制項的gravity屬性:指定文本的對齊方式,如“水平居中”、“垂直居中”等。

    b) 關於padding(內邊距)的提示:在Button控制項中,如果指定了過大的padding值,那麼按鈕本身也會變大! 所以,最好使用margin(外邊距)屬性來控制界面佈局中控制項之間的邊距。

    c) 引入按鈕單擊事件的響應函數:把.xml與.java文件聯繫起來。

    d) 開啟Android Studio中的Auto Import功能:可以自動在寫代碼的時候引入相關的Java Package,提高開發效率。

    e) 實現更新隊伍得分的邏輯:推薦先寫一寫偽代碼,理清思路再動手寫代碼,往往比想清楚之前直接coding更有效率(雖然這樣的結論看起來有些反直覺)。

做完了以上的步驟,我們得到了Team A的計分板界面,在Android Studio中的界面預覽如圖1所示,在手機上運行的效果如圖2所示。

Fig1. Android Studio界面A的Preview

圖1. Android Studio界面A的Preview



Fig2. Team A的界面

圖2. Team A的界面



    f) 增加另一個隊伍Team B之後的界面,用到了嵌套視圖組來實現,要是想不清楚如何嵌套,可以先畫畫層級關係的樹狀圖。新增的Team B的界面在層級關係上與Team A的界面是兄弟關係(siblings)。

Fig3. Preview增加Team B的界面

圖3. Preview增加Team B的界面



Fig4. 增加Team B的界面

圖4. 增加Team B的界面



Fig5. 增加Team A、B的比分

圖5. 增加Team A、B的比分



    g) 重置記分牌:在界面底部居中的位置,增加一個重置記分牌的比分的按鈕,需要再次嵌套視圖組。從View Groups層級關係上來講,這裡的Button所在的視圖組與前Team A、B的視圖組也是兄弟關係(siblings)。

    h) 美化界面:通過直接在XML中指定16進位的顏色值,增加Team A、B的分隔線,調整padding與margin,修改使用的字體等方法,來美化之前的界面。由於我手機的API Level 為19,無法運行界面美化後的程式,這裡只放出界面Preview。

Fig6. 美化計分板界面

圖6. 美化計分板界面



Fig7. 調整分隔線的長度

圖7. 調整分隔線的長度




您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前面的話 Douglas Crockford大神根據自己的理念用JavaScript寫了一個JavaScript代碼規範檢查工具,這就是JSLint。後來非常流行,也的確幫助了廣大的JavaScript程式員。但是,大神對於自己的代碼規範不做絲毫的妥協,對開源社區的反饋的回應也不禮貌。於是,JSLi ...
  • CSS中可以通過設置為元素設置一個position屬性值,從而達到將不同的元素顯示在不同的位置,或者固定顯示在某一個位置,或者顯示在某一層頁面之上。 position的值可以設為relative,absolute,fixed,static。 HTML代碼里定義兩個區塊: 1.相對定位: 以上代碼將實 ...
  • 一、React的發展 facebook在構建instagram網站的時候遇見兩個問題: 1、數據綁定的時候,大量操作真實dom,性能成本太高 2、網站的數據流向太混亂,不好控制 於是facebook起初調研過市場上已存的mvc框架,發現都不太滿意,於是就推陳出新,開發了react框架,併在2013年 ...
  • 0. 掌握基礎 對於任何行業任何工作來說,融會貫通是獲得成功的關鍵。一個人想要成為優秀程式員,就必須有堅實的基礎。核心理念的理解會幫助你用最好的方法設計和實施出最完美的方案。如果你感覺到不能掌握核心的電腦科學或者某個編程語言的知識點,現在開始回顧基礎一點都不晚。 1. 開始為你寫過的代碼貼上標簽( ...
  • let實際上為 JavaScript 新增了塊級作用域。 塊級作用域的出現,實際上使得獲得廣泛應用的立即執行函數表達式(IIFE)不再必要了。 本質上,塊級作用域是一個語句,將多個操作封裝在一起,沒有返回值。 ...
  • 最近閑來沒事,做了一個畫江湖圖片滾動載入的demo,大家感興趣可以下來看一下 以下為界面截圖: 圖片會隨滾動條的拖動動態載入,目前來說只是載入的本地的資源,大家可以從後臺抓取數據來實現懶載入. 支持圖片點擊然後大圖來查看: 代碼已經放到git上了,歡迎下載試用 https://github.com/ ...
  • 摘自阮一峰的es6教程 http://es6.ruanyifeng.com/#docs/let ...
  • 課程3A的內容主要是介紹面向對象編程思想的一些基本概念並做了相應的練習指導。 面向對象的思想在當今的軟體開發中占據著主導地位。 Java是一門完全面向對象的語言,是一種天然的分散式互聯網軟體的開發語言,在當今企業級應用中占據絕對領先地位,也是開源世界的頂梁柱。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...