目录
使用小技巧:
- Alter+Enter自动import class
- 查询AndroidStudio的SDK版本
- 方法1:点击File->Setting->System Settings --> Android SDK
- 方法2:点击右上角SDK Manager(黄色箭头处)
1 AndriodStudio入门基础
程序设计时,通过java代码控制界面,使用xml代码定义界面
1.1 AndroidStudio文件结构
在文件列表上有以下几种组织方式:
这里重点介绍Project模式、Packages模式和Android模式
1.1.1 Project模式
也就是工程视图模式,其组织结构如下所示:
1.1.2 Packages模式
该视图下和Project最大的差别就是隐藏了中的配置文件,属性文件和系统自身的文件夹.
仅仅是显示了当前的Module列表和Module以下的文件夹,文件.
1.1.3 Android模式
Android视图自己主动把它们合并到一起,表示这几个文件的作用是一样的,仅仅只是会由于设备的不同,而引用不同文件夹下的文件;Android视图最大的优点就是去掉一些我们本身不关心的文件和文件夹.(配置,属性文件等)而且把一些资源文件,源文件非常清晰的合并在一起.隐藏了一些自己主动自己主动生成的文件和文件夹(比如R文件等)能够让我们更方法的管理整个项目/module.
Module文件夹下分三个子文件夹,分别相应mainfests文件,java源代码,res资源文件夹.
Gradle脚本文件夹下有多个Gradle文件和属性文件;看其后面的提示,从上到下分别为:项目空间的gradle配置文件,第一个module和第二个module配置文件。gralde属性文件,设置文件,以及本地SDK路径属性文件
参考文章链接:https://segmentfault.com/a/1190000002963895
1.2 信息输出方式
可以像java一样直接使用System.out.println()输出信息到控制台
也可以使用Log按照类型输出提示信息,主要有以下几种:
函数 | 描述 |
Log.i(tag, msg) | 输出信息提示,参数1为信息标签,参数2为信息的具体内容 |
Log.e(tag, msg) | 输出错误提示,参数1为错误标签,参数2为错误的具体内容 |
Log.d(tag, msg) | 输出调试提示,参数1为调试标签,参数2为调试的具体内容 |
Log.w(tag, msg) | 输出警告提示,参数1为警告标签,参数2为警告的具体内容 |
... | ... |
2 Intent的调用模式
当我们要实现一个Activity向另一个Activity跳转时,需要调用Intent来实现,其调用方式有隐式调用和显式调用两种模式,本文对此进行总结。
首先创建两个Activity,分别设置其名称为MainActivity和SecondActivity,其AndroidManifest.xml文件形式如下:
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".SecondActivity">
<intent-filter>
<action android:name="action.NewAction"></action>
<category android:name="android.intent.category.DEFAULT"></category>
</intent-filter>
</activity>
项目文件结构如下:
2.1 显式调用模式
直接调用模式是根据类名进行调用,要么使用Activity的name,要么使用java类的名字
方式1:通过设置类的方式调用显示
Intent secIntent = new Intent(this, SecondActivity.class);
this.startActivity(secIntent);
方式2:通过类名调用
Intent secIntent2 = new Intent();
secIntent2.setClassName(this, "com.gcdxed.main_acitibity.SecondActivity");
startActivity(secIntent2);
方式3:通过组件名称调用
Intent secIntent3 = new Intent();
ComponentName cName = new ComponentName(this, SecondActivity.class);
secIntent3.setComponent(cName);
startActivity(secIntent3);
2.2 隐式调用
Intent secIntent4 = new Intent();
secIntent4.setAction("action.NewAction");
startActivity(secIntent4);
但是要注意,当程序中有两个相同的action时,运行时会提示用户选择使用那哪个Activity
3 Activity的生命周期
3.1 一个Activity时的生命周期分析
涉及以下7个函数:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.e("activityStatus", "onCreate: MainActivity");
}
@Override
protected void onStart() {
super.onStart();
Log.e("activityStatus", "onStart: MainActivity");
}
@Override
protected void onRestart() {
super.onRestart();
Log.e("activityStatus", "onRestart: MainActivity");
}
@Override
protected void onResume() {
super.onResume();
Log.e("activityStatus", "onResume: MainActivity");
}
@Override
protected void onPause() {
super.onPause();
Log.e("activityStatus", "onPause: MainActivity");
}
@Override
protected void onStop() {
super.onStop();
Log.e("activityStatus", "onStop: MainActivity");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.e("activityStatus", "onDestroy: MainActivity");
}
当程序启动调试时,调用以下三个函数:
回到桌面看不到该程序时,执行如下两个函数:
点击正在执行的程序,将程序回复回来时,执行如下函数:
将程序彻底关掉时:
执行流程如下:
3.2 两个Activity时的生命周期分析
跳转执行流程推演:
启动程序,显示第一个Activity:
点击Send按钮,显示第二个Activity,当第二个完全显示后,才会调用第一个的OnStop
点击关闭第二个窗体的按钮,第二个界面消失,跳转会第一个界面