本文共 5218 字,大约阅读时间需要 17 分钟。
View布局
简单来说,窗口就是由一系列的视图按照一定的布局组织起来的。
实际上,每一个视图都是一个控件,这些控件可以将自己的UI绘制在窗口的绘图表面上,同时还可以与用户进行交互,即获得用户的键盘或者触摸屏输入。第一个材料是画布,第二个材料是用户输入。有画布才能绘制UI,而有用户输入才能与用户进行交互。
一个PhoneWindow对象,一个DecorView(视图容器)对象,以及一个ViewRoot对象来描述的。
TextView:
java.lang.Object ↳ android.view.View ↳ android.widget.TextView
TextView的常用属性有以下一些:
setText(); //设置文本内容,同xml中的android:text
setTextSize(); //设置文本字体大小,同xml中的android:textSize
setTextColor(); //设置文本颜色,同xml中的android:textColor
setBackgroundColor(); //设置背景颜色,同xml中的android:background
此外,还可以在xml中设置一些TextView的属性,如下:
android:autoLink //设置是否显示为可点击的链接。可选值(none/web/email/phone/map/all)************************************
a. web 网站形式,如:www.baidu.com b. phone 电话形式 如:13480714652 c. emali 邮箱形式 如: sandy.huang.android@gmail.com d. map 地图形式,如:1912 Avenue K Plano,Texas 75074
android:drawableBottom //在text的下方输出一个drawable(图片)
android:drawableLeft //在text的左边输出一个drawable(图片),左边显示一张图片<登陆>
android:drawableRight //在text的右边输出一个drawable(图片)
android:drawableTop //在text的正上方输出一个drawable(图片)
android:drawablePadding //设置text与drawable(图片)的间隔,与drawableLeft、drawableRight、drawableTop、drawableBottom一起使用,可设置为负数,单独使用没有效果
android:ellipsize //设置当文字过长时,该控件该如何显示。可设置如下属性值:"start"省略号显示在开头;"end”省略号显示在结尾;"middle"省略号显示在中间; "marquee" 以跑马灯的方式显示(动画横向移动)
android:gravity //设置文本位置,设置成"center",文本将居中显示
android:linksClickable //设置点击时是否链接,即使设置了autoLink
android:marqueeRepeatLimit //在ellipsize设定为marquee时,设置重复滚动的次数,设置为marquee_forever时表示无限次。
android:lines //设置文本的行数,设置两行就显示两行,即使第二行没有数据
android:shadowRadius //设置阴影的半径。设置为0.1就变成字体的颜色了,一般设置为3.0的效果比较好
android:shadowColor //指定文本阴影的颜色,需要与shadowRadius一起使用
android:singleLine //设置单行显示
android:textColorLink //设置文字链接的颜色
android:textScaleX //设置文字之间间隔,默认为1.0f
android:textStyle //设置字形 bold(粗体) 0, italic(斜体) 1, bolditalic(又粗又斜) 2, 可以设置一个或多个,用“|”隔开
android:typeface //设置文本字体,必须是以下常量值之一:normal 0, sans 1, serif 2, monospace(等宽字体) 3
webview:
java.lang.Object的 ↳ android.view.View ↳ android.view.ViewGroup ↳ android.widget.AbsoluteLayout ↳ android.webkit.WebView
网络内容(可以做浏览器) 1、LoadUrl直接显示网页内容(单独显示网络图片) 2、LoadData显示中文网页内容(含空格的处理) APK包内文件 1、LoadUrl显示APK中Html和图片文件 2、LoadData(loadDataWithBaseURL)显示APK中图片和文字混合的Html内容 res/layout/main.xml
WebView.getSettings来得到这个设置
WebSettings常用方法: setAllowFileAccess 启用或禁止WebView访问文件数据 setBlockNetworkImage 是否显示网络图像 setBuiltInZoomControls 设置是否支持缩放 setCacheMode 设置缓冲的模式 setDefaultFontSize 设置默认的字体大小
setDefaultTextEncodingName 设置在解码时使用的默认编码 setFixedFontFamily 设置固定使用的字体 setJavaSciptEnabled 设置是否支持Javascript setLayoutAlgorithm 设置布局方式 setLightTouchEnabled 设置用鼠标激活被选项 setSupportZoom 设置是否支持变焦 WebViewClient常用方法: doUpdate VisitedHistory 更新历史记录 onFormResubmission 应用程序重新请求网页数据 onLoadResource 加载指定地址提供的资源 onPageFinished 网页加载完毕 onPageStarted 网页开始加载 onReceivedError 报告错误信息 onScaleChanged WebView发生改变 shouldOverrideUrlLoading 控制新的连接在当前WebView中打开 WebChromeClient常用方法: onCloseWindow 关闭WebView onCreateWindow 创建WebView onJsAlert 处理Javascript中的Alert对话框 onJsConfirm处理Javascript中的Confirm对话框 onJsPrompt处理Javascript中的Prompt对话框 onProgressChanged 加载进度条改变 onReceivedlcon 网页图标更改 onReceivedTitle 网页Title更改 onRequestFocus WebView显示焦点
GridView:
宫格显示
tablelayout是表格布局,表是一行行的,在tablerow里边写多少东西,这一行就有多少东西,但是每行不一定非要相同;但是gridview是网格,每行有几个是自己定义了,一旦定义好了以后,每行的内容及数量一定相等;而且gridview可以看到线条,但是tablelayout不会,没有线条。
DecorView:
SurfaceView:
SurfaceView是View类的子类,可以直接从内存或者DMA等硬件接口取得图像数据,是个非常重要的绘图视图。它的特性是:可以在主线程之外的线程中向屏幕绘图上。这样可以避免画图任务繁重的时候造成主线程阻塞,从而提高了程序的反应速度。在游戏开发中多用到SurfaceView,游戏中的背景、人物、动画等等尽量在画布canvas中画出。
surface是纵深排序(Z-ordered)的,这表明它总在自己所在窗口的后面。surfaceview提供了一个可见区域,只有在这个可见区域内 的surface部分内容才可见,可见区域外的部分不可见。surface的排版显示受到视图层级关系的影响,它的兄弟视图结点会在顶端显示。这意味者 surface的内容会被它的兄弟视图遮挡,这一特性可以用来放置遮盖物(overlays)(例如,文本和按钮等控件)。注意,如果surface上面 有透明控件,那么它的每次变化都会引起框架重新计算它和顶层控件的透明效果,这会影响性能。
你可以通过SurfaceHolder接口访问这个surface,getHolder()方法可以得到这个接口。
SurfaceView是View类的子类,可以直接从内存或者DMA等硬件接口取得图像数据,是个非常重要的绘图视图。 它的特性是:可以在主线程之外的线程中向屏幕绘图上。这样可以避免画图任务繁重的时候造成主线程阻塞, 从而提高了程序的反应速度。在游戏开发中多用到SurfaceView,游戏中的背景、人物、动画等等尽量在画 布canvas中画出。
TextureView:(Android4.0)
TextureView可以用来显示内容流。这样一个内容流例如可以视频或者OpenGL的场景。内容流可以来自本应用程序以及其他进程。
Textureview必须在硬件加速开启的窗口中。
与SurfaceView相比,TextureView不会创建一个单独的窗口,这使得它可以像一般的View一样执行一些变换操作,比如移动、动画等等,例如,你可以通过调用myView.setAlpha(0.5f)将TextureView设置成半透明。
使用TextureView很简单:你需要使用的就是SurfaceTexture,SurfaceTexture可以用于呈现内容。
CalendarView:
VideoView:
自带了一个VideoView,用来播放视频和网络视频,它是继承SurfaceView使用MediaPlayer来做播放的类。
Android框架提供了VideoView类来封装MediaPalyer,这个VideoView类非常好用。Android自带的程序Gallery也是用VideoView实现的。
ImageView:
ImageView.ScaleType / android:scaleType 值的意义区别:
CENTER /center 按图片的原来size居中显示,当图片长/宽超过View的长/宽,则截取图片的居中部分显示
CENTER_CROP / centerCrop 按比例扩大图片的size居中显示,使得图片长 (宽)等于或大于View的长(宽)
CENTER_INSIDE / centerInside 将图片的内容完整居中显示,通过按比例缩小或原来的size使得图片长/宽等于或小于View的长/宽
FIT_CENTER / fitCenter 把图片按比例扩大/缩小到View的宽度,居中显示
FIT_END / fitEnd 把图片按比例扩大/缩小到View的宽度,显示在View的下部分位置
FIT_START / fitStart 把图片按比例扩大/缩小到View的宽度,显示在View的上部分位置
FIT_XY / fitXY 把图片 不按比例 扩大/缩小到View的大小显示
MATRIX / matrix 用矩阵来绘制
*ListView*:最重要和最常用的View控件
之后再聊
ScrollView:
SearchView:
mSearchView = (SearchView) findViewById(R.id.search); mSearchView.setIconifiedByDefault(true); mSearchView.onActionViewExpanded(); mSearchView.setFocusable(false); mSearchView.clearFocus();
事件处理:mSearchView.setOnQueryTextListener(new OnQueryTextListener(){});
转载地址:http://rkegi.baihongyu.com/