Android开发自学笔记(Android Studio)—4.3ImageView及其子类
一、引言
ImageView继承自View组件,主要功能用来显示图片,实际上他能显示的不仅是图片,Drawable对象都可以用ImageView来显示。
ImageView派生了ImageButton、ZoomButton等组件,具体的派生和继承关系可以查看API文档,我这边打开实在慢,就不再截图了。
本地API打开太慢了,本想放弃截图,不过在网上看到android api中文网站,打开速度不错,所以继承关系如下图:
在这里我们可以看到,ImageView继承自View,直接子类是ImageButton和QuickContactBadge,间接子类是ZoomButton。
这里我也发一下这个API在线网址,打开慢的可以试一下这个:
二、ImageView支持的XML属性和方法
XML属性 |
相关方法 |
说明 |
android:adjustViewBounds | setAdjustViewBounds(boolean) | 设置ImageView是否调整自己的边界来保持所显示图片的长宽比 |
android:cropToPadding | setCropToPadding(boolean) | 如果将该属性设置为true,该组件将会被截取到保留该ImageView的padding |
android:maxHeight | setMaxHeight(int) | 设置ImageView的最大高度 |
android:maxWidth | setMaxWidth(int) | 设置ImageView的最大宽度 |
android:scaleType | setScaleType(ImageView.ScaleType) | 设置所显示的图片如何缩放或移动以适应ImageView的大小 |
android:src | setImageResource(int) | 设置ImageView所显示的Drawable对象的ID |
scaleType是一个重要的属性,它可设置的值如下:
值 |
说明 |
ImageView.Scale.MATRIX | 使用Matrix方式进行缩放 |
ImageView.Scale.FIT_XY | 对图片横向、纵向独立缩放,使得该图完全适应于ImageView,图片的纵横比可能会改变 |
ImageView.Scale.FIT_START | 保持纵横比缩放图片,直到该图能完全显示到ImageView,从ImageView的左上角开始显示 |
ImageView.Scale.FIT_CENTER | 保持纵横比缩放图片,直到该图能完全显示到ImageView,从ImageView的中间显示 |
ImageView.Scale.FIT_END | 保持纵横比缩放图片,直到该图能完全显示到ImageView,从ImageView的右下角显示 |
ImageView.Scale.CENTER | 把图片放到ImageView中间,不进行任何缩放 |
ImageView.Scale.CENTER_CROP | 保持纵横比缩放图片使得图片能完全覆盖ImageView,最要图片最短边能显示即可。 |
ImageView.Scale.CENTER_INSIDE | 保持纵横比缩放图片,以使得ImageView能完全显示该图片 |
为了能控制ImageView,API提供了如下操作方法:
方法名称 |
说明 |
setImageBitmap(Bitmap bm) | 使用Bitmap对象设置ImageView显示的图片 |
setImageDrawable(Drawable drawable) | 使用Drawable对象设置ImageView显示的图片 |
setImageResource(int resId) | 使用资源ID设置ImageView显示的图片 |
setImageURI(Uri uri) | 使用图片的URI地址设置ImageView显示的图片 |
三、ImageView简单使用方法
ImageView的功能比较简单,这里借用疯三的实例做一个简单的图片浏览器示范ImageView的使用方法。
示例代码如下:
页面布局主要采用线性布局,上方嵌套了一个线性布局,用于居中放了三个按钮,主要实现切换图片和增减透明度的功能。
后台代码如下图:
代码比较简单,圈中的1部分主要完成按钮1即是“下一张”的功能。圈中的2部分完成透明度的增减,屏幕显示问题透明度的减少部分代码截图不全,不过大家可以自行补全,私下测试一下ImageView更多的功能。
四、ImageView的其他网上学习示例
在书本中我们能学到的都是基本的使用方法,而对于更多的扩展使用方法广大万能的万能的网友也都分享了很多,这里不再做COPY和粘贴,我直接给出来网址,大家自行参考一下。
1.图解说明android 中ImageView的scaletype属性
2.Android ApiDemos 系列解析【View-ImageView/ImageButton】
4.Android学习开发之路4——图片显示imageVIew
五、ImageButton和ZoomButton
Button与ImageButton的区别在于,Button按钮上显示的是文字,而ImageButton上显示的图片。需要注意的一点就是为ImageButton设置Text属性没有作用,因为本质上ImageButton是ImageView,即使指定了Text属性,也不会显示任何文字。如果使用ImageButton的话,图片按钮可以指定src属性,该属性可以 设置静态的图片,也可以设置自定义的Drawable对象,实现出用户自定义的图片按钮。
而ZoomButton从字面就可以看出来他是个放大/缩小功能的按钮,它继承自ImageButton,使用方法也基本类似于ImageButton,android默认提供了btn_minus、btn_plus两个Drawable资源,只要给src属性赋这两个资源值,即可实现对应的按钮样式。
Android还提供一个ZoomControls组件,该组件相当于组合了“放大”,“缩小”两个按钮,并允许分别为他们绑定不同的监听器。(ZoomButton是单个按钮,ZoomControls是组合了两个按钮)。
下面的示例代码同时演示了这几个组件。
说明如下:
1.第一个按钮的src是btn_ok是蓝色的按钮图标,我自己从网上下载的按钮,这是个固定不变的按钮图标。
2.第二个按钮是可变的按钮,按钮默认显示是绿色,按下之后变成红色,松开后变成绿色,使用了selector资源文件定义,下面会贴出代码。
3.使用LinearLayout线性布局,内容添加了连个ZoomButton,使用系统自带的放大缩小的图标显示,Linearlayout的布局设置为水平居中。
4.定义了一个ZoomControls组件,我们可以看到他自身就带了两个按钮。
其中给出btn_Selector的代码如下:
主要设置了按钮获得焦点时显示的图片和按下后显示的图片,最后一行设置默认显示的图片。
六、QuickContactBadge
QuickContactBadge继承了ImageView,它的本质也是图片,也可以通过android:src属性指定它显示的图片。QuickContackBadge额外功能是:该图片可以关联到手机中指定联系人,当用户单击该图片时,系统将打开相应的联系人的联系方式界面。
因为我这边虚拟机添加不上联系人,所以这里也不再单独做代码演示,给出几个学习地址,参考学习一下。
1.Android2.2 API 中文文档系列(8) —— QuickContactBadge
七、后记
因为工作的原因,学习也是断断续续,但是我想我也会鼓励自己慢慢学下去,分享学习心得的同时也可以加深记忆。希望看完文章觉得对自己有用的朋友点个推荐给我一点鼓励,谢谢大家。
Android开发自学笔记(Android Studio)—4.3ImageView及其子类的更多相关文章
- Android开发自学笔记(Android Studio)—4.1布局组件
一.引言 Android的界面是有布局和组件协同完成的,布局好比是建筑里的框架,而组件则相当于建筑里的砖瓦.组件按照布局的要求依次排列,就组成了用户所看见的界面.在Android4.0之前,我们通常说 ...
- Android开发自学笔记(Android Studio)—4.5 ProgressBar及其子类
一.前言 ProgressBar本身代表了进度条组件,它还派生出了两个常用的组件:SeekBar和RatingBar,他们的使用方法类似,只是显示界面有一定的区别.我们看一下API文档中的说明: 从图 ...
- Android开发自学笔记(Android Studio)—4.4 AdapterView及其子类
一.引言 AdapterView本身是一个抽象类,而它派生的子类在用法上也基本相似,只是在显示上有一定区别,因此把他们也归为一类. AdapterView具有如下特征: Ada ...
- Android开发自学笔记(Android Studio1.3.1)—3.Android应用结构解析
一.R文件是什么? 如上图所示,我们可以通过findViewById方法通过传入R.id.show找到我们的TextView元素,findViewById方法也很好理解,从View中通过Id ...
- Android开发自学笔记(Android Studio1.3.1)—1.环境搭建
一.引言 .Google推出的 毫无疑问,这个是它的最大优势,Android Stuido是Google推出,专门为Android"量身订做"的,是Google大力支持的一款基于I ...
- Android开发自学笔记(Android Studio1.3.1)—2.开始第一个Android应用
一.前言 使用Android Studio开发Android应用是一件非常简单的事情,因为它会帮你自动完成很多工作.本篇我们主要完成一个单击按钮在文本框显示当前时间的简单应用,借此来演示一下 ...
- Android开发自学笔记(Android Studio) 目录
开发环境如下: 操作系统:Windows 10 Pro IDE:Android Studio 1.3.X 或更高版本 其它请参见文章说明. 1. 环境搭建 1.1 (番外)AndroidStudio常 ...
- Android开发自学笔记(Android Studio)—4.界面编程与View组件简单介绍
一.引言 Android应用开发最重要的一份内容就是界面的开发,无论你程序包含的内容多么优秀,如若没有一个良好的用户交互界面,最终也只是会被用户所遗弃.Android SDK提供了大量功能丰富的UI组 ...
- Android开发自学笔记(Android Studio)—4.2TextView及其子类
一.引言 TextView是我们最常用的一个控件了,它类似于C# Winform程序中的Lable,Java Swing编程中的JLable,不过相对功能更强大些,但从功能上看,它其实就是个文字编辑器 ...
随机推荐
- Android-socket服务端断重启后,android客户端自动重连
今天研究这个问题搞了整整一天啊!终于出来了,不过我没有多大的成就感,为什么呢?因为这不是我的劳动成果.同样的问题,我却没想出来!心塞的很啊…… 不过还是要给大家分享一下,希望给大家带来帮助! 先声明一 ...
- iOS Class 使用NSProxy和NSObject设计代理类的差异
经常发现在一些需要使用消息转发而创建代理类时, 不同的程序员都有着不同的使用方法, 有些采用继承于NSObject, 而有一些采用继承自NSProxy. 二者都是Foundation框架中的基类, 并 ...
- mvc中服务器端、客户端属性验证
在mvc中使用表单进行数据提交时,数据验证分为服务器端验证和客户端验证: 我们可以通过使用HtmlHelper中的方法及在页面中引用js库对Model的属性的数据注解(System.Component ...
- Failed to retrieve data for this request. (Microsoft.SqlServer.Management.Sdk.Sfc)
使用Microsoft SQL SERVER 2014 Management Studio访问Azure SQL Database时,查看存储过程时遇到下面错误信息: TITLE: Microsoft ...
- phpAdmin安装
phpAdmin是和Navicat重复的功能 负责管理MySql数据库 不过他是使用浏览器进行管理MySql数据库 PHP环境搭建的完整步骤 http://www.cnblogs.com/azhe-s ...
- 使用Echarts实现动态曲线图表
最近做的一个在线气象观测网站要实现一个需求:使用图表展示最近五天温湿度等气象要素的曲线变化 具体效果参考:http://www.weatherobserve.com/showInfoIndex.jsp ...
- 随手小代码——生成GUID
GUID stGUID; CString strGUID; if (S_OK==::CoCreateGuid(&stGUID)) { strGUID.Format( TEXT("{% ...
- stl之截取:以一段字符串截取字符串
string dforder = line.substr(0,line.find("\t")).c_str(); 解析: line为传进来的string类型 substr查找第0位 ...
- 如何安装虚拟机VMware
虚拟机可以帮我们在一台电脑上面来模拟出多台电脑,而且可以装不同的系统.下面就教大家怎么装VMware虚拟机 1.下载Vmware安装包,建议下载VMware10 这个有中文版的,其他版本的都是英文的哦 ...
- Memcached在windows下安装与使用
建议:windows系统下仅为测试所有,生产环境下服务端应使用Linux系统. 本文最后更新于:2014-08-03 18:24 原文:http://www.yaosansi.com/post/mem ...