@極簡(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
- In code:
- 常見(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ā)布前可供參考