Android-ImageView

常用属性

  1. android:src: 设置图片资源
  2. android:scaleType: 设置图片缩放类型
  3. android:maxHeight: 最大高度
  4. android:maxWidth: 最大宽度
  5. android:adjustViewBounds: 调整view界限
scaleType缩放类型
1
2
3
4
5
6
7
8
9
10
11
12
//共同点:缩小图片
fitStart: 保持宽高比缩放图片,直到较长的边与image的边长相等,缩放后将图片放在ImageView的左上角
fitCenter: 默认值,保持宽高比缩放图片,直到较长的边与image的边长相等,缩放后放于中间
fitEnd: 保持宽高比缩放图片,直到较长的边与image的边长相等,缩放后放于右下角
fitXY: 对图像的纵横方向进行独立缩放使得图片完全适应ImageView,但是图片的宽高比可能会发生改变
//共同点:居中显示
center: 保持原图的宽高比和大小,图片中心点与ImageView中心点重叠,当原图宽高大于ImageView时,超出部分将被剪裁
centerCrop: 保持宽高比缩放图片,直到完全覆盖ImageView,可能会出现图片的显示不完全
centerInside: 保持宽高比缩放图片,直到ImageView能够完全地将图片显示出,如果图片宽高小于ImageView,将直接居中显示

matrix: 保持原图的宽高比和大小,从ImageView的左上角开始绘制原图,超出部分将被剪裁

ViewFlipper

其实ViewFlipper不该写在这里,因为它继承自ViewAnimator(提供不同View的动画切换效果),而ViewAnimator又是FrameLayout的子类…

相关方法:

  1. isFlipping: 判断view切换是否正在进行
  2. setFlippInterval: 设置view之间切换的时间间隔
  3. startFlipping: 使用上面切换的时间间隔开始切换所有的View,切换会循环进行
  4. stopFlipping: 停止View切换
ViewAnimator

通常不直接使用ViewAnimator,而是使用它的两个子类

相关方法:

  1. setInAnimator: 设置View进入屏幕时使用的动画
  2. setOutAnimator: 设置View退出屏幕时使用的动画
  3. showNext: 显示下一个视图
  4. showPrevious: 显示上一个视图
ViewFlipper画面切换

ViewFlipper画面切换需要给其添加ImageView,原理跟播放幻灯片差不多,下面动态给ViewFlipper添加图片控件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//  创建ImageView
ImageView imageView1 = new ImageView(this);
ImageView imageView2 = new ImageView(this);
ImageView imageView3 = new ImageView(this);
ImageView imageView4 = new ImageView(this);
// 设置图片
imageView1.setImageResource(img[0]);
imageView2.setImageResource(img[1]);
imageView3.setImageResource(img[2]);
imageView4.setImageResource(img[3]);

// 添加到ViewFlipper
home2_viewFlipper1.addView(imageView1);
home2_viewFlipper1.addView(imageView2);
home2_viewFlipper1.addView(imageView3);
home2_viewFlipper1.addView(imageView4);

切换下一张图片显示

1
2
3
  home2_viewFlipper1.showNext();
//切换上一张
//home2_viewFlipper1.showPrevious();

ViewFlipper循环切换
1
2
3
4
5
6
7
8
9
10
11
12
13
// 如果处于切换状态
if (home2_viewFlipper1.isFlipping()){
// 停止切换
home2_viewFlipper1.stopFlipping();
home2_btn2.setText("循环切换");
}
else{
// 设置循环切换时间间隔
home2_viewFlipper1.setFlipInterval(1500);
// 开始循环切换
home2_viewFlipper1.startFlipping();
home2_btn2.setText("停止切换");
}
添加动画效果

进入动画,inview.xml

1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 因为左进右出两张图片,所以这里的duration是java代码中ViewFlipper切换时间间隔的一半才恰好-->
<translate
android:duration="500"
android:fromXDelta="-100%p"
android:toXDelta="0"/>
</set>

退出动画,outview.xml

1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 因为左进右出两张图片,所以这里的duration是java代码中ViewFlipper切换时间间隔的一半才恰好-->
<translate
android:duration="500"
android:fromXDelta="0"
android:toXDelta="100%p"/>
</set>

在代码中添加动画

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//  装载从左淡入动画
Animation animation = AnimationUtils.loadAnimation(HomeActivity2.this,
R.anim.inview);
// 绑定进入动画
home2_viewFlipper1.setInAnimation(animation);
// 装载从右淡出效果
Animation animation1 = AnimationUtils.loadAnimation(HomeActivity2.this,
R.anim.outview);
// 绑定退出动画
home2_viewFlipper1.setOutAnimation(animation1);
// 如果处于切换状态
if (home2_viewFlipper1.isFlipping()){
// 停止切换
home2_viewFlipper1.stopFlipping();
home2_btn2.setText("循环切换");
}
else{
// 设置循环切换时间间隔
home2_viewFlipper1.setFlipInterval(1000);
// 开始循环切换
home2_viewFlipper1.startFlipping();
home2_btn2.setText("停止切换");
}

效果图

扩展: 创建anim动画

1.创建anim文件夹

2.在anim文件夹中创建动画资源文件