Android开发日志—常用控件篇(android简介和容器控件)
Android 应用程序的基本组件

Android 应用程序的基本组件Android 操作系统是目前世界上最流行的移动操作系统之一。
它提供了广泛的应用程序开发工具和框架,使开发者能够轻松地创建出丰富多样的应用程序。
而这些应用程序的基础是由一些基本组件构成的。
本文将介绍 Android 应用程序的基本组件,包括活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver)和内容提供器(Content Provider)。
活动(Activity)是 Android 应用程序的核心组件之一。
它代表了用户与应用程序之间的交互界面。
每个 Android 应用程序都至少包含一个活动,而活动可以包含多个界面元素,例如按钮、文本框、图像等。
活动通过布局文件定义了界面的外观和布局,通过代码来处理用户的操作和响应。
活动之间可以通过意图(Intent)来进行切换和通信,从而实现应用程序之间的流转和交互。
服务(Service)是在后台运行的组件,它可以在没有用户界面的情况下执行长时间运行的操作。
服务通常用于执行一些独立的任务,例如播放音乐、下载文件等。
通过在应用程序中创建服务,开发者可以在用户不可见的情况下执行一些必要的操作,并提供持久性的后台功能。
广播接收器(Broadcast Receiver)是一种用于接收系统广播消息的组件。
广播是 Android 系统中不同组件之间进行通信的一种方式,例如设备启动完成、电池电量变化等。
通过注册一个广播接收器,开发者可以监听和响应系统广播消息,并执行相应的操作。
广播接收器可以用于实现各种功能,例如接收短信、接收网络状态变化等。
内容提供器(Content Provider)是 Android 中用于共享数据的一种机制。
内容提供器允许一个应用程序将其数据暴露给其他应用程序。
通过内容提供器,不同的应用程序可以相互访问和共享数据,实现数据的交互和共用。
例如,系统提供的联系人数据库就是通过内容提供器来共享和访问联系人数据的。
Android常用控件

《Android基础应用》Android常用控件⏹本章任务⏹使用Android开发使用时间组件⏹使用Android开发使用进度条组件⏹使用Android开发创建底部选项卡⏹本章目标⏹了解Android的组件层次结构⏹掌握常用的日期时间类控件⏹掌握常用的几个容器组件1.Android组件的层次结构UI组件都是View的子类,View有很多子类,它们之间存在树状的继承关系View及其子类结构图TextView及其子类结构图ViewGroup及其子类结构图其下的子类一般作为容器或布局来使用FrameLayout及其子类结构图其下的子类通常作为容器或布局来使用2.时间控件2.1日期时间选择器DatePicker组件可用于输入日期,TimePicker组件可用来选择时间,只能输入小时和分,默认12小时制DatePicker●使用onDateChangedListener监听器来获取用户的日期选择●使用init对组件进行初始化●使用getYear,getMonth,getDayOfMonth方法获得用户选择的年,月,日TimePicker●使用onTimeChangedListener监听器获取用户的时间选择●使用setIs24HourView设置是否以24小时制显示●使用getCurrentHour获得当前的小时数●使用getCurrentMinute获得当前的分钟数示例示例的实现结果2.2时钟组件AnalogClock组件用来以表盘的方式显示当前时间,该表只有时针和分针,DigitClock组件以数字的方式显示当前时间可以显示时分秒,由于DigitClock继承TextView,可以使用TextView 的属性示例示例的实现结果2.3 计时器组件Chronometer和DigitalClock 都继承TextView,但它不显示时间,它显示的是从某个起始时间开始,一共过去了多少时间默认情况下只能输出MM:SS或H:MM:SS的时间格式重要属性●android:format:定义时间的格式如:hh:mm:ss重要方法●setBase(long base):设置倒计时起始时间参数为SystemClock.elapsedRealtime()方法返回的值为当前时刻●setFormat(String format):设置显示时间的格式●start():开始计时●stop():停止计时●setOnChronometerTickListener(Chronometer.OnChronometerTickListener listener):当计时器改变时调用示例示例的实现结果练习——时间组件需求说明:日期时间选择器时钟组件计时器组件按照课件中示例图实施3.进度类组件3.1进度条组件当一个应用在后台执行时,前台界面就不会有什么信息,这时用户根本不知道程序是否在执行、执行进度如何、应用程序是否遇到错误终止等,这时需要使用进度条来提示用户后台程序执行的进度Android系统提供了两大类进度条样式●长形进度条●圆形进度条(大中小三种)默认是普通圆形进度条,是不确定Android进度条默认普通圆形ProgressBar大号圆形ProgressBar小号圆形ProgressBar示例3.2标题进度条进度条除了可以显示在Activity中外,还可以显示在标题中圆形进度条长方形进度条Array示例示例的实现结果3.3 可拖动的进度条组件SeekBar 控件其实就是一个高级点的进度条,就像我们在听歌,看电影用的播放器上的进度条一样,是可以拖动的,可以改变进度的一个进度条控件SeekBar 是ProgressBar 的子类,这个组件不需要设置sencondaryProgress 属性 事件接口OnSeekBarChangeListener 处理组件事件由以下三个方法● public void onStartTrackingTouch(SeekBar seekBar) 按下滑杆后触发● public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) 动滑杆开始滑动时触发● public void onStopTrackingTouch(SeekBar seekBar) 松开滑杆时触发示例示例的实现结果3.4界面评分组件RatingBar是SeekBar和ProgressBar的扩展,用星星来评级如网上购物,对商家的产品和服务进行打分等常用属性●android:numStarts用于评分的五角星数量●android:rating当前的分数●android:stepSize分数的增长单位,默认是0.5事件接口OnRatingBarChangeListener处理组件事件● public void onRatingChanged(RatingBar ratingBar, float rating,boolean fromUser)示例示例的实现结果属性Style●用于为RatingBar设置不同的风格,一旦设置了style,就不可点击改变值示例示例的实现结果练习——进度组件需求说明:ProgressBarSeekBarRatingBar按照课件中示例图实施4.滚动视图当一个屏幕因为要显示的内容太多而显示不全时,我们可以使用滚动视图来解决这个问题垂直滚动视图ScrollViewScrollView可以用来实现垂直滚动的视图,当它内容组件的高度超过屏幕的高度时,就会在屏幕的右侧出现一个垂直方向的滚动条,通过单击手机上的上下按钮或者上下拂动屏幕可以查看未显示部分注意:在ScrollView标签中只能包含一个组件使用步骤在ScrollView标签中包含一个LinearLayout标签,并设置盖标签的android:orientation属性为vertical在LinearLayout中放置需要显示的组件示例ScrollView只能用来实现垂直滚动的视图,如果要实现水平滚动,需要水平滚动视图HorizontalScrollView示例5.选项卡组件当一个屏幕因为要显示的内容太多而显示不全时,除了使用滚动视图外,还可以使用选项卡组件,选项卡TabHost类似于android系统默认提供的电话薄界面选项卡可以方便的在窗口上放置多个标签页,每个标签页相当于获得了一个与外部容器相同大小的组件摆放区域选项卡是有多个Tab组成的,其中每个Tab都可以显示一个View或一个Activity使用步骤●在界面中定义TabHost组件,并为该组件定义该选项卡的内容组件,为内容组件定义id,这些内容组件将要作为某个Tab选项的视图●定义一个继承TabActivity的Activity●调用TabActivity的getHost方法获得TabHost对象●通过TabHost的相关方法来创建和添加选项卡newTabSpec(String tag)创建选项卡addTab(TabHost.TabSpec tabSpec)添加选项卡每个Tab在切换的时候会产生一个事件,通过OnTabChangedListener监听 示例---方式一示例示例的实现结果示例—方式二示例—方式三 Tab底部显示与上个案例的区别是android:id="@android:id/tabcontent的FrameLayout 与android:id="@android:id/tabs"TabWidget互换位置示例—方式四 设置关联Intent练习——创建选项卡需求说明:创建选项卡如图每个选项卡关联不同的Intent默认选择第二项练习——创建底部选项卡需求说明:创建选项卡如图每个选项卡关联不同的Intent默认选择第二项总结本章学习哪几种时间类组件?本章学习了哪几个进度条类组件?TabHost的使用方式?。
android常用控件大全

android常用控件大全在Android中使用各种控件(View)DatePicker-日期选择控件TimePicker-时间选择控件ToggleButton-双状态按钮控件EditText-可编辑文本控件ProgressBar-进度条控件SeekBar-可拖动的进度条控件AutoCompleteTextView-支持自动完成功能的可编辑文本控件MultiAutoCompleteTextView-支持自动完成功能的可编辑文本控件,允许输入多值(多值之间会自动地用指定的分隔符分开)ZoomControls-放大/缩小按钮控件Include-整合控件VideoView-视频播放控件WebView-浏览器控件RatingBar-评分控件Tab-选项卡控件Spinner-下拉框控件Chronometer-计时器控件ScrollView-滚动条控件在Android中使用的LayoutFrameLayout:里面只可以有一个控件,并且不能设计这个控件的位置,控件会放到左上角LinearLayout:里面可以放多个控件,但是一行只能放一个控件TableLayout:这个要和TableRow配合使用,很像html里面的tableAbsoluteLayout:里面可以放多个控件,并且可以自己定义控件的x,y的位置RelativeLayout:里面可以放多个控件,不过控件的位置都是相对位置(Android界面布局好像还可以直接引用一些view,如ScrollView等)常用控件:1,EditText主要函数:setText/getText设置/获取文本内容,setHint设置缺省显示内容;2,RadioGroup,RadioButtonRadioButton的isChecked()判断是否被选中获取选中RadioButon的ID:设置RadioGroup.setOnCheckedChangeListener方法publiconCheckedChanged(RadioGroupgroup,intcheckedId)//checkedId 是选中RadioButton的ID3,CheckBoxisChecked()判断是否被选中setOnCheckedChangeListener方法监视选中状态改变情况4,Spinnera,显示数据1),硬编码加载通过setAdapter方法设置类型为ArrayAdapter(Contextcontext,inttextViewResId,String[]objects)textViewResourceId:显示内容的ViewID默认设置为yout.simple_spinner_itemobjects:显示的内容2),从资源文件中加载ArrayAdapter.createFromResource(Contextcontext,inttextArrayResId,in ttextViewResId)//textArrayResId是资源ID返回ArrayAdapter<CharSequence>b,设置下拉列表的风格(可选)adapter.setDropDownViewResource(yout.simple_spinner_d ropdown_item);c,监听选项选择变更事件setOnItemSelectedListener设置监听去Spinner.OnItemSelectedListener类须实现以下两个方法publicvoidonItemSelected(AdapterView<?>parent,Viewview,intposition ,longid)//view选中项实例,position选择项在adapter中的位置publicvoidonNothingSelected(AdapterView<?>arg0)d,设置选中项Spinner.setSelection(position)//索引从0开始d,获取选中项getSelectedItemPosition()getSelectedItem()//该值toString()则为选中内容的字符串getSelectedItemId()getSelectedView()5,AutoCompleteTextView1,setAdapter设置数据adapter2,设置输入多少个字符显示提示AutoCompleteTextView.setThreshold(intthreshold)6,MultiAutoCompleteTextView(允许输入多值,多值之间会自动地用指定的分隔符分开)1,setAdapter设置数据adapter2,setTokenizer设置提示Tokenizer缺省的为maTokenizer()以逗号分隔7,DatePicker,TimePickera,DatePicker1),设置初始显示日期init(intYear,intmonth,intday,newDatePicker.OnDateChangedListener(){ publicvoidonDateChanged(DatePickerview,intyear,intmonthOfYear,intd ayOfMonth){}})2),获取设置值getYeah()/getMonth()/getDayOfMonth()b,TimePicker1),设置setCurrentHour(IntegercurrentHour)/setCurrentMinuter(Integercurrent Hour)2,setIs24HourView(Boolean)设置是否为24小时制显示3,监听设置改变setOnTimeChangedListenerc,获取系统当期时间和日期Calendar.getInstance()返回CalendarCalendar.get(intfield)---field可以为Calendar.YEAR/Calendar.MONTH/Calendar.DAY_OF_MONTH/Calendar. HOUR_OF_DAY/Calendar.MINUTE8,ImageView/ImageButton主要方法setImageResource设置显示图片setAlpha设置Alphainvalidate强制更新setScaleType(ScaleTypest)设置图片显示方式,st是一枚举setAdjustViewBounds设置是否调整控件适应图片大小setBackgroundResource设置背景9,ImageSwitcher(显示一系列的图片,但当前只显示一张图片)显示数据setFactory(ViewSwitcher.ViewFactoryfactory)设置要显示的数据,ViewFactory接口须实现方法publicViewmakeView(){}负责提供当前显示的视图(ImageView),且View必须为新实例方法setImageResource设置当前显示的图片getCurrentView()返回当前显示的视图setInAnimation(Animationani)设置视图装载入时的动画效果,AnimationUtils.loadAnimation(Contextcontext,intid)获取动画效果android.R.anim.XXsetOutAnimation(Animationani)设置视图装载入时的动画效果10,Gallery(显示一系列的图片,提供拖动等特效)显示数据setAdapter(SpinnerAdapteradapter)设置数据适配器.数据适配器可以继承自BaseAdapter,该类publicViewgetView(intposition,ViewconvertView,ViewGroupparent)返回当前选择的视图(ImageView)选项选中监听setOnItemSelectedListener11,GridView(表格显示一系列图片)显示数据setAdapter(ListAdapteradapter)设置数据适配器.数据适配器可以继承自BaseAdapter,该类publicViewgetView(intposition,ViewconvertView,ViewGroupparent)返回当前选择的视图(ImageView)选项选中监听setOnItemSelectedListenergetSelectedView()返回当前选中的视图12,ScrollView13,ProgressBarsetIndeterminate设置进度条是否自动运转setProgressStyle设置显示风格.ProgressDialog.STYLE_HORIZONTAL/ProgressDialog.STYLE_SPINNE RsetProgress设置进度setMax设置最大值getProgress()获取当前进度14,SeekBar方法setMax设置最大值getProgress()获取当前值setProgress设置值setIndeterminate监听器setOnSeekBarChangeListener其下有三个方法publicvoidonProgressChanged(SeekBararg0,intarg1,booleanarg2)//数值变更,arg1新值,是否TouchpublicvoidonStartTrackingTouch(SeekBarseekBar)//开始拖动publicvoidonStopTrackingTouch(SeekBarseekBar)//结束拖动15,ListViewa,显示数据setAdapter(ListAdapteradapter)adapter可为newSimpleCursorAdapter/SimpleAdapter(Contextcontext,intlayout,Curs orc,String[]from,int[]to)layout用来显示数据的模板.显示一列可用yout.simple_list_item_1两列可用yout.simple_list_item_2多列则需要自己实现xml视图布局文件c数据(可用ArrayList构造数据)from':to用来显示对应列的空件idb,动态增删数据adapter.notifyDataSetChanged()d,设置背景色setBackGroudRource。
第2章 Android基础界面设计-控件

2021/10/19
第2章 Android基础界面设计
19
Button点击事件的处理方式
在XML文件中附加事件处理方法, 在Activity类实现这个事件处理方
即设置onClick属性:
法:
android:onClick="showToast"
public void showToast(View view) { String msg = "Hello Toast!"; Toast.makeText(this, msg, duration)
2021/10/19
ቤተ መጻሕፍቲ ባይዱ功能描述
输入类型设置 textPassword:输入文本框中的内容显示为"." phone:设置输入文本框中的内容只能是数字 设置允许输入哪些字符
设置编辑框内容为空时,显示的提示信息
控件中内容为空时显示的提示文本信息的颜色
设置控件的宽度为N个字符的宽度 监控软键盘的事件,如actionNext表示点击软键盘上的下一项会跳到 该组件 设置文本的最小行数
2021/10/19
功能描述
设置文本内容的位置,可以用"|"指定多个值 设置文本最大长度,超出此长度的文本不显示 设置文本的字符个数 设置文本的行数,超出此行数的文本不显示 设置文本的最大行数,超出此行数的文本不显示。 设置当文本超出TextView规定的范围的显示方式。 在文本的顶部显示图像 设置文本的行间距 设置文本样式,如:bold(粗体)、italic(斜体)、normal(正 常)
2021/10/19
第2章 Android基础界面设计
4
2.3 Android基本控件
https:///guide/topics/ui/look-and-feel/autosizing-textview https:///guide/topics/ui/controls/button
Android开发四大组件概述

Android开发四⼤组件概述这个⽂章主要是讲Android开发的四⼤组件,本⽂主要分为⼀、Activity具体解释⼆、Service具体解释三、Broadcast Receiver具体解释四、Content Provider具体解释外加⼀个重要组件 intent的具体解释。
(主要来⾃于⽹络)1、Activity⼀个Activity通常展现为⼀个可视化的⽤户界⾯。
⽐如,⼀个activity可能展现为⼀个⽤户能够选择的菜单项列表或者展现⼀些图⽚以及图⽚的标题。
⼀个消息服务应⽤程序可能包括⼀个显⽰联系⼈列表的activity,⼀个编写信息的activity,以及其他⼀些查看信息和改动应⽤程序设置的activity。
尽管这些activity⼀起⼯作,共同组成了⼀个应⽤程序,但每个activity都是相对独⽴的。
每个activity都是Activity(android.app.Activity)的⼦类。
⼀个应⽤程序可能仅仅包括⼀个activity,或者像上⾯提到的消息服务程序⼀样有多个activity。
⼀个应⽤程序包括⼏个activity以及各个activity完毕什么样的功能全然取决于应⽤程序以及它的设计。
通常每⼀个应⽤程序都包括⼀个在应⽤程序启动后第⼀个展现给⽤户的 activity。
在当前展现给⽤户的activity中启动⼀个新的activity,能够实现从⼀个activity转换到另外⼀个 activity。
每⼀个activity都会有⼀个⽤于绘制⽤户界⾯的窗体。
通常这样⼀个窗体会填充整个屏幕,当然这个窗体也能够⽐屏幕⼩并漂浮在其它窗体之上。
activity还能够使⽤⼀些额外的窗体,⽐如⼀个要求⽤户响应的弹出式对话框,或者是当⽤户在屏幕上选择⼀个条⽬后向⽤户展现⼀些重要信息的窗体。
展⽰activity窗体的可视化内容区域是⼀些具有层次关系(⾮常像数据结构中的树)的视图,⽽视图则是由类View的⼦类表⽰的。
重学android小专栏 文章

重学android小专栏文章重学Android小专栏一、引言近年来,移动应用开发领域发展迅猛,而Android作为最流行的移动操作系统之一,需求量也正逐渐增长。
然而,由于技术的迭代更新以及开发者的日常工作,我们常常需要回顾和重学Android开发的基础知识。
本篇小专栏将带您重新学习Android开发的重要知识点,帮助您在日常开发中更加得心应手。
二、Android基础知识回顾1. Android系统架构Android系统采用了分层架构,包括Linux内核层、系统库层、应用程序框架层和应用程序层。
我们需要了解每个层级的功能和作用,以便更好地理解Android应用的开发过程。
2. Android应用开发环境搭建在开始Android应用开发之前,我们需要搭建好开发环境。
这包括安装JDK、Android Studio以及配置虚拟设备等步骤。
只有正确配置好开发环境,我们才能顺利进行Android应用的开发工作。
3. Android应用的组成和生命周期Android应用由多个组件组成,包括活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver)和内容提供器(Content Provider)。
了解每个组件的特点和生命周期,有助于我们编写出高质量的Android应用程序。
4. Android用户界面设计Android提供了丰富的用户界面组件,如按钮、文本框、列表等。
我们需要熟悉这些组件的用法,以及如何使用布局来构建复杂的用户界面。
良好的用户界面设计能增加用户体验,提高应用的质量。
5. Android数据存储在Android应用中,我们常常需要对数据进行存储和管理。
Android提供了多种数据存储方式,包括SQLite数据库、SharedPreferences和文件存储等。
了解每种存储方式的特点和用法,有助于我们选择适合的存储方式。
三、总结和展望通过本篇小专栏的学习,我们回顾了Android开发的基础知识,包括系统架构、开发环境搭建、应用组成和生命周期、用户界面设计以及数据存储等内容。
Android Studio项目开发教程 第3章 常用UI组件

如果设置,则指定TextView具有一个电话号码的输入法。可能的值是“true”或“false”。
要显示的文字。
目前在所有大写的文本。可能的值是“true”或“false”。
文本颜色。可以是一个颜色值,在形式"#rgb", "#argb", "#rrggbb", 和 "#aarrggbb".
} });
3.1常用控件
3.1.2 按钮类组件
2、在MainActivity 类中实现OnClickListener接口,重写该接口中的onClick方法,多个控件对应同一个监听事件, 在回调方法中用case语句进行分别处理。该方法适用于Button较多的时候。
@Overridepublic class MainActivity extends AppCompatActivity implement View.OnClickListener{
方式描述center在视图中心显示图片并且丌缩放图片centercrop按比例缩放图片使得图片长宽的大亍等亍视图的相应维度centerinside按比例缩放图片使得图片长宽的小亍等亍视图的相应维度fitcenter按比例缩放图片到视图的最小边居中显示fitend按比例缩放图片到视图的最小边显示在视图的下部分位置fitstart把图片按比例扩大缩小到视图的最小边显示在视图的上部分位置fitxy把图片丌按比例缩放到视图的大小显示matrix用矩阵来绘制312按钮类组件3
3.1常用控件
描述
这是唯一地标识控件的ID。 如果设置,指定该TextView中有一个文本输入法会自动利用什么类型的用户。 • 不要自动大写任何东西 - 0 • 大写每句的第一个字 - 1 • 大写每个单词的第一个字母 - 2 • 大写每一个字符 - 3 使光标可见(默认值)或不可见。默认为false。 如果设置为true,指定TextView的一个输入法。 字体系列(由字符串命名)的文本。 指定如何排列由视图的x和/或y轴的文本时,该文本比视图小。 提示文本显示文本为空。 数据的类型被放置在一个文本字段。手机,日期,时间,号码,密码等。 使得TextView至多到像素高。
android学习笔记

第三章基本控件1、基本控件2、组件的添加到布局中有两种方式:在代码中编写、在布局文件中布局。
3、Button 相应点击事件在代码里注册View.OnClickListener监听器XML设置android:onClick第四章使用容器1、常用的布局:LearLayout\RelativeLayout\TableLayout\FrameLayout\ScrollView LinearLayout中的所有部件都必须指定android:layout_width和android:layout_height特性,值可以是实际像素,可以是"wrap_content"(即包含内容),"fill_parent"(即填充父元素)。
第五章使用选择部件1、Android 的适配器负责为选择部件提供数据源,也负责将单独的数据元素转换为显示在选择部件中的特定视图2、ArrayAdapter接受3个参数要使用的上下文(通常就是当前的activity的实例)要使用的视图的资源ID要实际显示的选项数组或列表3、ListView调用setAdapter()以提供数据和子视图。
通过添加一个侦听器,以便在选项变化时作出反应。
setOnItemSelectedListener()、setOnItemClickListener()你想自定义布局,只要将ListView标识为@android:id/listlistview只能响应单击列表选项的操作。
多选必须设置setchoicemode();4、GridView可以为我们提供一个可供选择的二维选项网格。
5、AutoCompleteTextView看成是EditText和Spinner的组合。
AutoCompleteTextView是EditText的子类。
Android:completeThreshold:表示在触发列表筛选功能之前,用户必须输入的最少字符数目AutoCompleteTextView不支持选择侦听器,我们可以注册一个TextWatcher,从而在文本变化时,也可以收到通知。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Android开发日志—常用控件篇(容器控件)android简介:Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。
尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。
Android操作系统最初由Andy Rubin开发,主要支持手机。
Android的系统架构和其操作系统一样,采用了分层的架构。
Android结构从架构图看,Android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层。
开发人员也可以完全访问核心应用程序所使用的API框架。
该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性)。
同样,该应用程序重用机制也使用户可以方便的替换程序组件。
隐藏在每个应用后面的是一系列的服务和系统, 其中包括;丰富而又可扩展的视图(Views),可以用来构建应用程序,它包括列表(Lists),网格(Grids),文本框(Text boxes),按钮(Buttons),甚至可嵌入的web浏览器。
内容提供器(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据资源管理器(Resource Manager)提供非代码资源的访问,如本地字符串,图形,和布局文件(Layout files )。
通知管理器(Notification Manager) 使得应用程序可以在状态栏中显示自定义的提示信息。
活动管理器( Activity Manager) 用来管理应用程序生命周期并提供常用的导航回退功能。
Android开发四大组件分别是:活动(Activity):用于表现功能。
服务(Service):后台运行服务,不提供界面呈现。
广播接收器(BroadcastReceiver):用于接收广播。
内容提供商(Content Provider):支持在多个应用中存储和读取数据,相当于数据库。
活动(当前界面视图):Android 中,Activity是所有程序的根本,所有程序的流程都运行在Activity 之中,Activity可以算是开发者遇到的最频繁,也是Android 当中最基本的模块之一。
在Android的程序当中,Activity 一般代表手机屏幕的一屏。
如果把手机比作一个浏览器,那么Activity就相当于一个网页。
在Activity 当中可以添加一些Button、Check box 等控件。
可以看到Activity 概念和网页的概念相当类似。
一般一个Android 应用是由多个Activity 组成的。
这多个Activity 之间可以进行相互跳转,例如,按下一个Button按钮后,可能会跳转到其他的Activity。
和网页跳转稍微有些不一样的是,Activity 之间的跳转有可能返回值,例如,从Activity A 跳转到Activity B,那么当Activity B 运行结束的时候,有可能会给Activity A 一个返回值。
这样做在很多时候是相当方便的。
当打开一个新的屏幕时,之前一个屏幕会被置为暂停状态,并且压入历史堆栈中。
用户可以通过回退操作返回到以前打开过的屏幕。
可以选择性的移除一些没有必要保留的屏幕,因为Android会把每个应用的开始到当前的每个屏幕保存在堆栈中。
服务:Service 是android 系统中的一种组件,它跟Activity 的级别差不多,但是他不能自己运行,只能后台运行,并且可以和其他组件进行交互。
Service 是没有界面的长生命周期的代码。
Service是一种程序,它可以运行很长时间,但是它却没有用户界面。
这么说有点枯燥,来看个例子。
打开一个音乐播放器的程序,这个时候若想上网了,那么,打开 Android 浏览器,这个时候虽然已经进入了浏览器这个程序,但是,歌曲播放并没有停止,而是在后台继续一首接着一首的播放。
其实这个播放就是由播放音乐的Service进行控制。
当然这个播放音乐的Service也可以停止,例如,当播放列表里边的歌曲都结束,或者用户按下了停止音乐播放的快捷键等。
Service 可以在和多场合的应用中使用,比如播放多媒体的时候用户启动了其他Activity 这个时候程序要在后台继续播放,比如检测SD 卡上文件的变化,再或者在后台记录地理信息位置的改变等等,总之服务嘛,总是藏在后头的。
开启Service有两种方式:(1) Context.startService():Service会经历onCreate ->onStart(如果Service还没有运行,则android先调用onCreate()然后调用onStart();如果Service已经运行,则只调用onStart(),所以一个Service的onStart 方法可能会重复调用多次);StopService的时候直接onDestroy,如果是调用者自己直接退出而没有调用StopService的话,Service会一直在后台运行。
该Service的调用者再启动起来后可以通过stopService关闭Service。
注意,多次调用Context.startservice()不会嵌套(即使会有相应的onStart()方法被调用),所以无论同一个服务被启动了多少次,一旦调用Context.stopService()或者StopSelf(),他都会被停止。
补充说明:传递给StartService(0的 Intent对象会传递给onStart()方法。
调用顺序为:onCreate -->onStart(可多次调用) -->onDestroy。
(2) Context.bindService():Service会经历onCreate() -->onBind(),onBind将返回给客户端一个IBind接口实例,IBind允许客户端回调服务的方法,比如得到Service运行的状态或其他操作。
这个时候把调用者(Context,例如Activity)会和Service绑定在一起,Context退出了,Srevice就会调用onUnbind -->onDestroyed相应退出,所谓绑定在一起就共存亡了。
广播接收器:在Android 中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制。
而BroadcastReceiver 是对发送出来的Broadcast进行过滤接受并响应的一类组件。
可以使用BroadcastReceiver 来让应用对一个外部的事件做出响应。
这是非常有意思的,例如,当电话呼入这个外部事件到来的时候,可以利用BroadcastReceiver 进行处理。
例如,当下载一个程序成功完成的时候,仍然可以利用BroadcastReceiver 进行处理。
BroadcastReceiver不能生成UI,也就是说对于用户来说不是透明的,用户是看不到的。
BroadcastReceiver通过NotificationManager 来通知用户这些事情发生了。
BroadcastReceiver 既可以在AndroidManifest.xml 中注册,也可以在运行时的代码中使用Context.registerReceiver()进行注册。
只要是注册了,当事件来临的时候,即使程序没有启动,系统也在需要的时候启动程序。
各种应用还可以通过使用Context.sendBroadcast ()将它们自己的Intent Broadcasts广播给其他应用程序。
数据共享:Content Provider 是Android提供的第三方应用数据的访问方案。
在Android中,对数据的保护是很严密的,除了放在SD卡中的数据,一个应用所持有的数据库、文件等内容,都是不允许其他直接访问的。
Andorid当然不会真的把每个应用都做成一座孤岛,它为所有应用都准备了一扇窗,这就是Content Provider。
应用想对外提供的数据,可以通过派生Content Provider 类,封装成一枚Content Provider,每个Content Provider都用一个uri作为独立的标识,形如:content://com.xxxxx。
所有东西看着像REST的样子,但实际上,它比REST 更为灵活。
和REST类似,uri也可以有两种类型,一种是带id的,另一种是列表的,但实现者不需要按照这个模式来做,给id的uri也可以返回列表类型的数据,只要调用者明白,就无妨,不用苛求所谓的REST。
以上数据源自于百度百科android容器控件:Android是由界面布局和底层代码实现,界面布局分为容器控件和独立控件。
容器控件:LinearLayout(线性布局)常用属性:orientation布局排列方式:属性:horizontal,vertical.gravity 子元素对齐方式,常用属性:centerlayout_gravity 组件与父容器对齐方式weight 权重divider 分割线RelativeLayout(相对布局)常用属性:第一类:属性值为true或falseandroid:layout_centerHrizontal 水平居中android:layout_centerVertical 垂直居中android:layout_centerInparent 相对于父元素完全居中android:layout_alignParentBottom贴紧父元素的下边缘android:layout_alignParentLeft贴紧父元素的左边缘android:layout_alignParentRight 贴紧父元素的右边缘android:layout_alignParentTop 贴紧父元素的上边缘android:layout_alignWithParentIfMissing如果对应的兄弟元素找不到的话就以父元素做参照物第二类:属性值必须为id的引用名“@id/id-name”android:layout_below 在某元素的下方android:layout_above 在某元素的的上方android:layout_toLeftOf 在某元素的左边android:layout_toRightOf 在某元素的右边android:layout_alignTop 元素的上边缘和某元素的的上边缘对齐android:layout_alignLeft 本元素的左边缘和某元素的的左边缘对齐android:layout_alignBottom 本元素的下边缘和某元素的的下边缘对齐android:layout_alignRight 本元素的右边缘和某元素的的右边缘对齐第三类:属性值为具体的像素值,如30dip,40pxandroid:layout_marginBottom 离某元素底边缘的距离android:layout_marginLeft 离某元素左边缘的距离android:layout_marginRight 离某元素右边缘的距离android:layout_marginTop 离某元素上边数据来源:/notenlife/article/details/7256363TableLayout(表格布局)android:collapseColumns:将TableLayout里面指定的列隐藏,若有多列需要隐藏,请用逗号将需要隐藏的列序号隔开。