今天学习的控件是ImageView.ImageView 显示任意的图片并且可以从不同的源加载图片,比如:resources 、 content provider 。使用时要注意图片的尺寸以便可以让任意Layout Manager使用和提供不同的诸如缩放、着色等操作。
ImageView使用过程中有许多需要注意的属性,今天主要是学习android:scaleType 属性。先来看看以下几张图片:
图1 没有设置scaleType 图2 scale:type=center 图3 scale:type=centerCrop
图4 scale:type=centerInside 图5 scale:type=fitcenter 图6 scale:type=fitEnd
图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。