1.Android 用户接口UI
1)容器View(ViewGroup)
Adpter Layout
Common Layout
2)非容器View(InputControls......)
2.Adnroid 数据存储DS
外置存储(外置sdcard存储)
内置存执(内置sdcard存储)
①直接IO
②SharedPreferences
③SQLite
3.Android 线程应用TR
安卓线程基础
安卓线程同步
安卓消息模型
安卓异步任务
安卓线程池
案例。。。。。。
4.Android 核心组件CC
ContentProvider
Service
BroadCastReceiver
Activity
二:View对象:
1.UI介绍:
1.Android中的UI:呈现给用户的内容;实现与用户的交互;
1>何为UI:一组用户接口;User Inteface
2>UI的职责:
①呈现数据(业务数据)
②实现与用户的交互
3>安卓中的UI的实现?
①呈现数据的View(TextView,Button....)
②用于呈现View(例如Activity....);
2.容器View:
(继承ViewGroup)用于布局View嵌套的结构越复杂,解析效率越低;
Common Layout:一般容器;
(1)常用的Common Layout:
1.RelativeLayout:相对布局
①是ViewGroup的子类ViewGroup又继承了View(视图);
②RelativeLayout:应用场合:采用相对比布局的方式对UI中的View进行布局,一般需要对ViewGroup中的元素进行精确定位时,可以
考虑使用相对布局;(有一个元素,其他元素相对该元素布局)默认在左上角;
要对屏幕中的View元素位置进行更好的适配也建议使用相对布局;
③常用属性:alignParentRight toEndOf toStartOf centerInParent centerHorizontal centerVertical below above
toLeftOf toRightOf
2.LinearLayout:
①是ViewGroup的子类,一个挨着一个,依次排列;垂直布局可以水平居中,水平布局可以垂直居中;
②应用场合:对容器中的元素采用线性方式布局;垂直线性和水平线性两种方式;
③常用属性:权重weight权重,能不用则不用,效率低 orientation
layout_gravity说明对于线性布局而言,假如布局方式是水平方式,此属性只有垂直居中;假如布局方式是垂直方式,此属性只有水平居中;
<View />
3.FrameLayout:①帧布局:ViewGroup View
②按照一定的层次结构对元素进行布局;最开始放在最底层,最后的放在最上层;默认在左上角;例如图片浏览器(一张一张浏览)
③FrameLayout的应用: android:scaleType="fitXY"拉伸图片
4.GridLayout:网格布局:①Android中的ViewGroup;View不太好用;!!!版本要求14以上;灵活性比相对布局要差些
is-a:继承而言;计算器案例;
has-a:在类里面有个其他类型的属性;
②Android4.0以后推出的一个网格布局对象,它以网格的形式布局页面中的各个元素;
③ column:第几列,从0开始计算。。。。
android:layout_height="wrap_content"
android:columnCount="5"//几列
android:rowCount="4"//几行
<Button
android:layout_rowSpan="2"
android:layout_width="wrap_content"
android:layout_gravity="fill_vertical"
android:text="="
/>
5. AbsoluteLayout:绝对布局 左上角坐标为:(0,0)开始;需要设置:layout_x, layout_y属性;
(2)学习方式:
1)what:他是什么
2)when:应用场合
3)why:为什么使用
4)how:如何使用
(2).优化:
1)会用
2)如何更好的使用(效率,可维护性。。。。)
window->perspective->openPerspective->Hierarchy View打开项目层次结构视图;根据此可以进行优化;
①优化层次结构:(优化继承体系)层次越浅,效率越高;
<merge></merge>合并相同元素布局;比如:上下两级布局相同,可以考虑合并布局;
②优化对象个数:View对象个数越少效率越高;底层是根据绘制算法绘制出来的;
③提高可维护性,对象的可重用性;(借助include标签)
在布局中引入另一个布局,可以使用include标签实现;在另一个布局中可以用<merge></merge>
④优化对象的加载时机;(何时加载)(延迟加载)不需要的时候不加载,需要的时候加载;
<ViewStub
id:"@+id/vsId"
layout:"@layout/progressbar_"
inflate:@+id/pbarId
centerHorizonal="true"
width="wrap_content"
>
ProsessBar.xml进度条;
vStub.inflate();加载布局文件;vStub中使用的layout
类加载:加载类到代码区;Static在类加载的时候加载且执行一次,因为类只加载一次;
Adapter Layout:适配容器;
为什么要对Common Layout优化:
①调高运行效率
②提高开发效率
③提高可维护性
(3).Common Layout扩展:
为什么要对Common Layout扩展:
①新的需求出现,无法满足现实需要;
②新技术的出现;
扩展的方式:
一般添加一个类继承原有类;并在此基础上添加方法或重写方法来实现新的业务需求;
1.ScrollView 滚动视图
①继承自FramLayout 垂直滚动:
里面不允许直接放TextView等,可以放布局里面放TextView...
②HorizontalScrollView 水平滚动;
Scrollbars=none;设置没有滚动条;
2.TextSwitcher(文本切换器):
继承了FramLayout;所以会在里面的内容上层覆盖下层内容;
//设置工厂:
textSwitcher.setFactory(this);当前类要实现ViewFactory接口;
//设置View动画;
textSwitcher.setInAnimation(参数);//进入时动画;
textSwitcher.setOutAnimation(参数);//出去时动画;
参数:AnimationUtils.loadAnimation(this,android.R,anim.fade_in/out);
//设置当前View内容;
textSwitcher.setText(String.ValueOf(count++));
当前类实现ViewFactory接口重写该方法:
makeView();//创建view对象;
3.ImagerSwitcher(图片切换器):
本质上是一个FramLayout,具有FramLayout的性能,放置的图片重叠在一起,
控制图片的显示与隐藏!
应用场合及实现步骤:
主要用于实现图片的切换显示。
实现步骤:
①构建或者获得ImageSwitcher对象
②设置View工厂(setFactory()方法)
③设置动画Animation()
④显示图片(setImageResource())
注意:得先创建工厂然后才能添加图片;