一、常规用法
在Android Studio中,总的来说,ImageView就是用来显示图片的控件。如果你想要显示一张图片,首先需要将图片放入到项目的res/drawable
文件夹下。然后,设置ImageView的src属性,来指定图片的资源ID即可。
<ImageView
android:id="@+id/iv_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/image1" />
其中@drawable/image1
就是指定了图片的资源ID。
ImageView的android:layout_width
和android:layout_height
属性用来控制ImageView的大小。
二、图片缩放
在图片在ImageView中显示时,经常需要对图片进行缩放,以适应不同的屏幕大小和分辨率。
ImageView提供了以下几种缩放方式:
1.按比例缩放
在使用此缩放方式时,有可能会出现图片平铺或裁剪的情况。
<ImageView
android:id="@+id/iv_2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/image2"
android:scaleType="centerCrop" />
其中, android:scaleType="centerCrop"
表示将图片按比例缩放并裁剪到ImageView中间区域。
2.拉伸填充
按比例拉伸图片来填充ImageView,存在着图片失真的情况。
<ImageView
android:id="@+id/iv_3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/image3"
android:scaleType="fitXY" />
其中, android:scaleType="fitXY"
表示将图片按比例缩放并填充整个ImageView。
3.按比例缩放,不留空白
按比例缩放图片直到完全适应ImageView,并且ImageView上下或者左右显示完全。
<ImageView
android:id="@+id/iv_4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/image4"
android:scaleType="fitCenter" />
其中, android:scaleType="fitCenter"
表示将图片按比例缩放并显示在ImageView中心。
三、圆形或圆角图片
有时候,需要把图片显示为圆形或者圆角矩形,这里介绍两种实现方式。
1.圆形图片
使用res/drawable
目录下的图片资源时,可以直接使用CircleImageView
库实现圆形图片的效果。
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/iv_5"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/image5" />
如果采用网络图片或者本地图片,需使用Glide
或者Picasso
等图片加载库。
<com.bumptech.glide.request.target.ImageViewTarget
android:id="@+id/iv_6"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/placeholder"
app:srcCompat="@drawable/placeholder" />
其中需要设置app:srcCompat="@drawable/placeholder"
为默认图片,当网络图片或者加载错误时显示该图片。
2.圆角矩形图片
使用CardView
和RoundImageView
实现圆角矩形图片的效果。
<androidx.cardview.widget.CardView
android:id="@+id/cv_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:cardCornerRadius="10dp"
app:cardElevation="5dp">
<com.makeramen.roundedimageview.RoundedImageView
android:id="@+id/iv_7"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/image7"
app:riv_corner_radius="10dp" />
</androidx.cardview.widget.CardView>
其中,app:cardCornerRadius
设置CardView的圆角半径,app:cardElevation
设置CardView的阴影大小;app:riv_corner_radius
设置RoundImageView的圆角半径。
四、响应点击事件
进行业务中,需要对ImageView进行点击事件处理。使用setOnclickListener
方法实现点击事件处理。
iv_1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//处理点击事件
}
});
五、动画效果
可以通过Animation
实现图片的动画效果。
1.平移动画
让图片在X、Y方向移动。
<ImageView
android:id="@+id/iv_8"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/image8" />
xml文件中设置动画效果。
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="1000"
android:fromXDelta="0"
android:fromYDelta="0"
android:toXDelta="200"
android:toYDelta="200" />
代码中添加动画效果。
// 加载XML动画设置文件
Animation animation = AnimationUtils.loadAnimation(this,
R.anim.translate);
// 启动动画
iv_8.startAnimation(animation);
2.旋转动画
基于X、Y、Z轴对图片进行旋转动画。
<ImageView
android:id="@+id/iv_9"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/image9" />
xml文件中设置动画效果。
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
android:fromDegrees="0"
android:interpolator="@android:anim/decelerate_interpolator"
android:pivotX="50%"
android:pivotY="50%"
android:repeatCount="-1"
android:toDegrees="360" />
代码中添加动画效果。
// 加载XML动画设置文件
Animation animation = AnimationUtils.loadAnimation(this,
R.anim.rotate);
// 启动动画
iv_9.startAnimation(animation);
3.缩放动画
让图片在X、Y方向缩放。
<ImageView
android:id="@+id/iv_10"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/image10" />
xml文件中设置动画效果。
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="1000"
android:fromXScale="1"
android:fromYScale="1"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="2"
android:toYScale="2" />
代码中添加动画效果。
// 加载XML动画设置文件
Animation animation = AnimationUtils.loadAnimation(this,
R.anim.scale);
// 启动动画
iv_10.startAnimation(animation);
六、总结
以上就是Android Studio中ImageView的一些常见用法,涉及到图片的加载、缩放、圆角、点击事件、动画和效果等方面。