9_Android的图片视图(ImageView)


1.图片视图(ImageView)的基本概念

什么是ImageView?

  • ImageView主要是用来显示图片的控件(显示在Activity上),可以对图片进行放大、缩小和旋转的功能。

使用图片的来源?

可以有很多种,例如来自res、asset文件夹,可以来源网络,SD卡,只要是图片都可以摆放在Activity上

2. 

用实例演示,如何把一张图片放置在Activity界面上:

  • 第一步:新建一个Android应用程,命名为:S06_ImageView,创建空白的BlankActivity.

  • 打开布局文件,用LinearLayout(线性布局),创建一个<ImageView/>控件标签

  • 说明上面图片的来源,图片是我保存在桌面上的一张图片名为:peppapig.png(注意不能用大写字母)的图片 ,我把它复制在res文件夹下的drawable-hdpi(类似的几个是区分辨率的),我们知道,凡是放在res文件夹下的文件,在gen文件夹下的R.java都有一个Id,所以我们可以通过Id去调用这个图片。

  • 在布局文件如何调用这个图片?

  • 在代码中如何调用显示这个图片?在MainActivity的onCreate( )方法中使用<ImageView/>控件标签用对象表示:

 

  • 运行应用程序,看一下在Activity界面显示的效果:

可见,在界面显示一个图片很简单,但是你想控制他的大小就会复杂一点,了解了如何使用,接下来我们讨论如何对我们的图片进行编辑。


神奇的Scale Type

属性:

我们通过实例来演示这些属性的意义:

Scale Type的fitCenter属性:

我们修改xml文件的ImageView并增添另一张图片:

  •  关于像素密度(dpi)的计算:点我跳转
  • 也可以直接在启动模拟器的界面看

然后根据公式:px=dp∗(dpi/160),计算得,1dp = 1.5px,所以我们上面设置100dp = 150px. 

  • 看一看xml可是界面上的显示:

 1.fitCenter属性:

  • 那么把ScaleType设置成fitCenter的含义是什么呢? 

我们先看一下图片的分辨率,小猪的分辨率为:

安卓图标的分辨率为:

细心就可以发现小猪的实际分辨率(768*760)比安卓图标(72*72)的分辨率大很多,但是在Activity上所占的像素都是150*150像素(px),这也正是fitCenter参数的作用:

如果ImageView的ScaleType设置成fitCenter,一张图片如果比设置成的ImageView大(100dp*100dp=150*150像素),就把这张图片等比例缩放,缩放到刚刚好能放在这个ImageView里面,并且居中显示。如果再细心一点可以发现小猪的背景色楼出来一点点,上下有两条红边,这个是怎么回事呢?

  • 详情看图,所以小红边就是没有被占的1.5*150像素的背景。

如果比设置的ImageView小,那么就等比例放大,因为安卓图标正好是正方形,所以缩放成也是正方形,然后再居中显示。

  • 那么fitStart属性就是把图片等比例缩放,靠上显示。
  • 那么fitEnd属性就是把图片等比例缩放,靠下显示。

 2.center属性:

如果把属性设置为center, 一张图片如果比设置成的ImageView大,他就直接在图片截图你所设置图片的大小(100*100dp)在中间截取出像素大小,例如下图所示,只截取一部分片段:

在模拟机显示如下:

 如果比设置的ImageView小,那么就原像素居中显示。

3.centerInside属性

效果图如下,功能是一张图片如果比设置成的ImageView大,就等比例缩小到刚好能放进去,如果比ImageView小,那么就原像素居中显示。

4.centerCrop属性 

 一张图片如果比mageView大,还是等比例缩放,但是是短边和ImageView缩放成相等,所以我们就看不到红色背景红边了,所以无论如何缩放,都要把这个imageView填满,不会留出空位。

一张图片如果比mageView小,就等比例放大,然后居中显示。效果如下图:

  


已上我们是在xml使用<ImageView/>进行控件管理,那我们如何在代码中管理图片的格式呢?

首先在MainActivity获取 <ImageView/>标签的对象,然后调用对象的方法:

运行应用程序可以看到效果和我们在Xml布局文件设置使用一样的:

说到这里,那到底ImageView总结来说,就是当你的图片像素和ImageView像素不匹配的时候,你如何去设置图片的一些属性。


附录: 

本博文Demo下载:https://github.com/zGuangYuan/Android- 

github的用法:点我查看


猜你喜欢

转载自blog.csdn.net/qq_36243942/article/details/81783895