Android開發筆記(4)——MainActivity.java文件修改&佈局嵌套

来源:http://www.cnblogs.com/igoslly/archive/2017/05/04/6805020.html
-Advertisement-
Play Games

筆記鏈接:http://www.cnblogs.com/igoslly/p/6805020.html 筆記以開發名為CoffeeOrder的app活動為線索,介紹app如何從功能設計→佈局設置→代碼編寫→改進,介紹java文件修改和佈局嵌套。 一、應用知識 首先來看一些AndroidStudio的基 ...


筆記鏈接http://www.cnblogs.com/igoslly/p/6805020.html           筆記以開發名為CoffeeOrderapp活動為線索,介紹app如何從功能設計→佈局設置→代碼編寫→改進,介紹java文件修改佈局嵌套   一、應用知識        首先來看一些AndroidStudio的基本知識,幫助大家有個基本概念。         在L1和2A課程,我們學習關於XML的代碼修改,基本都在修改MainActivity.xml。我們可以直接在視圖中查看XML代碼的實際視圖。         WINDOWS打開Emulator——安裝Virtual Device,下載Nexus4 Android平臺庫。若系統提醒BIOS未支持VT-X,需要手動在BIOS-configuration-Virtual Technology打開。         2A課程提到MainActivity.java由Java代碼實現文件定義MainActivity佈局的目的、功能,並包含各種方法的實際代碼。

 

        一些概念:         Android DDMS實際Android手機調試時,可以監控設備的活動。         logcat輸出日誌,記錄並收集設備調試過程中的所有行為。         Pseudocode
        偽代碼——解釋應用每一步驟內容的高級描述語言。偽代碼和描述不同,以文字形式、以代碼的思維分解每個行為的具體內容,並可以直接將每一句改寫為代碼。         局部變數&全局變數:在程式文件中,往往會包含多個函數。在每個函數體內定義的變數僅在該函數運行時有效賦值,結束後即釋放;全局變數在子函數體外定義,併在程式運行時持續有效。   二、應用設計思路          設計整個應用,主要需要以下工作:           界面顯示:           顯示QuantityPriceOrder按鈕,添加TextViewButton         數據計算:          根據實際QUANTITY×單價計算實際金額——引入變數設置         Button鏈接:     按鈕的設置和TextView相同,主要涉及點擊Button後的設置。         數目增減:           當按下加減按鈕時,能夠實時增減QUANTITY         顯示更新:          在設置View時我們通常設定初值,當需要改變顯示值時,需要額外定義活動。   界面顯示——   數據計算——        當需要修改數目時,可直接打開Java文件進行修改;         每次打開太過麻煩,且Java不向用戶開放,為直接通過UI動作進行更新,設置Quantity變數,這樣UI的每個操作都可直接修改QUANTITY,自動經過函數進行顯示。         定義模式:         (Datatype)(Variable name)=(Initial value
    int num = 0;

 

Button鏈接——         設置Button點擊活動主要涉及屬性android:onClick=”submitOrder         表示當每次點擊Button按鈕時,都會在Java文件中尋找submitOrder方法進行運行。
    public void submitOrder(View view) {
        displaystatus(1);
    }

 

數目增減——         同理【+】【-】按鈕可定義方法“increment”“decrement         方法體代碼:quantitty=quantity+1;  displayquantity(quantity);
    public void increment(View view) {
        num++;
        display(num);
        displayPrice(num * 5);
        displaystatus(0);
    }
  顯示更新——         Quantity_text_view進行修改,需要定義displayquantity()displayprice()
 private void display(int number) {
        TextView quantityTextView = (TextView) findViewById(R.id.quantity_text_view);
        quantityTextView.setText("" + number);
    }

private void displayPrice(int number) {
        TextView priceTextView = (TextView) findViewById(R.id.price_text_view);
        priceTextView.setText(NumberFormat.getCurrencyInstance().format(number));
    }

 

狀態更新——        在課程視頻中,每次點擊ORDER,程式會對實時數目進行計算。         但實際生活中,點擊ORDER往往直接提交訂單,故需要數目修改實時更新金額,再點擊ORDER後,我們期望返回狀態“Successfullyordered         同displayprice方法,我們定義displayStatus(charstatus),只是這裡不在是int數字,而是String字元串(一串文字)
private void displaystatus(int number) {
        TextView statusTextView = (TextView) findViewById(R.id.status_text_view);
        if (num==0)
            statusTextView.setText("Please enter quantity !");
        else if (number==0)
            statusTextView.setText("Ordering...");
        else
            statusTextView.setText("Successfully ordered !");
    }

 

更多改進: 改進1——嵌套結構           佈局優化,當我們需要移動Button按鈕至Quantity_text_view同行後,破壞原有LinearLayout的垂直結構。         (1)全局從LinearLayout修改為RelativeLayout                 RelativeLayout由於過靈活地佈局設置,由於加減按鈕以外的View依舊以垂直結構為主,我們可以採用第二種方法。         (2)LinearLayout嵌套子LinearLayout                 從結構來看,嵌套結構所做的改變如下圖所示:                 可以在StudioDesign面板Component樹看到不同View的嵌套層級結構     改進2——字元串設置           字元串String和整數Int同屬於變數,定義方式同:                  String(類型) Stringname(自定義名字)= ” dfadfljaldskfj”(初始值)         訂購過程中,可同時更新訂單的狀態”Successfullyordered” ”Orderfailed   實際操作:         對displaystatus輸入參數進行修改int num String status
displaystatus("Please select beverage !");
        同時字元串還有“連接”獨特性,可以通過加號“+”進行連接,String+int=String     改進3——條件判斷          在加減數目時,沒有對0進行識別,即會產生數目-1.金額-5情況         故而在decrement方法中,我們可以增加以下代碼
 if (num == 0)
            num = 0;
        else
            num--;
      表示數目為0時,保持不變;不為0(正整數),數目減1     改進4——Gravity        layout_gravity由所屬ViewGroup控制         gravityView控制         涉及屬性包括:                 該控制項的佈局方式。可以取以下值:                 top                     -- 控制項置於容器頂部,不改變控制項的大小。                 bottom                -- 控制項置於容器底部,不改變控制項的大小。                 left                     -- 控制項置於容器左邊,不改變控制項的大小。                 right                   -- 控制項置於容器右邊,不改變控制項的大小。                 center_vertical     -- 控制項置於容器豎直方向中間,不改變控制項的大小。                 fill_vertical          -- 如果需要,則往豎直方向延伸該控制項。                 center_horizontal -- 控制項置於容器水平方向中間,不改變控制項的大小。                 fill_horizontal      -- 如果需要,則往水平方向延伸該控制項。                 center               -- 控制項置於容器中間,不改變控制項的大小。                 fill                    -- 如果需要,則往水平、豎直方向延伸該控制項。                 start                 -- 控制項置於容器的起始處,不改變控制項的大小。                 end                  -- 控制項置於容器的結束處,不改變控制項的大小。



改進5——增加多種飲品種類 改進5是結合改進1~4的應用,包含佈局嵌套、新變數設置、字元串顯示等        佈局嵌套                在第一級ViewGroup嵌套子LinearLayout,添加三種飲品Button                  ——“MOCHA”“CAPPUCCINO”“GREENTEA        設置新變數price                 此時不僅飲品數目num,飲品價格也隨種類變化,增加變數price,同為全局變數                 在不同按鍵onClick鏈接方法中,分別對price進行賦值,displayPrice顯示(確保動態金額顯示)
  public void greenteaPrice(View view) {
        price=3;
        kind="Green tea";
        displayPrice(price*num);
    }

 

        豐富訂單狀態信息              每次提交ORDER時,向用戶反饋飲品種類+飲品數量               飲品種類設置全局變數kindString類型,同price一起賦值、               飲品數量num表示,最後displaystatus(“Ordered ”+ kind+ ” cup ”+num);
  public void greenteaPrice(View view) {
        price=3;
        kind="Green tea";
        displayPrice(price*num);
    }

 

所有改進之後得到的CoffeeOrder的效果為

申明:

1、本筆記為文字及圖片均為個人原創,轉載請註明博客園-igoslly

2、Android開發課程於2017年4年參與GoogleDeveloper進行學習,筆記原版http://www.studyjamscn.com/thread-19854-1-1.html


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

-Advertisement-
Play Games
更多相關文章
  • 遇到此問題的解決辦法: 使用<NSURLSessionDelegate>中的didReceiveChallenge方法,方法中的代碼如下: 當然,info.plist裡面也要加上下麵這段: 少於150字不讓 發佈首頁候選區 那我就多打點字。為了分享知識,再打150字也值了。未來的世界,方向比努力重要 ...
  • 背景:JavaMail發送電子郵件 異常原因: 可能一>缺少DataHandler類相關jar包 可能二>有DataHandler類,DataHandler類與使用的mail.jar包不一致 解決辦法有: 解決一>下載相關jar包 解決二>使用對應jar包 註: 當前使用附件javamail.zip ...
  • JNI:Java Native Interface 也就是java本地介面,它是一個協議,這個協議用來溝通java代碼和本地代碼(c/c++)。通過這個協議,Java類的某些方法可以使用原生實現,同時讓它們可以像普通的Java方法一樣被調用和使用,而原生方法也可以使用Java對象,調用和使用Java... ...
  • 收錄待用,修改轉載已取得 "騰訊雲" 授權 一、賬號體系 想要進行iOS開發,除了必備一臺裝有Mac OS X/Xcode的Mac開發機(iMac or MacBook)之外,還必須要有蘋果開發者賬號,只有擁有開發者賬號,才能申請開發/發佈證書及相應配置文件,項目才可以發佈到App Store上。 ...
  • 1.實現如圖所示的單選效果 由於Android提供的單選按鈕radiobutton只能單行或單列顯示,且樣式並不美觀,故可用GridView進行改造,實現單選效果,而要實現這樣的效果重點就在GridView的適配器這塊了。 首先是GridView的item的XML: ...
  • 問題一:Exception: JNI: Init'd AndroidJavaObject with null ptr 解決方法: 所有關於JNI出現的問題,只有三種錯誤存在,第一是需要在真機上運行測試,不需要管;第二就是Bundle Identifier設置的與android工程的包名不同,設置為相 ...
  • 我用的是unity5.4.3版本,jdk是1.8.0_131版本,Android-SDK是r24.4.1版本,Android-NDK是r13b版本,作者是剛開始寫博客,希望對在unity摸索的人有幫助。 以下是環境搭建步驟 1下載安裝Java的JDK: http://www.oracle.com/t ...
  • 在上周我有一同事,他利用周末的時間自己做了一個IOS版本游戲類APP,用Unity3D開發的(抱著好玩的心態),於是他想發佈到蘋果App Store 上去。他沒有蘋果開發者賬號,也沒有購買過。 於是找到超波,叫我幫它去購買以下 (它知道我對購買流程還算熟悉),我覺得可以,就答應了 於是先叫它準備相關 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...