Android学习(1)

时间:2020-02-26 14:02:20   收藏:0   阅读:97

Android的四大组件

Android系统四大组件分别是活动(Activity)、服务(Service)、广播接收器(BroadcastReceiver) 和内容提供器(Content Provider)。其中活动是所有Android应用程序的门面, 凡是在应用中你看得到的东西,都是放在活动中的。而服务就比较低调了,你无法看到它,但它会一直在后台默默地运行,即使用户退出了应用,服务仍然是可以继续运行的。广播接收器允许你的应用接收来自各处的广播消息, 比如电话、 短信等,当然你的应用同样也可以向外发出广播消息。内容提供器则为应用程序之间共享数据提供了可能, 比如你想要读取系统电话簿中的联系人,就需要通过内容提供器来实现。

Android的项目结构

技术图片

  1. .gradle和.idea
    这两个目录放置的是Android studio自动生成的文件,不需要关心

  2. app
    该目录存放了项目中的代码、资源等内容,开发工作基本都在这个目录下进行

  3. build
    该目录包含了一些在编译时自动生成的文件。

  4. gradle
    该目录下包含gradle wrapper 的配置文件,使用gradle wrapper的方式不需要提前将gradle下载好,而是自动根据本地缓存情况决定是否联网下载。Android studio默认不启用gradle wrapper,但可以点击Android Studio导航栏→File→Settings→Build, Execution, Deployment→Gradle, 进行配置更改。

  5. .gitignore
    用于排除指定目录或文件在版本控制之外

  6. build.gradle
    项目全局的gradle构建脚本,这个文件的内容一般不用修改

  7. gradle.properties
    全局的gradle配置文件,在这里配置的属性会影响到项目中所有的gradle编译脚本。

  8. gradlew和gradle.bat
    这两个文件用来在命令行中执行gradle命令,其中gradlew’在Linux或Mac系统中使用,gradle.bat在Windows系统中使用(批处理脚本)。

  9. HelloWorld.iml
    iml文件是所有IntelliJ IDEA项目都会自动生成的一个文件,用于标识

  10. local.properties
    这个文件用于指定本机中的Android SDK路径,通常内容都是自动生成的,不用修改,除非本机的Android SDK位置变化。

  11. settings.gradle
    这个文件用于指定项目中所有引入的模块。由于HelloWorld项目中就只有一个app模块, 因此该文件中也就只引入了app这一个模块。 通常情况下模块的引入都是自动完成的, 需要我
    们手动去修改这个文件的场景可能比较少。

app目录下的结构

技术图片

  1. build
    主要包含了一些在编译时自动生成的文件

  2. libs
    如果项目中使用到了第三方jar包, 就需要把这些jar包都放在libs目录下,放在这个目录下的jar包都会被自动添加到构建路径里去。

  3. androidTest
    此处用于编写Android Test测试用例,可以对项目进行自动化测试。

  4. java
    放置Java代码

  5. res
    该目录包括项目中所有的图片、布局、字符串等资源,图片放在drawable目录下, 布局放在layout目录下, 字符串放在values目录下

  6. AndroidManifest.xml
    这是你整个Android项目的配置文件,在程序中定义的所有四大组件都需要在这个文件里注册,另外还可以在这个文件中给应用程序添加权限声明。

  7. test
    用于编写Unit Test测试用例,是对项目进行自动化测试的另一种方式

  8. .gitignore
    这个文件用于将app模块内的指定的目录或文件排除在版本控制之外,作用和外层的.gitignore文件类似。

  9. app.iml
    IntelliJ IDEA项目自动生成的文件

  10. build.gradle
    这是app模块的gradle构建脚本, 这个文件中会指定很多项目构建相关的配置

  11. proguard-rules.pro
    这个文件用于指定项目代码的混淆规则,当代码开发完成后打成安装包文件,如果不希望代码被别人破解,通常会将代码进行混淆,从而让破解者难以阅读。

HellpWorld项目初步分析

AndroidManifest.xml

为了了解新建的HelloWorld项目是如何运行的,首先要对AndroidManifest.xml文件进行初步的分析。
首先,AndroidManifest.xml文件是一个配置文件,四大组件都需要先在此声明、注册了才能正常启用。
打开AndroidManifest.xml文件,可以看到如下代码:

1
2
3
4
5
6
<activity android:name=".MainActivity"& 大专栏  Android学习(1)gt;
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

这段代码表示对MainActivity这个活动进行注册,其中intent-filter里的两行代码中:

1
2
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />

表示MainActivity是这个项目的主活动,在手机上点击应用图标,首先启动的就是这个活动。

MainActivity

1
2
3
4
5
6
7
8
public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}

MainActivity是继承自AppCompatActivity的,这是一种向下兼容的Activity,可以将Activity在各个系统版本中增加的特性和功能最低兼容到Android2.1系统。
MainActivity中只有一个onCreate()方法,这个该方法在活动被创建时一定要执行。
但是可以看到这两行代码中并没有Hello World!字样
这是因为Android程序的设计讲究逻辑和视图分离,因此一般是在布局文件中编写界面,然后在活动中引入进来。
在onCreate()方法中,使用的setContentView()方法,这个方法给当前活动引入了一个activity_main的布局。

activity_main

1
2
3
4
5
6
7
8
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />

打开activity_main后可以发现,这里有一个textview。这是Android系统提供的一个控件,用于在布局中显示文字。

strings.xml

打开res/values/strings.xml文件,内容如下:

1
2
3
<resources>
<string name="app_name">Hello World</string>
</resources>

这里定义了一个应用程序名的字符串,可以使用两种方式来引用它。

如果是图片资源就换成drawable,如果引用图标就换成mipmap,布局文件就换成layout
一个例子,打开AndroidManifest.xml文件,如下:

1
2
3
4
5
6
7
8
<application
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
...
</application>
评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!