Android开发学习笔记(一)

Android开发学习笔记(一),第1张

概述基本概念活动(activity)是AndroidSDK中Activity类的一个实例,负责管理用户与应用界面的交互。安卓应用的功能就是通过编写Activity子类来实现的。布局(layout)定义了一系列用户界面对象以及它们显示在屏幕的位置。组成布局的定义保存在XML文件中。每个定义用来创建屏幕上的一个对象 基本概念活动(activity)是AndroID SDK中Activity类的一个实例,负责管理用户与应用界面的交互。安卓应用的功能就是通过编写Activity子类来实现的。布局(layout)定义了一系列用户界面对象以及它们显示在屏幕的位置。组成布局的定义保存在XML文件中。每个定义用来创建屏幕上的一个对象,例如按钮和文本信息。xml文件存放在app/res/layout目录下。代码规范包名称遵循“DNS反转”约定,例如应用名称为“myApp”,公司域名为“androID.fishwong.com”。那么包名称为“com.fishwong.androID.myApp”,包名称无须开发者输入,AndroID Studio会自动生成。创建活动时,activity子类命名后要加Activity后缀(这不是必须的,但最好遵循规范)。创建布局时,布局的名称为activity子类名的单词顺序颠倒过来,并在单词间加下划线。例如activity名称为“FirstActivity”,那么此活动对应的布局为activity_first。XML布局XML代码及其视图层级结构

上述XML代码的实际显示效果如下图,可以通过点击代码编辑区右边的PrevIEw进行预览。

以上的XML代码可以看成下面的视图层级结构

linearLayout组件继承自VIEwGroup组件(也是一个VIEw子类)。VIEwGroup组件是包含并配置其他组件的特殊组件。linearLayout可以以一列或者一排的方式布置组件,其他VIEwGroup组件还有FrameLayout、tableLayout、relativeLayout等。若某个组件包含在一个VIEwGroup中,该组件与VIEwGroup构成父子关系。从图1-11容易看出,根linearLayout有两个子组件,TextVIEw和另一个linearLayout。作为子组件的linearLayout,有两个button(按钮)子组件XML组件属性

XML中配置组件的一些常用属性如下

1.androID:layout_wIDth和androID:layout_height属性

几乎所有组件都需要这两个属性,该属性定义了组件的大小。它们有两个常用的属性值:

match_parent:视图与父视图的大小相同wrap_content:视图将根据其显示的内容自动调整大小

根linearLayout的高度和宽度属性值均设置为match_parent,根元素的父视图由AndroID提供,该父视图容纳应用的整个视图层级结构

2.androID:orIEntation属性

上述的XML代码中的两个linearLayout都有这个属性,androID:orIEntation属性有两个属性值

horizontal:水平vertical:垂直

它决定二者的子组件是水平放置或者垂直放置。在上述例子中,根linearLayout是垂直的,而子linearLayout是水平的。

3.androID:text属性

TextVIEw和button组件具有该属性,这个属性指定组件要显示的文字内容。

注意!!androID:text属性值并不是字符串值,而是对字符串资源(string resource)的引用。

字符串资源包含在一个独立的XML文件strings.xml中,我们设置该属性值的做法是:将文字内容放置在独立的字符串资源XML文件中,然后引用它们。

创建字符串资源

每个项目都包含一个默认的字符串资源文件(strings.xml),该文件在app/res/values目录下。我们可以在这个文件中添加字符串资源,添加的格式为:

<string @R_403_6889@="字符串的名字">字符串的内容</string>

注意string子元素应该在resources根元素下,字符串资源xml文件可以根据自己的喜好命名,一个项目也可以有多个字符串资源文件。

当需要引用字符串资源的时候,引用方法如下:

androID:text="@string/字符串的名字"

从布局XML到视图对象

上述XML元素通过一个名叫QuizActivity的Activity子类转换为视图对象,类文件存放在app/java目录下,这是项目全部Java源代码存放的地方

QuizActivity类继承于AppCompatActivity(实际上就是一个Activity子类,能为旧版本系统提供兼容支持)。这个类中有一个onCreate(Bundle)方法,这个方法将在activity子类的实例创建后被调用,activity创建后,需要获取并管理用户界面,可以调用这个Activity方法:

public voID setContentVIEw(int layoutResID)
资源与资源ID

项目有很多资源,布局是一种资源。图像文件、音频文件、XML文件都是资源。项目的资源文件全部存放在app/res下。我们可以使用资源ID在代码中获取相应的资源,activity_quiz.xml布局的资源ID为R.layout.activity_quiz

查看应用的资源ID需要切换到Project视图,R.java文件保存在app/build/generated/source/r/deBUG目录下,该文件在AndroID项目编译过程中自动生成,但不会实时刷新,只有在运行了App后,它才会得到更新。

为组件添加资源ID的方法很简单,只要在XML文件中给对应的组件添加上androID:ID属性即可。下图展示了如何为一个按钮添加资源ID。

注意,androID:ID属性值前面有一个+号,而androID:text属性值则没有,这是因为我们在创建资源ID,而对字符串资源只是作为一个引用。

组件的实际应用添加成员变量

当组件有了资源ID,就可以在QuizActivity中直接获取它们,首先我们要在QuizActivity.java文件中添加两个成员变量。

注意,两个变量名称的m前缀是AndroID编程中应遵循的命名规范。

如果AndroID Studio出现错误信息:Cannot resolve symbol 'button',那我们需要在文件中导入androID.Widget.button类包,导入方法如下

import androID.Widget.button;

或者可以使用Alt+Enter让AndroID Studio自动导入类包,代码有错误时可以使用该组合键修正!

引用组件

定义好变量后,我们开始引用组件了,这个过程使用到了以下方法

public VIEw findVIEwByID(int ID)

该方法以组件的资源ID作为参数,返回一个视图对象,我们将这个对象赋值给对应的成员变量,赋值前注意要将返回的VIEw类型转换为对应的对象,在这里为button,代码如下

mTruebutton = (button) findVIEwByID(R.ID.true_button);mFalsebutton = (button) findVIEwByID(R.ID.false_button);
设置监听器

监听器(Listener)即为响应某个时间而创建的对象。AndroID SDK已经为我们内置了很多监听器的接口,当前应用需要监听用户“点击”按钮的事件,所以我们需要实现VIEw.OnClickListener接口,实现方法如下:

当mTruebutton按钮被点击后,监听器会立刻通知我们,传入setonClickListener(OnClickListener)方法的参数就是一个监听器,在这里,一个匿名内部类(anonymous inner class)实现了OnClickListener接口。

使用匿名内部类的两大好处:

可以相对集中地实现监听器方法,一眼可见事件监听器一般只在一个地方使用,使用匿名内部类可以避免创建繁琐的命名类创建提示消息Toast

首先,我们为toast添加消息显示用的字符串资源(略)

然后,我们调用Toast类方法创建toast

public static Toast makeText(Context context, int resID, int duration)

该方法的参数解释如下:

第一个Context参数通常是Activity的一个实例(Activity本身就是Context的子类)第二个参数是toast要显示字符串消息的资源ID第三个参数用来指定toast消息的停留时间,通常是两个Toast常量中的一个,Toast.LENGTH_SHORT和Toast.LENGTH_LONG

部分代码如下:

然后就可以尝试打开模拟器运行App了,如果在运行过程中App崩溃,我们可以在LogCat视图中查看所有的报错信息(AndroID Stuidio底部)

 

 

2021/06/05


 

总结

以上是内存溢出为你收集整理的Android开发学习笔记(一)全部内容,希望文章能够帮你解决Android开发学习笔记(一)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1001469.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存