ImageView继承自View类,它的功能用于显示图片, 或者显示Drawable对象

xml属性:

src和background区别 参考:http://hi.baidu.com/sunboy_2050/item/843aaed77256fc1620e250f9

区别一:图片透明度

两者都可以设置ImageView的背景

android:src:在设置ImageView的setAlpha()时有效果

android:background:在设置ImageView的setAlpha()时无效果

区别二:图片拉伸

background会根据ImageView的长宽进行拉伸,按照组件的大小来放大或者缩小图片。

src就存放的是原图的大小,不会进行拉伸,原图显示,不该变图片的大小

例如:ImageView的长宽都设置为:100px

1  background 引用图片

2  src 引用图片

其他属性参考文章:http://407827531.iteye.com/blog/1117199

属性名称

描述

android:adjustViewBounds

是否保持宽高比。需要与maxWidth、MaxHeight一起使用,否则单独使用没有效果。

android:cropToPadding

是否截取指定区域用空白代替。单独设置无效果,需要与scrollY一起使用,效果如下,实现代码见代码部分:

android:maxHeight

设置View的最大高度,单独使用无效,需要与setAdjustViewBounds一起使用。如果想设置图片固定大小,又想保持图片宽高比,需要如下设置:

1) 设置setAdjustViewBounds为true;

2) 设置maxWidth、MaxHeight;

3) 设置设置layout_width和layout_height为wrap_content。

android:maxWidth

设置View的最大宽度。同上。

android:scaleType

设置图片的填充方式。

matrix

0

用矩阵来绘图

 

fitXY

1

拉伸图片(不按比例)以填充View的宽高

layout_

height

:30px

layout_

width

:120px

fitStart

2

按比例拉伸图片,拉伸后图片的高度为View的高度,且显示在View的左边

fitCenter

3

按比例拉伸图片,拉伸后图片的高度为View的高度,且显示在View的中间

fitEnd

4

按比例拉伸图片,拉伸后图片的高度为View的高度,且显示在View的右边

center

5

按原图大小显示图片,但图片宽高大于View的宽高时,截图图片中间部分显示

layout_

height

:60px

layout_

width

:80px

padding

:10px

centerCrop

6

按比例放大原图直至等于某边View的宽高显示。

centerInside

7

当原图宽高或等于View的宽高时,按原图大小居中显示;反之将原图缩放至View的宽高居中显示。

android:src

设置View的drawable(如图片,也可以是颜色,但是需要指定View的大小)

android:tint

将图片渲染成指定的颜色。见下图:

左边为原图,右边为设置后的效果,见后面代码。

下面给出一个实例代码: 实现图片透明度变化,以及缩放

  1. public class ImageViewTest extends Activity
  2. {
  3. //定义一个访问图片的数组
  4. int[] images = new int[]{
  5. R.drawable.lijiang,
  6. R.drawable.qiao,
  7. R.drawable.shuangta,
  8. R.drawable.shui,
  9. R.drawable.xiangbi,
  10. };
  11. //定义默认显示的图片
  12. int currentImg = ;
  13. //定义图片的初始透明度
  14. private int alpha = ;
  15. @Override
  16. public void onCreate(Bundle savedInstanceState)
  17. {
  18. super.onCreate(savedInstanceState);
  19. setContentView(R.layout.main);
  20. final Button plus = (Button)findViewById(R.id.plus);
  21. final Button minus = (Button)findViewById(R.id.minus);
  22. final ImageView image1 = (ImageView)findViewById(R.id.image1);
  23. final ImageView image2 = (ImageView)findViewById(R.id.image2);
  24. final Button next = (Button)findViewById(R.id.next);
  25. //定义查看下一张图片的监听器
  26. next.setOnClickListener(new OnClickListener()
  27. {
  28. @Override
  29. public void onClick(View v)
  30. {
  31. if (currentImg >= )
  32. {
  33. currentImg = -;
  34. }
  35. BitmapDrawable bitmapDrawable = (BitmapDrawable) image1
  36. .getDrawable();
  37. //如果图片还未回收,先强制回收该图片,避免OutOfMemoryError异常
  38. if (!bitmapDrawable.getBitmap().isRecycled())
  39. {
  40. bitmapDrawable.getBitmap().recycle();
  41. }
  42. //改变ImageView显示的图片
  43. image1.setImageBitmap(BitmapFactory.decodeResource(getResources()
  44. , images[++currentImg]));
  45. }
  46. });
  47. //定义改变图片透明度的方法
  48. OnClickListener listener = new OnClickListener()
  49. {
  50. @Override
  51. public void onClick(View v)
  52. {
  53. if(v == plus)
  54. {
  55. alpha += ;
  56. }
  57. if(v == minus)
  58. {
  59. alpha -= ;
  60. }
  61. if(alpha >= )
  62. {
  63. alpha = ;
  64. }
  65. if(alpha <= )
  66. {
  67. alpha = ;
  68. }
  69. //改变图片的透明度
  70. image1.setAlpha(alpha);
  71. }
  72. };
  73. //为两个按钮添加监听器
  74. plus.setOnClickListener(listener);
  75. minus.setOnClickListener(listener);
  76. //当点击image1图片某个部分,他就会显示在image2中
  77. image1.setOnTouchListener(new OnTouchListener()
  78. {
  79. @Override
  80. public boolean onTouch(View view, MotionEvent event)
  81. {
  82. BitmapDrawable bitmapDrawable = (BitmapDrawable) image1
  83. .getDrawable();
  84. //获取第一个图片显示框中的位图
  85. Bitmap bitmap = bitmapDrawable.getBitmap();
  86. //bitmap图片实际大小与第一个ImageView的缩放比例
  87. double scale = bitmap.getWidth() / 320.0;
  88. //获取需要显示的图片的开始点
  89. int x = (int) (event.getX() * scale);
  90. int y = (int) (event.getY() * scale);
  91. if (x + > bitmap.getWidth())
  92. {
  93. x = bitmap.getWidth() - ;
  94. }
  95. if (y + > bitmap.getHeight())
  96. {
  97. y = bitmap.getHeight() - ;
  98. }
  99. //显示图片的指定区域
  100. image2.setImageBitmap(Bitmap.createBitmap(bitmap, x, y, , ));
  101. image2.setAlpha(alpha);
  102. return false;
  103. }
  104. });
  105. }
  106. }
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:orientation="vertical" >
  6.  
  7. <LinearLayout
  8. android:layout_width="fill_parent"
  9. android:layout_height="wrap_content"
  10. android:gravity="center"
  11. android:orientation="horizontal" >
  12.  
  13. <Button
  14. android:id="@+id/plus"
  15. android:layout_width="wrap_content"
  16. android:layout_height="wrap_content"
  17. android:text="增大透明度" />
  18.  
  19. <Button
  20. android:id="@+id/minus"
  21. android:layout_width="wrap_content"
  22. android:layout_height="wrap_content"
  23. android:text="降低透明度" />
  24.  
  25. <Button
  26. android:id="@+id/next"
  27. android:layout_width="wrap_content"
  28. android:layout_height="wrap_content"
  29. android:text="下一张" />
  30. </LinearLayout>
  31. <!-- 定义显示图片整体的ImageView -->
  32.  
  33. <ImageView
  34. android:id="@+id/image1"
  35. android:layout_width="fill_parent"
  36. android:layout_height="240px"
  37. android:background="#0000ff"
  38. android:scaleType="fitCenter"
  39. android:src="@drawable/shuangta" />
  40. <!-- 定义显示图片局部细节的ImageView -->
  41.  
  42. <ImageView
  43. android:id="@+id/image2"
  44. android:layout_width="120dp"
  45. android:layout_height="120dp"
  46. android:layout_marginTop="10dp"
  47. android:background="#0000ff" />
  48.  
  49. </LinearLayout>

ImageView的功能和使用的更多相关文章

  1. Android(java)学习笔记204:自定义SmartImageView(继承自ImageView,扩展功能为自动获取网络路径图片)

    1.有时候Android系统配置的UI控件,不能满足我们的需求,Android开发做到了一定程度,多少都会用到自定义控件,一方面是更加灵活,另一方面在大数据量的情况下自定义控件的效率比写布局文件更高. ...

  2. Android(java)学习笔记147:自定义SmartImageView(继承自ImageView,扩展功能为自动获取网络路径图片)

    1. 有时候Android系统配置的UI控件,不能满足我们的需求,Android开发做到了一定程度,多少都会用到自定义控件,一方面是更加灵活,另一方面在大数据量的情况下自定义控件的效率比写布局文件更高 ...

  3. 图片切换器(ImageSwitcher)的功能与用法

    ImageSwitcher继承了ViewSwitcher,因此它具有与ViewSwitcher相同的特征:可以在切换View组件时使用动画效果.ImageSwitcher继承了ViewSwitcher ...

  4. Android开发自学笔记(Android Studio)—4.3ImageView及其子类

    一.引言 ImageView继承自View组件,主要功能用来显示图片,实际上他能显示的不仅是图片,Drawable对象都可以用ImageView来显示. ImageView派生了ImageButton ...

  5. Android开发学习清单

    目录: 第1章 Android应用与开发环境1.1 Android的发展和历史1.1.1 Android的发展和简介1.1.2 Android平台架构及特性1.2 搭建Android开发环境1.2.1 ...

  6. Android_Gallery

    xml布局 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:to ...

  7. android ListView优化

    android ListView通过优化重用历史缓存实现.listview相应的数据适配器一般使用自己定义BaseAdapter子类,重用历史缓冲区来提高性能. 例如,下面的示例代码演示: 1.lis ...

  8. android学习Gallery和ImageSwitch的使用

    Gallery组件被称之为画廊,是一种横向浏览图片的列表,在使用android API 19 Platform 时会发现Gallery被画上了横线,表明谷歌已经不推荐使用该组件了, * @deprec ...

  9. 二、Android应用的界面编程(七)ViewAnimator及其子类[ ViewSwitcher、ImageSwitcher、TextSwitcher、ViewFlipper ]

    ViewAnimator是一个基类,它继承了FrameLayout.因此它表现出FrameLayout的特征,可以将多个View组“叠”在一起. ViewAnimator可以在View切换时表现出动画 ...

随机推荐

  1. 精准测试与开源工具Jacoco的覆盖率能力大PK

    导读:本文根据实际使用情况,简要分析了精准测试和类Jacoco等传统白盒工具在设计理念.功能和应用场景的异同点,并阐述了覆盖率技术如何在新型企业开发体系中,发挥应有的重要作用. 覆盖率技术可以说是测试 ...

  2. 大话 Spring Session 共享

    javaweb中我们项目稍微正规点,都会用到单点登录这个技术.实现它的方法各家有各界的看法.这几天由于公司项目需求正在研究.下面整理一下最近整理的心得. 简介 在分布式项目中另我们头疼的是多项目之间的 ...

  3. 把Python项目打包成exe文件

    我们很多时候,写好的程序需要打包成.exe文件才可以发给客户,那么今天我就来谈一谈,如何将一个写好的Python程序打包成exe文件! 首先,我们我们使用到的工具是python 3.7 和 Pyins ...

  4. 关于int的范围以及溢出问题

    最近在练一些算法题目的时候恰巧碰到了几道关于int范围与溢出相关的问题,于是就整理一下. 1.原码.补码 在计算机中数值都是用补码表示和存储的(正数补码与原码一致,负数补码是原码符号位不变,其余位取反 ...

  5. 强烈推荐优秀的Vue UI组件库

    Vue 是一个轻巧.高性能.可组件化的MVVM库,API简洁明了,上手快.从Vue推出以来,得到众多Web开发者的认可.在公司的Web前端项目开发中,多个项目采用基于Vue的UI组件框架开发,并投入正 ...

  6. Java 在spring cloud中使用Redis,spring boot同样适用

    1.本地安装redis服务,官网下载. 2.在开发中要使用redis,首先要启动本地redis服务,启动后页面如下: 3.在spring boot项目pom.xml文件中添加Redis需要的依赖包,可 ...

  7. python+Selenium-字符运行报错问题

    最近开始接触自动化测试,在写一个简单的查询脚本时,遇到编码无法识别的问题 SyntaxError: Non-ASCII character '\xe5' in file F:/soft_Test/py ...

  8. 使用BeanShell断言判断请求返回的Json相应结果(不同json格式整理)

    第一种json格式 { "code": 0, "msg": "success", "success": true, &q ...

  9. C#之项目常用方法之静态扩展

    一般项目中我们经常用到数据Json的序列化与反序列化,为了方便在需要的地方快速使用,一般建议都封装为静态扩展方法,在需要的地方可直接使用. 而目前C#项目中序列化一般都是用的 Newtonsoft.J ...

  10. 【码上开心】Windows环境mysql数据库使用(二)skip-grant-tables 与用户名密码修改

    skip-grant-tables #跳过数据库权限验证 我们安装MySql 设置my.ini配置文件的时候,常常会在my.ini中添加 skip-grant-tables ,这时接数据库可以使用任意 ...