2017Google Study Jams系列之實(shí)踐3A&3B-面向?qū)ο?沒(méi)毛病!

@極簡(jiǎn)主義患者/社交控/偽技術(shù)宅/沉迷幻想不能自拔的文藝少年
不定期更新的文字平臺(tái):微博 簡(jiǎn)書(shū)

1.方法

  • 定義方法(method signature)
    private int calculatePrice(int quantity){}

    • 訪問(wèn)修飾符(access modifier):決定訪問(wèn)權(quán)限的修飾符,有private/public/protected三個(gè)值
    • 返回值類(lèi)型(return data type):當(dāng)方法有返回值時(shí)決定方法返回值的類(lèi)型,使用void表示沒(méi)有返回值
    • 方法名(method name):需要注意命名方法,動(dòng)詞小寫(xiě)字母開(kāi)頭且為駝峰式
    • 輸入列表(inputs of list):即形式參數(shù),可有多個(gè)或0個(gè),用逗號(hào)隔開(kāi);形參必須說(shuō)明數(shù)據(jù)類(lèi)型,而相應(yīng)的實(shí)參則要符合這個(gè)數(shù)據(jù)類(lèi)型,不然就會(huì)編譯錯(cuò)誤;多個(gè)形參一定要按順序進(jìn)行傳參
  • 調(diào)用方法(call method)
    調(diào)用方法的時(shí)候主要注意的就是實(shí)參和形參的傳參問(wèn)題,參數(shù)的數(shù)量/類(lèi)型/順序一定要保持一致,否則就會(huì)出錯(cuò);另外在調(diào)用函數(shù)的時(shí)候可以使用算式作為參數(shù)變量直接使用,而不需繁瑣的定義之后再進(jìn)行傳參,可以使代碼更為簡(jiǎn)潔,但會(huì)增加理解難度

  • 個(gè)人理解
    方法的調(diào)用其實(shí)就是為了使代碼的復(fù)用率和理解難度達(dá)到一個(gè)平衡點(diǎn),一方面我們需要利用方法來(lái)使代碼更加簡(jiǎn)潔/更加容易進(jìn)行修改/更容易達(dá)到復(fù)用的目的;另一方面方法的定義和調(diào)用又增加了對(duì)代碼理解的難度,特別是形參和實(shí)參的命名和數(shù)量,都容易造成一定的混淆,所以為了使兩者達(dá)到一個(gè)平衡,我們就需要更豐富的經(jīng)驗(yàn)和實(shí)踐來(lái)實(shí)現(xiàn)對(duì)方法的定義

2.資源

資源文件都在項(xiàng)目的res文件夾下,Java文件都在java文件夾下,資源包括圖像/文本字符串/顏色/寬度和高度的維度/XML文件/音頻視頻文件等
應(yīng)用編譯時(shí),AAPT工具會(huì)產(chǎn)生一個(gè)R類(lèi)(R.java),在這個(gè)類(lèi)中每一個(gè)資源都自己的ID,且此ID在R類(lèi)中有自己相應(yīng)的資源類(lèi)型格式

  • 獲取資源的兩種方式:
    • In code:R.string.hello
    • In XML:@string/hello
  • 常見(jiàn)的資源類(lèi)型:
Resource Type In Java Code In XML
Image R.drawable.photo @drawable/photo
String R.string.hello @string/hello
Layout XML file R.layout.activity_main @layout/activity_main
ID R.id.price_text_view @id/price_text_view
Color R.color.red @color/red

3.類(lèi)和對(duì)象

  • 擁有相應(yīng)value的多個(gè)變量和多種用來(lái)操作的方法組合在一起可以成為一個(gè)對(duì)象(Object)
  • 對(duì)象由定義它的類(lèi)(Class)生成,因此對(duì)象也稱(chēng)為某個(gè)類(lèi)的實(shí)例,在類(lèi)里面定義了State(聲明)和methods(方法)
  • 與定義方法一樣,定義一個(gè)類(lèi)如下所示:
    public class TextView extends View{}
  • 使用類(lèi)中的構(gòu)造函數(shù)來(lái)創(chuàng)建實(shí)例:
    TextView priceTextView = new TextView(context);
    也可以使用工廠方法模式創(chuàng)建對(duì)象:
    MediaPlayer player = NeidaPlayer.create(context,R.raw.song);
  • 對(duì)對(duì)象調(diào)用方法:
//Object Variable Name.Method Name(Input Arguments)
titleTextView.setText("News");
/*if use this method in the class
Method Name(Input Arguments)
or
this.Method Name(Input Arguments)
*/
setText("News");
this.setText("News");
  • 類(lèi)與類(lèi)之間存在繼承關(guān)系(extends),當(dāng)一個(gè)類(lèi)繼承另一個(gè)類(lèi)時(shí),可獲得繼承類(lèi)的所有方法和屬性,同時(shí)在需要更新時(shí)也可以重寫(xiě)繼承類(lèi)的方法
  • 使用某個(gè)方法返回相應(yīng)數(shù)據(jù)時(shí)應(yīng)定義一個(gè)變量來(lái)存儲(chǔ),而在存儲(chǔ)時(shí)一定要使數(shù)據(jù)類(lèi)型相匹配,不匹配時(shí)可使用強(qiáng)制類(lèi)型轉(zhuǎn)換,如:
    TextView orderSummaryTextView = (TextView) findViewById(R.id.order_summary_text_view);
  • Java中分別使用Getter和Setter方法來(lái)“獲取”和“修改”視圖的某個(gè)值(例如視圖存儲(chǔ)的文本或圖片)

*4.完善賣(mài)咖啡app界面etc.

此節(jié)為視頻中既有實(shí)例的代碼片段,可參考之從而思考造輪子的基本步驟,學(xué)會(huì)舉一反三,利用基礎(chǔ)知識(shí)+Search Engines完成

  • 添加復(fù)選框(CheckBox)并對(duì)其值進(jìn)行使用(boolean)
<CheckBox
            android:id="@+id/whipped_cream_checkbox"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="24dp"
            android:text="Whipped cream"
            android:textSize="16sp"/>
CheckBox whippedCreamCheckBox = (CheckBox)findViewById(R.id.whipped_cream_checkbox);
boolean hasWhippedCream = whippedCreamCheckBox.isChecked();
  • 添加文本輸入框(EditText)并對(duì)其值進(jìn)行使用(String)
<EditText
            android:id="@+id/name_field"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:hint="Name"
            android:inputType="textCapWords"/>
EditText text = (EditText)findViewById(R.id.name_field);
String name = text.getText().toString();
  • 利用條件代碼(if/else)進(jìn)行價(jià)格調(diào)整和數(shù)量限定
private int calculatePrice(boolean addWhippedCream, boolean addChocolate){
        int basePrice = 5;
        if(addWhippedCream){
            basePrice += 1;
        }
        if(addChocolate){
            basePrice += 2;
        }
        return quantity * basePrice;
}
public void increment(View view) {
        if(quantity == 100){
            Toast.makeText(this, "You cannot have more than 100 coffees", Toast.LENGTH_SHORT).show();
        }
        quantity = quantity + 1;
        displayQuantity(quantity);
    }
public void decrement(View view) {
        if(quantity == 1){
            Toast.makeText(this, "You cannot have less than 1 coffee", Toast.LENGTH_SHORT).show();
        }
        quantity = quantity - 1;
        displayQuantity(quantity);
    }
  • intent的使用和理解
        Intent intent = new Intent(Intent.ACTION_SENDTO);
        intent.setData(Uri.parse("mailto:"));
        intent.putExtra(Intent.EXTRA_SUBJECT, "Just Java order for " + name);
        intent.putExtra(Intent.EXTRA_TEXT, priceMessage);
        if(intent.resolveActivity(getPackageManager()) != null){
            startActivity(intent);
        }
  • 本地化
    本地化即使創(chuàng)建的應(yīng)用能更好的兼容用戶體驗(yàn),通過(guò)提供兼容性資源包的方式來(lái)完成,比如可以修改string.xml文件來(lái)將資源進(jìn)行字符串引用方式的修改,同時(shí)提供多語(yǔ)言版本的string.xml文件,完成language的本地化
    這里是本地化檢查清單,進(jìn)行應(yīng)用發(fā)布前可供參考
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,233評(píng)論 25 708
  • ¥開(kāi)啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開(kāi)一個(gè)線程,因...
    小菜c閱讀 7,363評(píng)論 0 17
  • 本人初學(xué)Android,最近做了一個(gè)實(shí)現(xiàn)安卓簡(jiǎn)單音樂(lè)播放功能的播放器,收獲不少,于是便記錄下來(lái)自己的思路與知識(shí)總結(jié)...
    落日柳風(fēng)閱讀 19,460評(píng)論 2 41
  • 心中千萬(wàn)只草泥馬奔騰而過(guò)!僅以此文,發(fā)泄!圖片發(fā)自簡(jiǎn)書(shū)App 你甜,我說(shuō)你缺那么一點(diǎn)酸 你酸,我說(shuō)你少那么一丟甜 ...
    不二心的肉多多閱讀 353評(píng)論 2 5
  • 從巴黎回來(lái),整個(gè)人都玩傻了。今天一天都在回味之前都旅行。 明天開(kāi)始,一心一意讀書(shū)了!??! 畢業(yè)論文,加油加油加油!??!
    雪兒梨閱讀 233評(píng)論 0 0

友情鏈接更多精彩內(nèi)容