Android开发学习第一课
- Android系统四大组件分别是Activity、Service、BroadcastReceiver和ContentProvider。其中Activity是所有Android应用程序的门面,凡是在应用中你看得到的东西,都是放在Activity中的。而Service就比较低调了,你无法看到它,但它会在后台默默地运行,即使用户退出了应用,Service仍然是可以继续运行的。BroadcastReceiver允许你的应用接收来自各处的广播消息,比如电话、短信等,当然,你的应用也可以向外发出广播消息。ContentProvider则为应用程序之间共享数据提供了可能,比如你想要读取系统通讯录中的联系人,就需要通过ContentProvider来实现。
- 目录结构
libs
: 如果项目中使用到了第三方jar包,就需要把这些jar包都放在libs目录下,放在这个目录下的jar包会被自动添加到项目的构建路径里。
androidTest
: 此处是用来编写Android Test测试用例的,可以对项目进行一些自动化测试。
java
: 放置所有Java代码的地方(Kotlin代码也放在这里),展开该目录,系统帮我们自动生成了一个MainActivity文件。
res
: 在项目中使用到的所有图片、布局、字符串等资源都要存放在这个目录下。当然这个目录下还有很多子目录,图片放在drawable目录下,布局放在layout目录下,字符串放在values目录下。
AndroidManifest.xml
:这是整个Android项目的配置文件,你在程序中定义的所有四大组件都需要在这个文件里注册,另外还可以在这个文件中给应用程序添加权限声明。
Android
程序运行过程:
首先在Mainfest.xml
中对activity
进行注册:
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
这段代码表示对MainActivity
进行注册,没有在AndroidManifest.xml
里注册的Activity
是不能使用的。其中intent-filter
里的两行代码非常重要,<action android:name="android.intent.action.MAIN"/> 和<category android:name="android.intent.category.LAUNCHER" />
表示MainActivity
是这个项目的主Activity
,在手机上点击应用图标,首先启动的就是这个Activity
。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
Activity
是Android
应用程序的门面,凡是在应用中你看得到的东西,都是放在Activity
中的。而Activity
类是Android
系统提供的一个基类,我们项目中所有自定义的Activity
都必须继承它或者它的子类才能拥有Activity
的特性(AppCompatActivity是Activity的子类
)。然后可以看到MainActivity
中有一个onCreate()
方法,这个方法是一个Activity
被创建时必定要执行的方法。
Android
程序的设计讲究逻辑和视图分离,因此是不推荐在Activity
中直接编写界面的。一种更加通用的做法是,在布局文件中编写界面,然后在Activity中
引入进来。可以看到,在onCreate()
方法的第二行调用了setContentView()
方法,就是这个方法给当前的Activity
引入了一个activity_main
布局。布局文件都在res/layout
下。
基本过程:在Mainfest.xml
中对myactivity
进行注册、在res/layout
文件夹下创建布局、创建myactivity
类,调用’onCreat()'并设置布局。
res文件夹
所有drawable
开头的目录都是用来放图片的,所有以mipmap
开头的目录都是用来放应用图标的,所有以values
0开头的目录都是用来放字符串、样式、颜色等配置的,所有以layout
开头的目录都是用来放布局文件的。
资源的使用
strings.xml
<resources>
<string name="app_name">HelloWorld</string>
</resources>
- 在代码中通过
R.string.app_name
可以获得该字符串的引用。 - 在XML中通过
@string/app_name
可以获得该字符串的引用。
<application
android:allowBackup="true"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.HelloWorld"
tools:targetApi="31">
...
</application>