您的位置:首页 > 移动开发 > Android开发

Android知识点

2019-06-14 13:46 253 查看

第一章
Android操作系统
应用程序层,应用程序框架层,运行环境与库层,Linux内核层。
功能:
应用程序层:Android系统应用程序的开发者所编写的应用程序。
应用程序框架层:为应用程序层的开发者提供API,是应用程序的支持框架和调用接口
运行环境与库层:Android应用系统在独立的进程中运行,拥有独立的Dalvik虚拟机
Linux内核层:Android平台的核心系统服务依赖于Linux操作系统的内核
Android开发环境
JDK是开发Java类应用程序必备的开发工具包和运行环境
SDK是Android软件开发工具包
ADT含义:借助Eclipse开发Android应用程序的插件
Android项目结构
1.src是源代码资源
2.gen是一个由系统自动生成的文件
3.assets存放外部资源
4.bin存放编译后的文件
5.libs存放当前项目需要加载的第三方jar文件
6.res存放资源文件
7.layout文件夹用于存放布局文件
(1)array.xml可以存放数组。
(2)strings.xml可以存放字符串。
(3)colors.xml可以存放颜色的字符串值。
(4)dimens.xml可以存放尺寸值(dimension value)。
(5)styles.xml存放样式(style)对象。
此外,res中还可以出现以下文件夹:
(1)anim文件夹用于存放动画文件
(2)xml文件夹存放任意的XML文件。
(3)raw文件夹存放直接复制到设备中的任意文件。
8.AndroidManifest.xml 是每个Android 项目都必需的文件。
引用资源的一般形式
“R.资源类型.资源名称”
R类中的所有内部类和成员都用final和static修饰,这些成员可以直接通过类名引用,无须创建R对象
布局文件的编辑视图
可视化编辑视图和代码视图
日志信息严重等级(5个级别)
Verbose(全部信息)、Debug(调试信息)、Info(提示信息)、Warn(警告信息)、Error(错误信息),依次使用Log.v、Log.d、Log.i、Log.w、Log.e输出,使用System.out输出的信息属于提示信息。
Android系统应用程序的后缀名是.apk
在Android项目的bin目录下会产生一个“项目名.apk”文件

第二章
Ui界面的两种方式:布局文件和代码
使用布局文件设计界面
Android布局文件位于项目结构中的res/layout 下,是一个XML文件,它的命名只能是小写字母、数字和”_”,并且数字不能开头,合法的布局文件会在R文件中生成对应的引用,当项目的R文件无法自动生成时,很多时候是因为资源文件res中命名非法造成的,应仔细检查res中的所有资源,是否存在大写字母或其他字符。
为了方便引用布局文件中的控件,在添加完控件之后,都应该赋子唯一的标识符,对应的属性android:id。
Android布局文件的设计与Java GUl开发使用awt,swing编程相似,控件应放在布局管理器(或称容器)中,布局管理器之间可以相互嵌套。
给一个Activity指定布局,可以在Activity的onCreate方法中,使用如下代码:
setContent View(R.layout.布局文件名称)
控制控件的样式,内容,行为,设置监听器。引用控件的代码如下:
findViewByld(R.id.控件id属性)
上述方法必须位于设置布局文件setContentVicw方法之后,否则会抛出错误。
id为tv的控件是TextView 控件,在引用时可以采用如下代码:
TextView tv =(TextView)findViewById(R.id.tv)
使用Java代码设计界面设计
除了使用xml布局文件设计界面,Android也支持类似于Java GUI方式的UI开发,通过new关键字创建控件,再将这些控件放置在相应布局容器中。
控件的基本属性
Android系统控件共分为10类,包括了应用程序所需要的大部分控件;
1.Form Widgets(表单类控件),包括TextView(文本标签)、Button(按钮)、RadioButton(单选按钮)、CheckBox(复选框)、SeekBar(拖动条)、Spinner(下拉表)等。
2.Text Filelds(文本框控件),根据输入内容的不同分为普通文本框、密码文本框、电话文本框、数字文本框
3.Layouts(布局管理器控件),包括LinearLayout(线性布局)、RelativelLayout(相对布局)、FrameLayout(帧布局)、TableLayout(表格布局)、AbsoluteLayout(绝对布局)、GridLayout(网格布局)。
4…Composite(组合控件),包括ListView(列表视图)、GridView(表格视图)、Scroll View(滚动视图)、TabHost(标签容器)等。
5.Images & Media(图片和媒体控件,包括ImageView(图片控件)、ImageButton(图片按钮)、VideoView(视频播放控件)等。
6.Time &.Date(时间和日期控件),包括TimePicker(时间选择器)、DatePicker(日期选择器)、AnalogClock(模拟时钟)、DigitalClock(电子时钟)等。
7.Transitions(过渡效果控件),包括ImagesSwitcher(图片切换)、ViewSwitcher(视图切换)等。
控件基本属性
TextView直接继承View类,主要功能是显示文本
Button控件继承TextView,主要功能是处理用户的点击操作
EditText控件是TextView的子类,主要功能是供用户输入数据
EditText控件inputType属性取值
android:inputType取值 说明
android:inputType=“number” 输人内容为数字
android:inputType=“numberDecimal” 输入内容为带小数点的浮点格式
android:inputType=“phone” 输人内容为电话号码
android:inputType=“datetime” 输入内容为日期时间
android:inputType=“date” 输入内容为日期键盘
android:inputType=“textCapWords” 输入文本时词首字母大写
android:inputType=“textCapSentences” 输人文本时句首字母大写
android:inputType=“textAutoCorrect” 输人文本时自动更正
android:inputType=“textAutoComplete” 输人文本时自动完成
android:inputType=“textMultiLine” 可以多行输人
android:inputType=“textUri” 输入内容为网址
android:inputType=“textEmailAddress” 输人内容为电子邮件地址
android:inputType=“textPostalAddress” 输入内容为地址
android:inputType="textPassword’ 密码输入框
android:inputType="textVisiblePassword 可见密码输人框
-CheckBox是CompoundlButton 类的子类,是Button类的间接子类,主要功能是提供复选框
-RadioButton是ComnoundButton类的子类,是Button类的间接子类,主要功能是单选按钮
-SeekBar(拖动条)是ProgressBar(进度条)的间接子类,ProgressBar 是View的子类
-监听器OnSeekBarChangeListener有3个方法,分别对应拖动开始,结束和拖动中,比较常用的是onProgressChanged方法,progress参数是拖动条被修改的取值。
RatingBar:RalingBar的继承关系与SeekBar一样,它是SeekBar和ProgresBar的一种扩展,默认使用星形图片来显示等级评定,触摸、拖动或使用键来设置评分。
ProgressBar
ProgressBar继承自View,表示进度条
属性取值:
Widget.ProgressBar.Horizontal,水平进度条样式。
Widget.ProgressBar.Small,环形进度条,小尺寸。
Widget.ProgressBar.Large,环形进度条,大尺寸。
Widget.ProgressBar.Inverse,环形进度条,普通尺寸。
ProgressBar的常用属性
属性 说明
android:max 进度条的最大值
android:progress 当前主进度值
android:secondaryProgress 当前次进度值
android:progressDrawable 进度条背景
布局管理器
Android布局管理器都继派自ViewGroup类,间接继承View类,用于存放控件或嵌套其他布局。Android 提供了6种布局管理器,分别是线性布局(LinearLayout),相对布局(RelativeLayout)、表格布局(TableLayout)、帧布局(FrameLayout)、绝对布局(AbsoluteLayout)和网络布局(GriLayout)。
LinearLayout常用属性
属性 说明
android:gravity 设置元素的对齐方式
android:orientation 设置线性方向
android:layout_gravity 元素属性,对齐方式
android:layout weight 元素,表示所占位置的权重
Relativelayout相对布局管理器:元素可以使用它们彼此之间的位置关系,确定摆放位置
RelativeLayout常用属性
属性 说明
android:Iayout_below 在某元素的下方
android:Iayout_above 在某元素的上方
android:layout_toLeftOf 在某元素的左边
android:layout_toRightOf 在某元素的右边
android:layout_alignTop 本元素的上边缘和某元素的上边缘对齐
android:layout_alignlLeft 本元素的左边缘和某元素的左边缘对齐
android:layout_alignBottom 本无素的下边缘和某元素的下边缘对齐
android:layout alignRight 本元素的右边缘和某元素的下边缘对齐
android:layout_centerHrizontal 水平居中
android:layout_centerVertical 垂直居中
android:layout centerlnparent 相对于父元素完全居中
android :layout_alignParentBottom 贴紧父元素的下边缘
android:layout _alignParentLeft 贴紧父元素的左边缘
android:layout_alignParentRight 贴紧父元素的右边缘
android:layout_alignParentTop 贴紧父元素的上边缘
android:layout _marginBottom 底边缘的距离
android:layout_marginLeft 左边缘的距离
android:layout _marginRight 右边缘的距离
android:layout_marginTop 上边缘的距离
TableLayout表格布局是以行为单位的布局方式,它不需要指明有多少行、多少列,通过添加TableRow或其他元素动态确定行数和列数
TableLayout属性
属性 说明
android:shrinkColumns 允许收缩的列
android:stretchColumns 允许拉伸的列
android:collapseColumns 允许被隐藏的列
android:layout_column 元素属性,所处列
android:layout_span 元素属性,跨越列数
Absolutelayout绝对布局管理器以屏幕左上角为左边原点(0,0)
使用图片控件
主要用于显示图片的控件是ImageView.ImageView继承View类,它的子类有ImageButton、QuickContactBadge.
ImageView不但可以显示图片,还可以显示任何Drawable对象。
ImageView常用属性
属性 说明
android:adjustViewBounds 是否保持宽高比,与maxWidth、MaxHeight 一起使用
android:maxHeight、android:maxWidth 最大宽高,与setAdjustViewlBounds一起使用
android:scaleType 图片的缩放模式
android:sre 设置View的drawable
ImageView在设置显示内容时可以采用下面4种方法:
void setlmageBitmap(Bitmap bm)
void setlmageDrawable(Drawable drawable)
void setlmageResource(int resId)
void setlmageURI(Uri uri)
ImageButton
图片按钮继承ImageView,其本质是ImageView的特例
数据适配器
数据适配器顾名思义就是把不同格式的数据(数组或集合等)按统一格式填充给控件,使得这些控件在呈现数据时不用关心数据的差异性,经常用到的适配器类有ArrayAdapter、SimpleAdapter、SimplaCursorAdapter和BaseAdapter。
ArrayAdapter常用构造方法如下
ArrayAdapter(Context context,int resource,int textViewResourceld)
ArrayAdapter(Context context,int resource,T[] objects)
ArrayAdapter(Context context,int resource,int text ViewResourceld,T[] objects)
ArrayAdapter(Context context,int resource,Listobjects)
ArrayAdapter(Context context,int resource,int textViewResourceld,List objects)
参数context指上下文环境。resource是适配器的样式文件,可以使用“R.layout.布局文件”引用项目中的布局文件,使用“android.R.layout.布局文件”引用Android系统中的市局文件。textViewResourceld布局文件中的某个控件ID,适配器中的数据将被设置到诊件。objects是待填充的数据,可以是数组或List集合。数据也可以通过方法addAllg到适配器中。
ListView与ListActivity
ListView是比较常用的一种控件,以垂直列表的方式显示数据。ListView直接继承AbsListView,间接继承AdapterView。
日期和时间控件
DatePicker 和TimePicker都继承FrameLayout类,分别用于选择日期和时间。
DatePicker常用属性
属性 说明
android:calendar TextColor 日历列表演示
android:calendar ViewShown 是否显示日历视图
android:datePickerMode 日历模式
android:endYear 允许选择的结束年份
android:startYear 运行选择的开始年份
android:firstDayOfWeek 设置周几作为每周的第一天
android:maxDate 允许设置的最大日期
android:minDate 允许设置的最小日期
子线程借助Handler修改UI
Handler类位于android.os包中,其作用是发送和处理Message 对象、Runnable对象

第三章(考大题)
Activity三种状态:激活态,暂停态,停止态
生命周期方法
①onCreate(),当Activity被创建时调用。
②onStart(),当Activity 被创建后即将可见时调用。
③onResume(),当Activity位于设备最前端,对用户可见时调用。
④onPause(),当另外一个Activity遮挡当前Activity,当前Activity 被切换到后台时调用。
⑤onRestart(),当Activity执行完onStop方法,又被用户打开时调用。
⑥onStop(),如果另一个Activity完全遮挡了当前Activity时,该方法被调用。
⑦onDestroy(),当Activity被销毁时调用。
Activity的生命周期图

Intent是一个消息对象,并且可以通过它来启动应用程序的其他组件。通常通过intent在组件之间传递消息有3种情况:启动Activity,启动Service,发送Broadcast。
使用Intent启动Activity
启动Activity可以分别使用startActivity(lntent intent)方法和startActivityForResult(Intent intent,int requestCode)方法。
问:Activity传参到页面上并读出(A:打开短信(Intent)B:动态)

第四章
Android 中定义了如下的资源类型
(1)布局资源。定义应用程序中UI布局的xml文件,保存在res/layout目录下,通过R.layout类访问。
(2)菜单资源。定义应用程序菜单的内容,保存在res/menu目录下,通过R.menu类访问。
(3)“值”资源。应用程序中所需要的字符串、尺寸、颜色等均可在res/values目录下定义相应的xml文件,通过R.<resource_type>类来访问:
(4)图片资源。定义各种图片或者xml的图片资源,保存在res/drawable目录下,通过R.drawable类访问。
(5)动画资源。定义预设动画,保存在res/anim目录下,通过R.anim类访问。
(6)样式资源。定义用户界面元素的外观和格式,保存在res/values/styles.xml文件中,通过R.style类访问。
布局资源的访问方式有以下两种:
Java 代码:R.layout.filename
Xml代码:@[packagename]layout/filename
菜单资源 有大题P117
菜单资源只能通过Java代码访问,访问方式为R.menu.filename。
普通菜单3种类型:options menu,context menu,sub menu
options menu 创建步骤加下
(1)创建菜单资源xml文件。
(2)重写Activity的onCreateOptionsMenu方法,实现创建菜单功能。
(3)当菜单项(Menultem)被选中时,重写Activity的onOptionsMenuSelected 方法响应事件。
Menu的菜单项可以是Menultem,也可以是SubMenu。Menultem 直接显示在Menu上。
Contextmenu是一个浮动菜单,当用户在activity的某一个控件元素上长按时出现该菜单。
ContextMenu的创建步骤如下:
(1)创建菜单资源xml文件。
(2)重写Activity的onCreateOptionsMenu方法,实现创建菜单功能。
(3)当菜单项(Menultem)被选中时,重写Activity 的onOptionsMenuSelected方法响应事件。
(4)在Activity 中调用registerForContextMenu 为控件注册 ContextMenu.

“值”资源
*字符串:字符串资源存放在/res/values/strings.xml中,在xml中访问格式为:@string/
在Jave代码中获取id的格式为R.string.< string_name>,获取字符串的格式为getResource().getString()
颜色资源:颜色资源存放在/res/values/colors.xml中,引用方式为@color/
在Jave代码中获取id的格式为R.color.<color_name>,获取颜色值的格式为getResource().getColor()
尺寸资源:尺寸资源放置在/res/values/dimmens.xml中,在xml中的引用方式是@dimen/
在Jave代码中获取id的格式为R.dimen.<dimen_name>,获取尺寸值的格式为getResourceO.getDimen()
定义两个style资源的相关代码:

第五章
创建菜单,只需要重写Activity的onCreateOptionsMenu方法
监听菜单,中需要重写Activity的onOptionsltemSeleted 方法
创建菜单的代码
public boolean onCreateOptionMenu(Menu menu)(
menu.add(Menu.NONE,Menu.FIRST,1,“新建”).setIcon(android.R.drawable.ic_menu_add);
menu.add(Menu.NONE,Menu.FIRST+1,2,”编辑”).setIcon(android.R.drawable.ic_menu_edit);
menu.add(Menu.NONE,Menu.FIRST+2,3,“删除”).BetIcon(android.R.drawable.ic_menu_delete);
menu,add(Memu.NOME,Menu.FIRST+3,4,”帮助”).setIcon(android.R.drawable.ic_menu_help);
return true;
}
处理菜单项选中相关方法的代码
public boolean onOptionsItemSelected(MenuItem item){
switch(item.getItemId()){
tv.append(“MenuItem-新建被选中\n”);
break;
caes Menu.FIRST+1:
tv.append(“MenuItem-编舞被选中\n”);
break;
case Menu.FIRST+2;
tv.append(“MenuItem-删除被选中\n”);
break;
case Menu.FIRST+3;
tv.append(“MenuItem-帮助被选中\n”);
break;
}
return false;
}
Menu添加子菜单使用addsubmenu方法,该方法将返回一个submenu对象,submenu继承自menu,但是submenu中添加的菜单项不支持图标设置。
Mean添加子菜单使用addSubMenu方法
SubMenu subMore = menu.addSubMenu(Menu.NONE,Menu.FIRST+4,5,“更多”);
subMore.setHeaderTitle(“更多”);
subMore.setHeaderIcon(android.R.drawable.ic_menu_more);
subMore.add(Menu.NONE,Menu.FIRST +5,6,“版本检查”);
subMore.add(Menu.NONE,Menu.FIRST +6,7,“关于我们”);
NotificationManager是一个重要的系统级服务,该对象位于应用程序的框架层中,应用程序可以通过它向系统发送全局的通知。
如果想显示为水平进度条,可以调用setProgressStyle(ProgressDialog.STYLE_HORIZONTAL)来完成。

第八章
Service配置标签是,嵌套在标签内部。可以通过Intent来启动(Start),也可以绑定(Bind)到宿主对象(启动Service的对象)
Service常用方法说明
方法 说明
onBind(Intent intent) 抽象方法,绑定模式时执行该方法,通过IBinder对象访问Service
onCreate() Service组件创建时执行
onDestroy() Service组件销毁时执行
onStartCommand(Intent intent,int flags,int startld) 开始模式时执行该方法。每次执行startService,该方法都会被执行
onUnbind(Intent intent) 接触绑定时执行
stopSelf() 停止Service组件
AndroidManifest.xml文件

Service生命周期

Service的启动模式
启动Service组件和停止Service组件的方法都位于Context类,在Activity中可以直使用。方法的功能与参数意义如下:
startService(Intent service),以Start 模式启动Service组件,参数service是目标组件。
stopService(Intent service),停止 Start 模式启动的Service组件,参数Service是目标组件。
bindService(Intent service,ServiceConnection conn,int flags),以Bind 模式启动Service 组件,参数service是目标组;conn是与目标组件链接的对象,不可以是null;flags是绑定模式,可以取值为Context,BIND_AUTO_CREATE、Context.BIND_NOT_FOREGROUND等。前者表示当收到绑定请求时,如果服务商未创建,则即刻创建。若系统内存不足,需要先销毁优先级低的组件来释放内存,并且只有当绑定该服务的“启动者”被销毁时,服务才可被销毁。后者表示绑定该服务的“启动者”不具有前台优先级,仅在后台运行。
unbindService(ServiceConnection conn),解除绑定模式的Service组件,conn是绑定时的链接对象。
远程Service
使用AIDL定义远程Service可以按照以下两步进行:
(1)在项目中创建AIDL文件,这是一种后缀名为.aidl的普通文件。在该文件中定义接口,声明方法,与在Java文件中的操作一样。不同的是,AIDL中所用到的类型(除基本数据、String、List、Map和CharSequence)即使在同一个包中,都需要明确引人
(2)新建Service组件,使用内部类实现AIDL中定义接口的相关方法,在onBind生命周期方法中返回该内部类的对象。
在不同的项目中访问远程Service
在Activity中绑定并访问远程Service组件 edu.freshen.rs.RemoteService.ACTION
广播
广播的权限管理主要为了解决如下两个问题:
何种接收器有权接收广播,这通过配置uses-permission实现。
何种广播有权向接收器发送广播,这通过设置 receiver 的 android:permission属性实现。
常用系统广播事件
广播事件 说明
ACTION_BATTERY_CHANGED 充电状态,或者电池的电量发生变化时发送广播,只能通过动态注册接收
ACTION_BOOT_COMPLETED 系统启动完成后发送广播,该广播仅发送一次
ACTION_PACKAGE_ADDED 成功安装APK之后发送广播
ACTION_PACKAGE_REMOVED 成功删除某个APK之后发送广播
ACTION POWER_CONNECTED 插上外部电源时发送广播
ACTION_POWER_DISCONNECTED 断开外部电源连接时发送广播
ACTION_REBOOT 重启设备时发送广播
ACTION_SHUTDOWN 关闭系统时发送广播
ACTION_SCREEN_OFF 屏幕被关闭之后发送广播
ACTION_SCREEN_ON 屏幕被打开之后发送广播
ACTION_TIME_CHANGED 时间被设置时发送广播
ACTION_TIME_TICK 当前时间改变时发送广播;每分钟都发送,只能通过动态注册接收
ACTION_BATTERY_CHANGED 充电状态或者电池的电量发生变化时发送广播,只能通过动态注册接收
Telephony.SMS_RECEIVED 短信到达广播,使用pdus作为key即可从Intent中获取短信内容
广播的action名称为Android.provier.Telephony.SMS_RECEIVED,并且在intent中封装了短信内容。使用参数值pdus即可从intent中获取短信内容。pdus是一个Object类型的数组,每一个Object对象都是一个byte字节数组,即每一元素都对应一条短信内容。
问:Android中的广播有哪些分类?使用什么方法发送这些广播?
答:Anddrod系统中的广播可以分为普通广播和有序广播。
普通广播使用sendBroadcast方法发送,有序广播使用sendOrderedBroadcast方法发送。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: