安卓入门
创建你的第一个工程
Layout Name 需要小写,下面的Backwards Compatibility勾选后可支持低版本安卓系统
左上角可自由选择工程显示方式如project、Android,根据自己喜好选择。
下面就是我们默认创建的Activity中的Java代码,在路径中可以找到(MainActivity)
点击右下角Emulator按钮整一个界面模拟器,可以看见我们的MainActivity
class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
代码分析
@override 重写方法 onCreate
本方法在活动(Activity)第一次创建时调用,即窗口从无到有创建时要调用这个方法,它是这个activity生命周期的开始。
Bundle savedInstanceState
Bundle类型的数据与Map类型的数据相似,都是以key-value的形式存储数据的。
savedInstanceState 译为保存状态,该参数作用为保存Activity状态.
super.onCreate(savedInstanceState)
调用父类的onCreate方法,传入savedInstanceState参数,创建一个Avtivity。
*下面我们介绍Activity的一个方法onsaveInstanceState。(可以先不了解)
onsaveInstanceStateState方法是用来保存Activity的状态的。当一个Activity在生命周期结束前,会调用该方法保存状态。(自动调用,就像构造方法隐式生存)。
在实际应用中,当一个Activity结束前,如果需要保存状态,就在onsaveInstanceStateState中,将状态数据以key-value的形式放入saveInstanceStateState中。这样,当一个Activity被创建时,就能从onCreate的参数saveInstanceStateState中获得状态数据。保存状态可用于游戏存档等。
setContentView:设置内容视图
R.layout.activity_main参数表示该Activity的布局文件名
在以下路径可以找到
双击打开该文件activity_main.xml即是我们这个activity的布局文件。
外层
<android.support.constraint.ConstraintLayout~ 表示页面布局
由这两个标签包围的部分用于编写页面具体内容
学会使用Module
Module概述
在大工程中,代码的复用是很重要的一部分,可以显而易见地提高我们的工作效率
https://blog.csdn.net/u010356768/article/details/105427110
在这篇博客中学习创建、使用Module
目前我们先不深入了解,先进行使用。
在页面上添加点东西
先把没用的Hello World删掉(删除Text View标签)
(这里可以使用AS自带的WindowBuilder进行页面设计)
点击Design进入页面设计,拖入布局后拖入组件进行自定义
*这里会出现Hardcoded ** string ** should use @string resouse 警告,这里是提示我们在strings.xml中定义字符串,这是个良好的编程习惯。
同样在res文件目录下,values文件夹——strings.xml
使用方法如下图,strings.xml内:
页面文件内:
可以看到start变量
Button(注意id唯一性和大小写改变方法,学会进行属性的修改)
输入
<Button
输到一半大概就有提示,回车
随意选择android:layout_width、android:layout_height属性
<Button
android:id="@+id/b1" //手动输入
android:text="按钮" //手动输入
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
android:id="@+id/b1"
注意每一个组件必须添加id属性,作为这个组件的标识
在右边模拟器上可以看见自己添加的按钮
这里默认全部字母为大写,需要自己调整
点开右上角搜索框输入“themes”,打开themes.xml文件
添加item
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.MyApplication" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_500</item>
<item name="colorPrimaryDark">@color/purple_700</item>
<item name="colorAccent">@color/teal_200</item>
<item name="textAllCaps">false</item> //添加此行
<!-- Customize your theme here. -->
</style>
</resources>
然后查看模拟器,字母变为小写
接下来添加布局
只有添加到布局中后该组件才能在app中使用
使用View Binding
在要使用ViewBinding的 module 的build.gradle文件中开启ViewBinding,在Android大括号内添加如下代码
buildFeatures{
viewBinding = true
}
点击上面黄色条内的“sync now”,工作完成后在build—generated—data_binding_~~文件夹一路打开,找到一个xml文件,绑定类命名规则是我们的布局名称去掉下划线使用驼峰的形式结尾接Binding;
例如:
activity_gender_guide.xml
就是:
ActivityGenderGuideBinding
找到这个文件就创建成功了。
将你的组件添加到布局
在类中定义成员变量 private ActivityMainBinding binding;
删除掉原来的
setContentView(R.layout.activity_main);
写入
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
*inflate这个方法是要根据布局id把这个布局加载成一个View并返回,后面再详细分析
以后我们就能使用binding实例进行操控组件了,通过binding.控件Id名称,控件id名称也是去掉下滑线使用驼峰的形式。
比如对pause按钮添加监听器
binding.pause.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "你点到我了", Toast.LENGTH_LONG).show();
}
});
给点反应——添加Toast
添加监听器
binding.pause.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "你点到我了", Toast.LENGTH_LONG).show();
}
});
代码大家都不陌生,和JavaSwing监听器类似
使用AS自带的Create new Toast工具可以快速创建Toast(输入Toast后选择下面的)
编辑Text和后面的显示时长即可
重新加载app点击按钮,就会有反应了
{
Toast.makeText(MainActivity.this, "你点到我了", Toast.LENGTH_LONG).show();
}
});
代码大家都不陌生,和JavaSwing监听器类似
使用AS自带的Create new Toast工具可以快速创建Toast(输入Toast后选择下面的)
编辑Text和后面的显示时长即可
重新加载app点击按钮,就会有反应了