首先将ImageView的scaleType设置位matrix
<ImageView
android:background="@color/light_blue_200"
android:id="@+id/image"
android:layout_width="200dp"
android:layout_height="200dp"
android:scaleType="matrix"
android:src="@drawable/robot"/>
初始效果:
利用Matrix对ImageView进行位移操作:
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Rect bounds = img.getDrawable().getBounds();
Matrix matrix = img.getImageMatrix();
//位移
matrix.postTranslate( bounds.width() / 8, bounds.height() / 8);
img.animateTransform(matrix);
}
});
利用Matrix对ImageView进行缩放操作:
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Matrix matrix = img.getImageMatrix();
//缩放
matrix.postScale(1.1f, 1.1f);
img.animateTransform(matrix);
}
});
利用Matrix对ImageView进行旋转操作:
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Matrix matrix = img.getImageMatrix();
//旋转90°
matrix.postRotate( 90.0f, bounds.width() / 2, bounds.height() / 2);
img.animateTransform(matrix);
}
});
利用Matrix对ImageView进行错切操作:
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Matrix matrix = img.getImageMatrix();
//错切
matrix.postSkew(1f, 0f);
img.animateTransform(matrix);
}
借鉴了以下优秀的帖子: