Android开发工具: Android Stuido
这篇文章主要是讲解Activity的,但是如果不讲Layout布局文件的话很难带入,所以会先简单讲一下布局文件,让大家有一个基本概念
什么是Activity,什么是Layout文件
- 对于手机用户来说,关心的只是当我手指按在屏幕某个位置之后手机会发生什么,如页面跳转,播放音乐,聊天等等;而对于APP开发者来说,最基本的关心也应当是用户的关心。怎么实现这份关心呢?Android把它分成了两个相互依赖的部分:Activity和Layout。
- Layout(布局)文件
- 在Android中,布局文件是.xml的文件,存在地址是:项目根目录\app\src\main\res\layout。是我们看到的APP页面的基本展示效果,
- Activity(活动)
- 是继承自Activity的.java文件(也可以是.kt文件),存放的地址是:项目根目录\src\main\java\创建项目时定义的包。一个活动对应一个布局文件(也可以不对应,但是没有意义),具体的关联方式就是在Activity中声明对Layout文件的引用,所有的逻辑操作都是在这里完成的,比如与后台数据的交互以及将数据展示在布局文件上等。
- 命名规范:因为一般一个Layout对应一个Activity嘛,所以他们的命名也是非常有规律的:Activity的名字一般叫做“+++Activity”,如TestActivity,而与之对应的layout文件一般被命名为“activity_+++”,如activity_test。
Layout文件介绍:
- 我们看到的一个个页面就是一个个布局文件的展示效果再加上相对应的Activity的数据放入,布局文件最基本的构成就是布局方式(也就是页面展示逻辑),他有五种布局方式,还有就是自定义的布局方式,我这里会主要说一下两种最常用的,也就是LinearLayout和RElativeLayout。
每个Layout文件的根标签都是布局方式的设定,以用来明确在其内部(也就是该页面)的最基本的样式效果,而且不同的布局方式在操作其内子标签的时候有些属性所达到的效果是不一样的。
LinearLayout(线性)布局:
- LinearLayout布局的根标签就是LinearLayout,特点是内部子标签默认会按照由左到右或是由上到下的顺序排放
- LinearLayout布局又分为两类,一类是水平线性布局,一类是垂直线性布局。
- 水平线性布局的属性android:orientation的值是horizontal;垂直线性布局的android:orientation的值是vertical。
- 如下可以非常直观的看出线性布局的两个方式的不同(我是用了三个标签,标签颜色都不一样):
代码一:垂直布局:
activity_main.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.createnew.MainActivity" android:orientation="vertical"> <!--就是这个属性规定的水平或垂直线性布局--> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="线性布局标签一" <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="线性布局标签二" android:textColor="#574483"/> <Button android:onClick="btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="跳转水平布局按钮"/> </LinearLayout> MainActivity.java: public class MainActivity extends AppCompatActivity { //AppCompatActivity是Activity的子类兼容到v7版本 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_m