android自定义矩形框,Android自定义View实现可拖拽缩放的矩形框

本文实例为大家分享了Android自定义View拖拽缩放矩形框的具体代码,供大家参考,具体内容如下

在开发项目中,需要一个矩形框来实现截屏功能,并且还需要可以任意拖拽和缩放,这就需要自定义View来实现了,具体功能如下:

1.自定义View

package com.xinrui.screenshot.view;

import android.content.Context;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.Paint;

import android.graphics.RectF;

import android.support.annotation.Nullable;

import android.util.AttributeSet;

import android.util.Log;

import android.util.TypedValue;

import android.view.MotionEvent;

import android.view.View;

public class CropRectView extends View {

// 绘制 损害框和损害名称

private Paint mPaint;

private RectF mRectF;

// 边缘字体

// private BorderedText mBorderedText;

// 标题 或 名字

private String mTitle;

// 概率

private float mConfidence;

// 矩形框 corner 的角度:直角、圆角

private int mCornerAngle;

//直角 默认

public static final int RIGHT_CORNER = 0;

//圆角

public static final int ROUND_CORNER = 1;

// Remove Rect

private int MODE;

private static final int MODE_OUTSIDE = 0x000000aa;/*170*/

private static final int MODE_INSIDE = 0x000000bb;/*187*/

private static final int MODE_POINT = 0X000000cc;/*204*/

private static final int MODE_ILLEGAL = 0X000000dd;/*221*/

private float startX;/*start X location*/

private float startY;/*start Y location*/

private float endX;/*end X location*/

private float endY;/*end Y location*/

private float currentX;/*X coordinate values while finger press*/

private float currentY;/*Y coordinate values while finger press*/

private float memoryX;/*the last time the coordinate values of X*/

private float memoryY;/*the last time the coordinate values of Y*/

private float mCoverWidth;/*width of selection box*/

private float mCoverHeight;/*height of selection box*/

private static final int ACCURACY = 100;/*touch accuracy*/

private int pointPosition;/*vertex of a rectangle*/

private static final float minWidth = 100.0f;/*the minimum width of the rectangle*/

private static final float minHeight = 200.0f;/*the minimum height of the rectangle*/

private onLocationListener mLocationListener;/*listen to the Rect */

private static final float EDGE_WIDTH = 1.8f;

public MoveAndCropRectView(Context context) {

this(context, null);

}

public MoveAndCropRectView(Context context, @Nullable AttributeSet attrs) {

this(context, attrs, 0);

}

public MoveAndCropRectView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {

super(context, attrs, defStyleAttr);

initDatas(context);

}

priv

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值