UI

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())

注意:得先创建工厂然后才能添加图片;


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值