这只是一个给大家学习参考的例子而已,还是有许多问题存在的。看代码吧,注释已经在里面了。
import java.io.IOException;
import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.PaintFlagsDrawFilter;
import android.graphics.Path;
import android.graphics.PointF;
import android.util.AttributeSet;
import android.util.FloatMath;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
//自定义类继承View
@SuppressLint({"NewApi", "DrawAllocation" })
public class CustomFourImageView extends View {
//用于判断只在第一次绘制才初始化一些资源数据
private int state = -1;
private final int START = 1;
private Bitmap topImage;
private Bitmap bottomImage;
private Bitmap leftImage;
private Bitmap rightImage;
private Paint paint;
private Matrix topMatrix;
private Matrix bottomMatrix;
private Matrix leftMatrix;
private Matrix rightMatrix;
private float padding = 14;//边框的大小(实则为10px)
private Path top;
private Path bottom;
private Path left;
private Path right;
/** 记录是拖拉照片模式还是放大缩小照片模式 */
private int mode = 0;// 初始状态
/** 拖拉照片模式 */
private static final int MODE_DRAG = 1;
/** 放大缩小照片模式 */
private static final int MODE_ZOOM = 2;
/** 用于记录开始时候的坐标位置 */
private PointF startPoint = new PointF();
/** 两个手指的开始距离 */
private float startDis;
/** 两个手指的中间点 */
private PointF midPoint;
private static int TYPE = 0;
public CustomFourImageView(Context context, AttributeSet attrs,int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public CustomFourImageView(Context context, AttributeSet