android matrix 实现点击旋转,Android中利用matrix 控制图片的旋转、缩放、移动

本文主要讲解利用android中Matrix控制图形的旋转缩放移动,具体参见一下代码:

/**

* 使用矩阵控制图片移动、缩放、旋转

*/

public class CommonImgEffectView extends View {

private Context context ;

private Bitmap mainBmp , controlBmp ;

private int mainBmpWidth , mainBmpHeight , controlBmpWidth , controlBmpHeight ;

private Matrix matrix ;

private float [] srcPs , dstPs ;

private RectF srcRect , dstRect ;

private Paint paint ,paintRect , paintFrame;

private float deltaX = 0, deltaY = 0; //位移值

private float scaleValue = 1; //缩放值

private Point lastPoint ;

private Point prePivot , lastPivot;

private float preDegree , lastDegree ;

private short currentSelectedPointindex;        //当前操作点击点

private Point symmetricPoint  = new Point();    //当前操作点对称点

/**

* 图片操作类型

*/

public static final int OPER_DEFAULT = -1;      //默认

public static final int OPER_TRANSLATE = 0;     //移动

public static final int OPER_SCALE = 1;         //缩放

public static final int OPER_ROTATE = 2;        //旋转

public static final int OPER_SELECTED = 3;      //选择

public int lastOper = OPER_DEFAULT;

/* 图片控制点

* 0---1---2

* |       |

* 7   8   3

* |       |

* 6---5---4

*/

public static final int CTR_NONE = -1;

public static final int CTR_LEFT_TOP = 0;

public static final int CTR_MID_TOP = 1;

public static final int CTR_RIGHT_TOP = 2;

public static final int CTR_RIGHT_MID = 3;

public static final int CTR_RIGHT_BOTTOM = 4;

public static final int CTR_MID_BOTTOM = 5;

public static final int CTR_LEFT_BOTTOM = 6;

public static final int CTR_LEFT_MID = 7;

public static final int CTR_MID_MID = 8;

public int current_ctr = CTR_NONE;

public CommonImgEffectView(Context context){

super(context);

this.context = context ;

}

public CommonImgEffectView(Context context, AttributeSet attrs) {

super(context, attrs);

this.context = context ;

initData();

}

/**

* 初始化数据

* @author 张进

*/

private void initData(){

mainBmp = BitmapFactory.decodeResource(this.context.getRes

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值