ImageView的功能和使用
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 |
设置图片的填充方式。
|
|||||||||||||||||||||||||||
android:src |
设置View的drawable(如图片,也可以是颜色,但是需要指定View的大小) |
|||||||||||||||||||||||||||
android:tint |
将图片渲染成指定的颜色。见下图:
|
下面给出一个实例代码: 实现图片透明度变化,以及缩放
- public class ImageViewTest extends Activity
- {
- //定义一个访问图片的数组
- int[] images = new int[]{
- R.drawable.lijiang,
- R.drawable.qiao,
- R.drawable.shuangta,
- R.drawable.shui,
- R.drawable.xiangbi,
- };
- //定义默认显示的图片
- int currentImg = ;
- //定义图片的初始透明度
- private int alpha = ;
- @Override
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- final Button plus = (Button)findViewById(R.id.plus);
- final Button minus = (Button)findViewById(R.id.minus);
- final ImageView image1 = (ImageView)findViewById(R.id.image1);
- final ImageView image2 = (ImageView)findViewById(R.id.image2);
- final Button next = (Button)findViewById(R.id.next);
- //定义查看下一张图片的监听器
- next.setOnClickListener(new OnClickListener()
- {
- @Override
- public void onClick(View v)
- {
- if (currentImg >= )
- {
- currentImg = -;
- }
- BitmapDrawable bitmapDrawable = (BitmapDrawable) image1
- .getDrawable();
- //如果图片还未回收,先强制回收该图片,避免OutOfMemoryError异常
- if (!bitmapDrawable.getBitmap().isRecycled())
- {
- bitmapDrawable.getBitmap().recycle();
- }
- //改变ImageView显示的图片
- image1.setImageBitmap(BitmapFactory.decodeResource(getResources()
- , images[++currentImg]));
- }
- });
- //定义改变图片透明度的方法
- OnClickListener listener = new OnClickListener()
- {
- @Override
- public void onClick(View v)
- {
- if(v == plus)
- {
- alpha += ;
- }
- if(v == minus)
- {
- alpha -= ;
- }
- if(alpha >= )
- {
- alpha = ;
- }
- if(alpha <= )
- {
- alpha = ;
- }
- //改变图片的透明度
- image1.setAlpha(alpha);
- }
- };
- //为两个按钮添加监听器
- plus.setOnClickListener(listener);
- minus.setOnClickListener(listener);
- //当点击image1图片某个部分,他就会显示在image2中
- image1.setOnTouchListener(new OnTouchListener()
- {
- @Override
- public boolean onTouch(View view, MotionEvent event)
- {
- BitmapDrawable bitmapDrawable = (BitmapDrawable) image1
- .getDrawable();
- //获取第一个图片显示框中的位图
- Bitmap bitmap = bitmapDrawable.getBitmap();
- //bitmap图片实际大小与第一个ImageView的缩放比例
- double scale = bitmap.getWidth() / 320.0;
- //获取需要显示的图片的开始点
- int x = (int) (event.getX() * scale);
- int y = (int) (event.getY() * scale);
- if (x + > bitmap.getWidth())
- {
- x = bitmap.getWidth() - ;
- }
- if (y + > bitmap.getHeight())
- {
- y = bitmap.getHeight() - ;
- }
- //显示图片的指定区域
- image2.setImageBitmap(Bitmap.createBitmap(bitmap, x, y, , ));
- image2.setAlpha(alpha);
- return false;
- }
- });
- }
- }
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical" >
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:gravity="center"
- android:orientation="horizontal" >
- <Button
- android:id="@+id/plus"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="增大透明度" />
- <Button
- android:id="@+id/minus"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="降低透明度" />
- <Button
- android:id="@+id/next"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="下一张" />
- </LinearLayout>
- <!-- 定义显示图片整体的ImageView -->
- <ImageView
- android:id="@+id/image1"
- android:layout_width="fill_parent"
- android:layout_height="240px"
- android:background="#0000ff"
- android:scaleType="fitCenter"
- android:src="@drawable/shuangta" />
- <!-- 定义显示图片局部细节的ImageView -->
- <ImageView
- android:id="@+id/image2"
- android:layout_width="120dp"
- android:layout_height="120dp"
- android:layout_marginTop="10dp"
- android:background="#0000ff" />
- </LinearLayout>
ImageView的功能和使用的更多相关文章
- Android(java)学习笔记204:自定义SmartImageView(继承自ImageView,扩展功能为自动获取网络路径图片)
1.有时候Android系统配置的UI控件,不能满足我们的需求,Android开发做到了一定程度,多少都会用到自定义控件,一方面是更加灵活,另一方面在大数据量的情况下自定义控件的效率比写布局文件更高. ...
- Android(java)学习笔记147:自定义SmartImageView(继承自ImageView,扩展功能为自动获取网络路径图片)
1. 有时候Android系统配置的UI控件,不能满足我们的需求,Android开发做到了一定程度,多少都会用到自定义控件,一方面是更加灵活,另一方面在大数据量的情况下自定义控件的效率比写布局文件更高 ...
- 图片切换器(ImageSwitcher)的功能与用法
ImageSwitcher继承了ViewSwitcher,因此它具有与ViewSwitcher相同的特征:可以在切换View组件时使用动画效果.ImageSwitcher继承了ViewSwitcher ...
- Android开发自学笔记(Android Studio)—4.3ImageView及其子类
一.引言 ImageView继承自View组件,主要功能用来显示图片,实际上他能显示的不仅是图片,Drawable对象都可以用ImageView来显示. ImageView派生了ImageButton ...
- Android开发学习清单
目录: 第1章 Android应用与开发环境1.1 Android的发展和历史1.1.1 Android的发展和简介1.1.2 Android平台架构及特性1.2 搭建Android开发环境1.2.1 ...
- Android_Gallery
xml布局 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:to ...
- android ListView优化
android ListView通过优化重用历史缓存实现.listview相应的数据适配器一般使用自己定义BaseAdapter子类,重用历史缓冲区来提高性能. 例如,下面的示例代码演示: 1.lis ...
- android学习Gallery和ImageSwitch的使用
Gallery组件被称之为画廊,是一种横向浏览图片的列表,在使用android API 19 Platform 时会发现Gallery被画上了横线,表明谷歌已经不推荐使用该组件了, * @deprec ...
- 二、Android应用的界面编程(七)ViewAnimator及其子类[ ViewSwitcher、ImageSwitcher、TextSwitcher、ViewFlipper ]
ViewAnimator是一个基类,它继承了FrameLayout.因此它表现出FrameLayout的特征,可以将多个View组“叠”在一起. ViewAnimator可以在View切换时表现出动画 ...
随机推荐
- 精准测试与开源工具Jacoco的覆盖率能力大PK
导读:本文根据实际使用情况,简要分析了精准测试和类Jacoco等传统白盒工具在设计理念.功能和应用场景的异同点,并阐述了覆盖率技术如何在新型企业开发体系中,发挥应有的重要作用. 覆盖率技术可以说是测试 ...
- 大话 Spring Session 共享
javaweb中我们项目稍微正规点,都会用到单点登录这个技术.实现它的方法各家有各界的看法.这几天由于公司项目需求正在研究.下面整理一下最近整理的心得. 简介 在分布式项目中另我们头疼的是多项目之间的 ...
- 把Python项目打包成exe文件
我们很多时候,写好的程序需要打包成.exe文件才可以发给客户,那么今天我就来谈一谈,如何将一个写好的Python程序打包成exe文件! 首先,我们我们使用到的工具是python 3.7 和 Pyins ...
- 关于int的范围以及溢出问题
最近在练一些算法题目的时候恰巧碰到了几道关于int范围与溢出相关的问题,于是就整理一下. 1.原码.补码 在计算机中数值都是用补码表示和存储的(正数补码与原码一致,负数补码是原码符号位不变,其余位取反 ...
- 强烈推荐优秀的Vue UI组件库
Vue 是一个轻巧.高性能.可组件化的MVVM库,API简洁明了,上手快.从Vue推出以来,得到众多Web开发者的认可.在公司的Web前端项目开发中,多个项目采用基于Vue的UI组件框架开发,并投入正 ...
- Java 在spring cloud中使用Redis,spring boot同样适用
1.本地安装redis服务,官网下载. 2.在开发中要使用redis,首先要启动本地redis服务,启动后页面如下: 3.在spring boot项目pom.xml文件中添加Redis需要的依赖包,可 ...
- python+Selenium-字符运行报错问题
最近开始接触自动化测试,在写一个简单的查询脚本时,遇到编码无法识别的问题 SyntaxError: Non-ASCII character '\xe5' in file F:/soft_Test/py ...
- 使用BeanShell断言判断请求返回的Json相应结果(不同json格式整理)
第一种json格式 { "code": 0, "msg": "success", "success": true, &q ...
- C#之项目常用方法之静态扩展
一般项目中我们经常用到数据Json的序列化与反序列化,为了方便在需要的地方快速使用,一般建议都封装为静态扩展方法,在需要的地方可直接使用. 而目前C#项目中序列化一般都是用的 Newtonsoft.J ...
- 【码上开心】Windows环境mysql数据库使用(二)skip-grant-tables 与用户名密码修改
skip-grant-tables #跳过数据库权限验证 我们安装MySql 设置my.ini配置文件的时候,常常会在my.ini中添加 skip-grant-tables ,这时接数据库可以使用任意 ...