• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      Android入門程序開發(fā)—BMI計算器

      2018-01-06 01:06董明華李宏偉
      電腦知識與技術 2017年35期
      關鍵詞:輸入框源代碼控件

      董明華+李宏偉

      摘要:AndroidStudio已經代替了Eclipse,成為Android官方集成開發(fā)工具。文章基于AndroidStudio設計了一款身高體重計算器,通過介紹常見布局控件的用法,使初學者能夠快速入門Android APP開發(fā),了解APP界面設計,用戶輸入值的獲取等知識。

      關鍵詞:AndroidStudio;BMI;APP

      中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2017)35-0136-03

      1 背景

      BMI指數,即身體質量指數,是用體重公斤數除以身高米數平方得出的數字,是目前國際上常用的衡量人體胖瘦程度以及是否健康的一個標準。體質指數(BMI)=體重(kg)÷身高^2(m)。文章根據BMI指數開發(fā)一款簡易身高體重計算器,通過分析用戶的身高體重值,判斷其身材是否標準。

      2 APP展示

      最終APP效果如圖1所示,用戶輸入身高體重值后,通過單擊計算按鈕,可得出身體胖瘦程度的一個提示。

      3 知識點分析

      項目涉及知識點較為簡單,界面布局為LinearLayout,控件為EditText和Button,java源代碼部分主要是控件的初始化,取得文本輸入框的輸入值,并轉換為數值類型,然后計算出BMI指數值,并通過Toast給出提示。

      4 界面設計

      界面從上向下依次為身高輸入框、體重輸入框和按鈕,輸入框對應Android中的EditText控件,按鈕對應Button控件,垂直排列的布局適合用線性布局LinearLayout。布局主要作用是設置控件在屏幕上的位置,線性布局LinearLayout可以讓其中的控件水平排列或者垂直排列。

      首先,在res/layout文件夾中找到自動生成的布局文件activity_main.xml。在此文件中聲明父布局LinearLayout的排版方向為垂直排列,通過設置android:orientation的屬性值為vertical實現。

      android:layout_width="match_parent"

      android:layout_height="match_parent"

      android:orientation="vertical">

      其次,設置文本輸入框EditText的寬填滿父布局,高自適應,并通過android:hint屬性設置提示語,提示語定義在res/values/strings.xml文件中。

      android:id="@+id/height"

      android:layout_width="match_parent"

      android:layout_height="wrap_content"

      android:hint="@string/heighthint"/>

      strings.xml中提示語定義格式如下所示,提示語內容需要根據項目要求設置,BMI指數對應體重單位kg,身高單位m。

      BMI

      請輸入您的身高,單位:m

      請輸入您的體重,單位:kg

      最后,完成計算按鈕部分。按鈕有兩個屬性需要設置,一是設置按鈕水平居中的屬性android:layout_gravity,屬性值為center_horizontal;二是注冊按鈕事件監(jiān)聽屬性android:onClick,屬性值由開發(fā)人員自定義一個方法名。假設自定義的方法名為compute,那么在對應的java源文件中必須自定義一個如下形式的方法:

      public void compute(View view){...}

      5 java源代碼實現

      創(chuàng)建BMI對應Module的時候,自動在src文件夾中生成MainActivity.java源文件,并實現Activity的onCreate生命周期方法。

      在BMI項目中,java源代碼主要工作包括初始化文本輸入框控件,實現按鈕事件監(jiān)聽器注冊方法,獲取文本輸入框的輸入值并轉換為數值類型,計算BMI指數并給出提示等,下面對這些功能依次進行講解。

      5.1 初始化EditText

      首先,在MainActivity中聲明EditText成員變量。

      EditText heightEditText,weightEditText;

      然后,在onCreate方法中通過findViewById方法初始化控件。

      heightEditText = (EditText) findViewById(R.id.height);

      weightEditText = (EditText) findViewById(R.id.weight);

      其中,R.id.height表示身高輸入框的id是height,這是由布局文件中的id值決定的,android:id="@+id/height"。

      需要注意的是,控件的初始化需要在setContentView(R.layout.XXX)之后,setContentView方法指定當前java源文件對應的布局文件,只有在指定的布局文件中存在某個控件,已知此控件的id值,才可以通過上述方法進行初始化工作。

      5.2 Button事件監(jiān)聽器處理方法

      按鈕的事件監(jiān)聽器注冊有多種處理方法,如果布局文件中已經通過android:onClick="compute"指定了當前按鈕的事件監(jiān)聽器處理方法,則在對應的java源代碼文件中必須實現此方法。具體實現方式為定義一個方法,方法名必須和android:onClick的屬性值一致,方法修飾符必須是public,返回值是void,形參只有一個View類型。

      public void compute(View view){...}

      定義了上述方法后,只要用戶單擊了按鈕,就會回調此方法。

      5.3 獲取EditText輸入值

      獲取EditText輸入值必須在EditText初始化之后,同時注意獲取時機,本項目在用戶單擊計算按鈕的時候才獲取輸入值。下面以獲取用戶身高值為例,講解其獲取步驟,獲取體重值采用同樣的步驟。

      1) 調用EditText對象的getText()方法獲取Editable對象。

      Editable editable = heightEditText.getText();

      2) 把Editable對象轉換為字符串類型。

      heightString = editable.toString();

      上述兩步操作經常合為一步執(zhí)行。

      heightString = heightEditText.getText().toString();

      3) 根據項目要求把字符串轉換為其他數據類型,本項目設置成double數據類型,通過調用包裝類的parseXXX方法把字符串轉換為基本數據類型。

      double heightDouble = Double.parseDouble(heightString);

      5.4 計算BMI指數

      獲取到用戶輸入的身高體重值后,就可以計算BMI指數值了。BMI指數值為體重除以身高的平方,需要注意體重單位kg,身高單位m。為了計算的方便,設置BMI值小于18.5時,表示體型偏瘦,大于23.9時偏胖,在兩者之間表示體型標準。

      double result = heightDouble/(weightDouble*weightDouble);

      if (result > 23.9){

      消息提示

      } else if(result < 18.5){

      消息提示

      } else {

      消息提示

      }

      5.5 消息提示

      Toast是Android中用來顯示信息的一種機制,主要用于向用戶顯示提示消息。和Dialog不一樣的是,Toast是沒有焦點的,而且Toast顯示的時間有限,過一定的時間就會自動消失。

      Toast的創(chuàng)建步驟如下所述:

      1) 調用靜態(tài)方法makeText創(chuàng)建Toast對象。

      Toast toast = Toast.makeText(Context context, CharSequence text, int duration);

      方法接收三個形參。第一個參數Context表示消息提示在哪個Activity中,一般用this表明在當前Activity中;第二個參數CharSequence代表提示語內容,接收字符串數據類型;第三個參數int表示消息顯示時長,系統(tǒng)提供了兩個值,Toast.LENGTH_SHORT和Toast.LENGTH_LONG,分別表示短時間顯示和長時間顯示。

      2) 調用Toast對象的show方法顯示消息。

      toast.show();

      以上兩個步驟經常合成一步。

      Toast.makeText(this,text,Toast.LENGTH_SHORT).show();

      6 代碼優(yōu)化

      6.1 控件初始化優(yōu)化

      本項目比較簡單,控件只有兩個EditText需要初始化,直接在onCreate方法中操作也顯得清晰。如果控件的初始化操作較多,onCreate方法就會顯得臃腫,此時建議自定義初始化控件方法,在onCreate中調用自定義方法。

      private void initViews() {

      heightEditText = (EditText) findViewById(R.id.height);

      weightEditText = (EditText) findViewById(R.id.weight);

      ……}

      6.2 消息顯示優(yōu)化

      上述計算BMI指數中,要寫三次Toast提示代碼,而常用的BMI指數分為五六種情形,有沒有一種方式可以簡化消息顯示代碼呢?分析Toast提示代碼,除了提示語不同外,其他代碼完全相同,因而可以把消息顯示代碼封裝為一個方法,接收一個消息提示語參數。

      public void show(String text){

      Toast.makeText(this,text,Toast.LENGTH_SHORT).show();}

      需要用到消息顯示的時候,調用show方法,傳入一個提示語即可。

      6.3 BMI數值計算優(yōu)化

      按鈕監(jiān)聽方法中大量代碼被用來求解BMI數值,可以把這部分代碼封裝到一個單獨的方法中,用來計算BMI數值。

      public double getBMI(){

      heightString = heightEditText.getText().toString();

      weightString = weightEditText.getText().toString();

      heightDouble = Double.parseDouble(heightString);

      weightDouble = Double.parseDouble(weightString);

      result = heightDouble/(weightDouble*weightDouble);

      return result;}

      7 結束語

      APP的開發(fā)主要分為界面設計和java源代碼實現兩個部分,采用的是MVC設計模式。應用開發(fā)完成后,需要通過測試發(fā)現bug并加以改正。只有經過大量的開發(fā)實戰(zhàn),才可以快速發(fā)現bug并改正。

      參考文獻:

      [1] 劉劍橋. 基于Android的房貸計算器開發(fā)與測試[J]. 電腦編程技巧與維護, 2016(5).

      [2] 吳立勇, 丁作文. 基于Android系統(tǒng)的手機計算器的設計與實現[J]. 電子技術, 2014(4).

      [3] 劉正. Android項目驅動式開發(fā)教程[M]. 北京: 機械工業(yè)出版社, 2014.

      猜你喜歡
      輸入框源代碼控件
      人工智能下復雜軟件源代碼缺陷精準校正
      基于TXL的源代碼插樁技術研究
      拍一拍,圖片識文字
      軟件源代碼非公知性司法鑒定方法探析
      輸入框設計中需注意的9個細節(jié)
      揭秘龍湖產品“源代碼”
      ASP.NET服務器端驗證控件的使用
      Spreadsheet控件在Delphi數據庫系統(tǒng)中的編程與應用
      汉源县| 滨州市| 通化县| 禄丰县| 方山县| 安乡县| 正镶白旗| 宜城市| 龙里县| 洪洞县| 云梦县| 布尔津县| 井冈山市| 加查县| 德昌县| 兰州市| 滦南县| 卢湾区| 柳州市| 都江堰市| 都安| 泾源县| 乌恰县| 大庆市| 图们市| 奉化市| 武义县| 繁昌县| 辉南县| 高陵县| 隆子县| 崇州市| 永丰县| 内丘县| 天柱县| 平邑县| 兴隆县| 盈江县| 商丘市| 阿拉善盟| 民权县|