@极简主义患者/社交控/伪技术宅/沉迷幻想不能自拔的文艺少年
不定期更新的文字平台:微博 简书
2A
1.创建Just Java项目
和上节的生日贺卡一样,我们要创建一个新的项目来实现本节的实践内容,Just Creat a New Project!
2.回顾前情&完成项目的activity_main.xml
- 使用和选择正确的布局和视图(这个项目里我们使用LinearLayout)
- 布局、添加视图(Button)并为视图设置ID,设置ID是为了方法的使用
android:orientation="vertical"
android:id="@id/quantity_text_view"
- 为视图添加样式属性(大小/颜色/边距)
- 大小:textSize
- 颜色:
android:textColor="@android:color/black"
- 边距:layout_margin(外边距)|| padding(内边距)
3.初见Java
- 修改activity_main.xml添加按钮的XML属性
Android:onClick = “submitOrder”
此属性代表在Click(单击)这个按钮时会调用submitOrder方法,此方法在Java文件中 - 修改MainActivity.java如下:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void submitOrder(View view) {
display(1);
}
private void display(int number) {
TextView quantityTextView = (TextView) findViewById(R.id.quantity_text_view);
quantityTextView.setText("" + number);
}
可以发现submitOrder方法中只有一行代码,此代码为执行display方法,display方法则在下面写明:将id为quantity_text_view的TextView的text改为参数number,而参数则可以随意更改为变量/常量/算式
- 添加咖啡价格
- 向布局添加 2 个文本视图,并为显示价格的视图指定视图id
@+id/price_text_view
- 为MainActivity.java添加displayPrice()方法
- 向布局添加 2 个文本视图,并为显示价格的视图指定视图id
private void displayPrice(int number) {
TextView priceTextView = (TextView) findViewById(R.id.price_text_view);
priceTextView.setText(NumberFormat.getCurrencyInstance().format(number));
}
确保开启Android Studio中的"自动导入":
File-Settings-Editor-General-Auto Import
选中以下选项:
- Show import popup
- Optimize imports on the fly
- Add unambiguous imports on the fly
- Insert imports on paste → All
- 在 submitOrder()中添加另一行代码:
displayPrice(1006);
- 使用变量(variable)
定义变量:数据类型(int) 变量名称(numberOfCoffees) = 2;
应用变量:将未使用变量的值用变量替换即可
关于变量这种基本语法规则要掌握并灵活运用 - 添加增加/减小按钮
- 首先修改XML文件,进行布局修改
<Button
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_marginTop="16dp"
android:text="+"
android:onClick="increment"/>
<TextView
android:id="@+id/quantity_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2"
android:textSize="16sp"
android:textColor="@android:color/black"
/>
<Button
android:layout_width="48dp"
android:layout_height="48dp"
android:text="-"
android:onClick="decrement"/>
- 其次修改Java文件,进行方法修改
public void increment(View view) {
int numberOfCoffees = 3;
display(numberOfCoffees);
displayPrice(numberOfCoffees * 5);
}
public void decrement(View view) {
int numberOfCoffees = 1;
display(numberOfCoffees);
displayPrice(numberOfCoffees * 5);
}
4.眼熟一下Debugger
- 一般错误的排解
在编程的过程中会遇到各种各样的错误,经验丰富的老程序员也不可避免,而如何处理遇到的错误也是一项特殊技巧.我们遇到错误的第一时间可以通过查看Android Studio自身的日志来寻找一般的错误,如语法、单词拼写、方法漏写等 - 更深入的调试
使用Debugger我们可以使程序运行时暂停在某一行,从而找出程序运行过程中由于代码产生的逻辑性问题或错误
设置断点:在代码行行首左键点击即可出现一个"红点",代表可在此处暂停运行
召唤Debugger:使用Debugger按钮即可调试应用,并通过状态面板随时查看状态信息,用单步调试(F7)来进行下一步
5.对变量的灵活使用
我们不能一味地创建并使用变量,因为这依然会使代码变的臃肿,并且程序的结果并不尽如人意
- 对变量使用运算而非赋固定的值
public void submitOrder(View view) {
int quantity = 2;
quantity = quantity + 1;
display(quantity);
displayPrice(quantity * 5);
}
- 设置全局变量
在某个方法内设置的变量称为局部变量,其作用范围只在这个方法内
在主类(本例中为MainActivity)下创建的变量称为全局变量,可被所有方法共同作用,如下面代码所示int quantity = 2;
就是一个全局变量:
int quantity = 2;
public void submitOrder(View view) {
displayPrice(quantity * 5);
}
public void increment(View view) {
quantity = quantity + 1;
display(quantity);
}
public void decrement(View view) {
quantity = quantity - 1;
display(quantity);
}
2B
6.嵌套视图组(Nested Viewgroups)
通常在设计布局的时候只用一种试图组是无法很美观很自然的展现内容的,这时候就要综合运用多种组合布局,也就是视图组的嵌套.我们可以将Linearlayout嵌套在Relitavelayout中,也可以反其道行之,组合是多种多样的.
将1A&B&C中的知识再复习一遍,好好熟悉视图及其属性的应用,就可以很轻松的理解嵌套视图组.
利用嵌套视图组来实现构建一个布局的步骤:
- 阅读界面|布局设计图,划分并分析视图间的层次结构图
- 根据层次结构图写出相应的XML代码
7.使用字符串(String)
定义变量:数据类型(String) 变量名称(priceMessage) = "Free";
"Free"是变量的值,字符串变量定义时需要用英文双引号,并且在字符串内如有特殊字符需要使用""进行转义,如String message = "She said \"1 dollar\"";
- 组合字符串
使用"+"进行字符串的组合,可以是字符串的连接,也可以是字符串和整型的连接,如下:
String a = "This is " + "Number Two";
String b = "This is " + 2;
还可以使用变量来进行连接:
String priceMessage = "Total: $" + (quantity * 5);
在进行字符串变量更新时也可以使用连接:
public void submitOrder(View view) {
String priceMessage = "Total: $" + (quantity * 5);
priceMessage = priceMessage + "\nThank You~";
displayMessage(priceMessage);
//displayPrice(quantity * 5);
}
8.最后附上随视频实践的'卖咖啡'
虚拟机:Nexus 4 API 24, 768 x 1280:xhdpi, Android 7.0, x86_64