一步一步学android控件(之8) —— ImageView

一步一步学android控件(之八) —— ImageView

今天学习的控件是ImageView.ImageView 显示任意的图片并且可以从不同的源加载图片,比如:resources 、 content provider 。使用时要注意图片的尺寸以便可以让任意Layout Manager使用和提供不同的诸如缩放、着色等操作。


ImageView使用过程中有许多需要注意的属性,今天主要是学习android:scaleType 属性。先来看看以下几张图片:

    一步一步学android控件(之8) —— ImageView              一步一步学android控件(之8) —— ImageView             一步一步学android控件(之8) —— ImageView

 图1 没有设置scaleType              图2 scale:type=center                     图3 scale:type=centerCrop

   一步一步学android控件(之8) —— ImageView               一步一步学android控件(之8) —— ImageView              一步一步学android控件(之8) —— ImageView

图4 scale:type=centerInside               图5 scale:type=fitcenter                  图6 scale:type=fitEnd

   一步一步学android控件(之8) —— ImageView               一步一步学android控件(之8) —— ImageView               一步一步学android控件(之8) —— ImageView

图7scale:type=fitStart                   图8 scale:type=fitXY                        图9 scale:type=matrix

在分析前呢先看看布局文件widget_image_view.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="100dp"
    android:orientation="vertical"
    android:gravity="center"
    android:background="@color/color_blue"
    android:layout_gravity="center" >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:src="@drawable/hello_image_view"
        android:contentDescription="@string/app_name"
        android:scaleType="centerInside"/>

</LinearLayout>
从上面代码中看到目前scaleType是centerInside,其他效果只需根据以上图片修改为相应的值即可。

ImageView的android:scaleType属性指定了该图片的缩放类型。

scaleType=center:取图片的中间部分,不做缩放处理。如果图片尺寸的长和宽大于ImageView的长宽则截取中间部分,否则完整的显示图片。

scaleType=centerCrop: 等比的缩放图片的长和宽以便图像的长和宽大于等于ImageView的长和宽。ImageView 视图外的部分将被裁减掉。

scaleType=centerInside:    等比的缩放图片的长和宽让图片的长和宽小于等于ImageView的长和宽。

scaleType=fitCenter: 等比缩放图片以使ImageView可以完全显示——放到ImageView的中间显示。

scaleType=fitEnd: 等比缩放图片以使ImageView可以完全显示——放到ImageView的尾部显示。

scaleType=fitStart: 等比缩放图片以使ImageView可以完全显示——放到ImageView的起始位置显示。

scaleType=fitXY: 缩放X和Y方向,铺满ImageView的空间。

scaleType=matrix: 绘图时使用图像矩阵。

下面完成上述功能,下面内容有疑问的地方参见一步一步学android控件(之一) —— 开始篇:

1、布局文件widget_image_view.xml , 内容见上面代码 。另准备一张 名为hello_image_view 的图片。

2、创建显示图片的activity——WidgetImageViewActivity.java

package com.xy.zt.selfdefinewieget;

import android.app.Activity;
import android.os.Bundle;

public class WidgetImageViewActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.widget_image_view);
    }

}
3、在ViewData.java中添加如下内容
public static final int IMAGE_VIEW_ID = TOAST_ID + 1;
    public static final String IMAGE_VIEW_NAME = "ImageView";
private static final ViewData mImageView = new ViewData(IMAGE_VIEW_NAME, IMAGE_VIEW_ID);
View_Datas.add(mImageView);

4、在WidgetsAdapter的handleItemClicked函数中添加如下事件响应代码

case ViewData.IMAGE_VIEW_ID :
            intent.setClass(mContext, WidgetImageViewActivity.class);
            mContext.startActivity(intent);
            break;

ImageView就学到这里了,其他相关属性后续再补充,谢谢!

下一个控件ImageButton。