Android讲义.docx
- 文档编号:22863292
- 上传时间:2023-04-28
- 格式:DOCX
- 页数:23
- 大小:27.89KB
Android讲义.docx
《Android讲义.docx》由会员分享,可在线阅读,更多相关《Android讲义.docx(23页珍藏版)》请在冰豆网上搜索。
Android讲义
3.2、FirstAndroidActivity.java—Activity介绍
Android程序会用到各种各样的资源,我们将在后续章节中详细介绍关于这些资源的定义和使用。
从上面的介绍,你是否得出这样一个结论:
Android应用程序=Java程序代码文件+资源文件+AndroidManifest.xml
粗略来讲这是对的!
下面我们首先对Android的资源进行一个粗略的介绍。
3.3.1、字符串资源
在res/values工程目录下的strings.xml文件中定义的字符串内容:
只是这里使用了整数类型的编号来代表字符串常量而已。
在Android中,Android会给每个资源分配一个唯一的编号,通过这个编号就可以访问到特定的资源!
在Java程序代码中,你可以使用:
R.string.app_name
访问到由app_name定义的字符串;而在资源配置xml文件中,例如AndroidManifest.xml文件中,则使用:
@string/app_name
来访问由app_name定义的字符串。
3.3.2、布局资源
Android规定,所有的布局资源文件必须放置在res/layout工程目录下。
因此,如果你有多个界面需要显示,则在res/layout工程目录下会有多个这样的布局资源文件。
注意代码中的:
setContentView(R.layout.main);
语句,在这里,我们通过:
R.layout.main
3.2.2、ID资源
我们所定义的新的资源均正确的反应在R.java文件中。
3.3.4图片资源
hdpi、-ldpi、-mdpi称为资源目录后缀,没有后缀的资源目录称为缺省资源目录:
Android在搜索资源时,会首先获得最符合条件的资源,若没有符合条件的资源,则会从缺省资源目录中获得缺省的资源。
图片资源文件,可以使任何目前支持的图片文件,包括:
.jpg文件、.png文件、.bmp文件等,
3.3.6、引用资源
不管Android资源的类型如何,所有的Android资源都是通过与之关联的ID来引用的。
例如,为了在Java代码中引用message_1字符串资源,你可以使用:
R.string.message_1
来引用;而为了引用png0237.png图片资源,你可以使用:
R.drawable.png0237
来引用。
类似的,为了在资源配置XML文件中引用Android资源,例如,为了引用message_1字符串资源,你可以使用:
@string/message_1
来引用;而为了引用图片资源png0237.png资源,你可以使用:
@drawable/png0237
来引用。
一般的,在Java程序代码中,你可以使用如下格式来引用Android程序资源:
[package.]R.type.name
类似的,在XML资源配置文件中,可以使用如下的格式来引用Android程序资源:
@[package:
]type/name
其中的type对应R.java文件中的资源类型,包括:
Drawable.id.layout.string.attr.plurals.string-array
4、深入分析Activity
4.1、Activity的生命周期
调用Activity的finish()方法onPause()onStop()onDestroy()来结束Activity。
android将重新调用之前被覆盖的Activity的onCreate()onStart()onResume()
若因为资源紧缺而导致Activity被kill,Android系统一定会调用Activity的onSaveInstanceState()方法,当Android系统在恢复一个被Kill的Activity时会调用onRestoreInstanceState()回调函数)。
5.1、使用基于XML的布局
修改res/layout/main.xml:
xmlversion="1.0"encoding="utf-8"?
>
android=" android: layout_width="fill_parent" android: layout_height="fill_parent" android: orientation="vertical"> android=" android: id="@+id/button" android: text="@string/button_text" android: layout_width="fill_parent" android: layout_height="fill_parent"/> 同时,修改res/values/strings.xml: xmlversion="1.0"encoding="utf-8"? > 在这个文件中,我们定义了button_text引用。 在这个接口中,只有一个方法: onClick(Viewv)。 为此,我们对XMLLayoutActivity.java程序代码做如下修改: packageteaching.android.xml_layout_5_1; importjava.util.Date; importandroid.app.Activity; importandroid.os.Bundle; importandroid.view.View; importandroid.widget.Button; publicclassXMLLayoutActivityextendsActivity implementsView.OnClickListener{ Buttonbtn; /**Calledwhentheactivityisfirstcreated.*/ @Override publicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); btn=(Button)this.findViewById(R.id.button); btn.setOnClickListener(this); } @Override publicvoidonClick(Viewv){ //TODOAuto-generatedmethodstub btn.setText(newDate().toString()); } } XMLLayoutActivity实现了View.OnClickListener接口,同时,我们设置按钮监听点击事件,并在点击事件中修改显示在按钮上的文字为当前的日期时间。 运行该修改后的程序: 5.2、Android基本组件 5.2.1、Button (1)android: text 设置在Button上要显示的文字。 可以是一个字符串常量或对一个字符串资源的引用。 (2)android: textColor 设置显示在Button上的文字的颜色。 可以是对一个颜色资源的引用,或者是这些形式的颜色值: "#rgb"、"#argb"、"#rrggbb"、"#aarrggbb"。 (3)android: textSize 设置显示在Button上的文字的大小。 可以是一个常数加单位,例如,15px,20sp等,也可以是对单位度量资源的引用。 (4)android: textStyle 设置显示在Button上的文字的风格,可用的值: bold,italic,bolditalic。 (5)android: typeface 设置显示在Button上的文字的字体。 目前Android只支持如下的字体: normal,sans,serif,monospace。 但是,你可以在程序代码中使用任何你需要的字体。 以上所介绍的这些属性是从android.widget.TextView中继承的,除此之外,你还可以使用从android.view.View中继承的XML配置属性。 下面介绍这些属性。 (6)android: id 设置Button的id属性以便在程序代码中可以引用该组件。 (7)android: background 设置Button的背景。 可以是对一个drawable资源的引用,也可以是形如"#rgb"、"#argb"、"#rrggbb"、"#aarrggbb"的颜色值。 (8)android: clickable 设置该按钮是否可以响应点击事件。 可选值: true、false。 (9)android: onClick 设置按钮被点击时要调用的处理函数。 (10)android: visibility 设置按钮是否显示在屏幕上。 可选值: true、false。 (11)android: padding、android: paddingTop、android: paddingBottom、android: paddingLeft、 android: paddingRight 设置组件的内边界,类似HTML/CSS的padding。 (12)android: gravity 设置按钮的文字内容在按钮上的显示对齐方式。 可取值: top、right、left、center等。 Android值支持三种字体: sans,serif,monospace,默认为sans, 5.2.2、TextView TextView类似其他GUI的Label,用于显示一个字符串,显示在TextView中的字符串是不可编辑的。 其实,Button组件的XML配置都是从TextView和View中继承来的,因此,TextView的属性与Button组件的XML配置属性是类似的。 5.2.3、ImageView ImageView组件用于显示一幅图片。 ImageView常用XML配置属性包括: (1)android: maxHeight 用于指定组件的最大高度。 (2)android: maxWidth 用于指定组件的宽度。 (3)android: scaleType 控制显示在ImageView中的图片应当如何改变大小或移动以适应ImageView组件的大小。 可用的值及其含义: center: 图片位于视图中间,但不执行缩放; centerCrop: 按统一比例缩放图片(保持图片的尺寸比例)便于图片的两维(宽度和高度)等于或者大于相应的视图的维度; centerInside: 按统一比例缩放图片(保持图片的尺寸比例)便于图片的两维(宽度和高度)等于或者小于相应的视图的维度; fitCenter: 按比例缩放图片达到组件的大小,并使图片居中显示; fitEnd: 按比例缩放图片达到组件的大小,并使图片居末显示; fitStart: 按比例缩放图片达到组件的大小,并使图片居前显示; fitXY: 不按比例缩放图片使之正好达到组件的维数; matrix: 当绘制时使用图片矩阵缩放; (4)android: src 指定显示在组件中的图片。 必须是对一个图片资源的引用。 (5)android: contentDescription 设定图片的描述性文字。 应用举例。 5.2.4、EditText EditText是可编辑的文本组件,与TextView组件类似,只是提供了编辑功能。 它的XML配置属性都是从TextView及View中继承来的,如下的几个XML配置属性可能有用: (1)android: autoText 设置是否对输入的文字进行自动拼写检查。 只能取值“true”或者“false”。 (2)android: captalize 设置是否对输入的文字改为大写。 只能取值“true”或者“false”。 (3)android: digits 设置是否只能输入数字。 只能取值“true”或者“false”。 (4)android: singleLine 设置是否可以输入多行。 只能取值“true”或者“false”。 (5)android: hint 设置当输入框为空时,在输入框中显示的提示信息。 (6)android: inputType 设置放置在EditText组件中的文字类型。 取值包括: none、text、textCapCharacters、textCapWords、textUri、number等。 举个例子。 5.2.5、CheckBox CheckBox组件就是在其他GUI组件我们常用的“复选框”,它继承了TextView和View组件的XML属性。 该组件的常用方法: (1)isChecked() 检查该复选框是否被勾选。 (2)setChecked(Booleanchecked) 设置该复选框的选中状态。 (3)toggle() 将复选框的状态置反。 5.2.6、RadioButton RadioButton就是我们在其他GUI中使用单选按钮。 一般情况下,我们总是将RadioButton与RadioGroup结合使用: 使得在一组RadioButton中只有一个可以被选中。 通过RadioGroup我们控制RadioButton的选中状态。 常用的RadioGroup的方法: (1)check(intrb) 检查指定rb的选中状态。 (2)clearCheck() 清除所有RadioButton的选中状态,因此,调用该方法后,没有RadioButton被选中。 (3)getCheckedRadioButtonId() 返回被选中的RadioButton的id,若没有RadioButton被选中,则返回-1。 5.3.1、LinearLayout LinearLayout是一个Box,即,一个盒子,放置在其中的组件要么按列、要么按行的方式进行顺序布局。 下面介绍LinearLayout的常用XML配置属性。 (1)android: orientation 设置LinearLayout容器布局组件的方式: 要么按行要么按列。 只能取值: horizontal、vertical。 (2)android: gravity 设置布局在LinearLayout容器内的组件的对齐方式。 取值包括: top、bottom、left、right、center、start、end等。 (3)android: id 设定该LinearLayout的id,以便可以再程序中引用该容器。 这个属性是从View中继承来的。 (4)其他从View中继承来的属性,包括android: backgroud、android: visibility等。 同时,对于布局在LinearLayout中的组件,LinearLayout也提供如下这些XML配置属性,用以告知LinearLayout如何放置这些组件。 这些配置属性是在容器的LinearLayout.LayoutParams配置属性列表中说明的: 点击黄色标注的链接,然后展开“Fromclassandroid.view.ViewGroup.LayoutParams”: (1)android: layout_width和android: layout_height 这两个属性是为放置在LinearLayout容器的组件提供的: 所有放置在LinearLayout中的组件都必须通过android: layout_width和android: layout_height属性来告知LinearLayout如何对组件进行布局。 有三个可选的值: match_parent/fill_parent----占满父容器的所有空间;wrap_content----组件将只占用为了正确显示器内容所需的空间;一个常数值和单位,例如,100px,表示该组件占用100个像素宽。 可用的单位: px(像素): 屏幕上的点。 in(英寸): 长度单位。 mm(毫米): 长度单位。 pt(磅): 1/72英寸。 dp(与密度无关的像素): 一种基于屏幕密度的抽象单位。 在每英寸160点的显示器上,1dp=1px。 dip: 与dp相同,多用于Google示例中。 sp(与刻度无关的像素): 与dp类似,但是可以根据用户的字体大小首选项进行缩放。 (2)android: layout_gravity 设置组件在容器中的布局方式。 (3)android: layout_weight 设置组件占用容器的空余显示空间的比例。 (4)android: layout_margin、android: layout_marginTop、android: layout_marginBottom、 android: layout_marginLeft、android: layout_marginRight 设置组件的外边界,类似于HTML/CSS中的margin。 5.3.2、RelativeLayout RelativeLayout,顾名思义,就是相对布局: 一个组件相对于另一个组件的位置来布局组件。 例如,将组件A布局在组件B的右下方。 RelativeLayout为布局在其中的组件提供了如下的XML布局属性,其含义是不言而喻的: 5.3.3、TableLayout TableLayout很像HTML中的Table标签,用于按行和列的方式来布局组件。 TableLayout与TableRow组件协同工作来完成对组件的布局。 TableLayout的XML配置属性: 其中: android: collapseColumns,指定要隐藏的列,以0为起始,多个列用“,”分隔;android: shrinkColumns,指定当列空间不够时,自动缩小的列,以0为起始,多个列用“,”分隔;android: stretchColumns,指定当列空间有多余时,自动延展的列,以0为起始,多个列用“,”分隔。 对于布局在TableLayout中的组件,更准确的说是布局在TableRow中的组件,可以使用如下的由TableRow.LayoutParams提供的XML配置属性进行配置: 其中,android: layout_column指定组件在TableRow中的列位置;android: layout_span指定组件占用几列。 5.3.4、FrameLayout FrameLayout以层叠的方式的布局组件: 每次只能显示其中一个。 这有点类似扑克牌,你只能看到最上面的那张。 FrameLayout为布局在其中的组件提供了一个XML配置属性: 用以设置FrameLayout容器中的组件的对齐方式。 5.3.5、ScrollView ScrollView也是一个容器,它是FrameLayout的子类,它的主要作用是可以包括多余屏幕可以显示的内容,ScrollView将提供垂直滚动。 ScrollView提供了如下的XML配置属性: 6、理解和使用Intent 在基于HTML的页面程序中,我们使用“超链接”来实现页面之间的跳转。 之前我们也提到过,Android应用程序界面是由一个到多个Activity组成的,一个Activity相当于HTML的一个页面,那么,当一个Android应用程序具有多个有相互联系的Activity时,它们之间如何实现跳转呢? 这就是通过使用我们在这里将要介绍的Intent来实现的。 6.1、Intent应用入门 6.1.1、Intent入门例子 6.1.2、课堂练习 编写与例子相似的、能通过Intent打开新的Activity的程序。 6.2、细说Intent 可以指明的条件包括: action、data和category。 6.2.1、Intent的action 我们可以为我们自己创建的Activity定义一个用于打开这个Activity的action,这个action是一个字符串常量,你可以任意定义,但是,Android建议的做法是,在命名action是,采用“Java包名+特定串”的形式来命名action。 例如,我们为Intent_02_Activity定义的action: teaching.android.chapter6.intent_01.A1,其中,teaching.android.chapter6.intent_01是包名,而A1是特定的名称。 需要强调的是,Activity与action不一定是1对1的对应关系,也就是说,可能多个Activity对应同名的action,这在Android中是允许的,当这种情况出现时: Android平台将弹出一个对话框,让你选择满足条件的哪个Activity来运行。 Android平台的Intent类已经预先定义了一些action: 其中的每个action都有确定的含义,例如,ACTION_MAIN的含义: 它表示包含这个action的Activity是android应用程序的入口Activity,也就是,当运行某个Android应用程序时,当首先打开包含这个action的Activity。 这些action可以用来打开系统已经包含的一些Activity,例如,电话拨号Activity。 当然,你也可以在程序程序直接使用这些action作为你的Activity的action。 为了指明一个Intent的action,有两种方式: (1)通过Intent类的构造函数newIntent(Stringaction)及newIntent(Stringaction,URIuri)。 (2)通过Intent类的setAction(Stringaction)函数。 6.2.2、Intent的data 在通过隐式Intent打开Activity时,除了指明Activity的action外,我们经常还指明Activity所支持的data。 就像在HTML中那样,我们除了指明是GET、PUT、POST动作外,还经常需要指明页面的URI地址。 在Android中,我们通过Intent的data指明要操作的数据,Android的data也是通过URI来指明的。 URI的标准形式: scheme: //host: port/path或者 scheme: //host: port/pathPattern或者 scheme: //host: port/pathPrefix 例如,在如下的URI中: content: //com.example.project: 200/folder/subfolder/etc scheme为"content",host为"com.example.project",port为"200",path为"folder/subfolder/etc"。 通过 host、mimeType、path、pathPattern、pathP
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 讲义