资源简介
android 仿微信头像裁剪,中间的裁剪框 是圆形或者方形,支持手势双击缩放,多手指移动缩放,移动图片
代码片段和文件信息
package com.yjs.android.view.imageview;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.RectF;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.util.AttributeSet;
import android.view.GestureDetector;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.view.MotionEvent;
import android.view.ScaleGestureDetector;
import android.view.View;
import com.jobs.lib_v1.device.DeviceUtil;
import com.yjs.android.R;
import com.yjs.android.utils.TextureSizeUtils;
/**
* 原作者地址:http://blog.csdn.net/maosidiaoxian/article/details/50828664
* 2018-02-01
* 截图组件
* modified by 2019-10-30
* 修改如下:
* @see #drawRectangleOrCircle(Canvas) 采用PorterDuffXfermode来画图片上的遮罩。
* @see #clip() 不论是圆形框还是方形框,截图都是方形图片数据,同样采用PorterDuffXfermode来截图的,比之前
* 计算缩放比例值更可靠一样。
* @see #onTouch(View MotionEvent) [286行] 解决了之前一个问题,由于缩放比例是float所以计算有偏差,导致
* 比较大小不准,会影响图片滑动的便宜距离。
*
*
*/
public class ClipImageView extends android.support.v7.widget.AppCompatImageView implements
ScaleGestureDetector.OnScaleGestureListener View.OnTouchListener {
private final Paint mPaint;
private final int mMaskColor;
private int mAspectX;
private int mAspectY;
private final int mClipPadding;
private float mScaleMax = 4.0f;
private float mScaleMin = 2.0f;
/**
* 初始化时的缩放比例
*/
private float mInitScale = 1.0f;
/**
* 用于存放矩阵
*/
private final float[] mMatrixValues = new float[9];
/**
* 缩放的手势检查
*/
private ScaleGestureDetector mScaleGestureDetector;
private final Matrix mScaleMatrix = new Matrix();
/**
* 用于双击
*/
private final GestureDetector mGestureDetector;
private boolean isAutoScale;
private float mLastX;
private float mLastY;
private boolean isCanDrag;
private int lastPointerCount;
private final RectF mClipBorder = new RectF();
private final boolean mDrawCircleFlag;
public ClipImageView(Context context) {
this(context null);
}
public ClipImageView(Context context AttributeSet attrs) {
super(context attrs);
//不改变原图的大小,从ImageView的左上角开始绘制原图, 原图超过ImageView的部分作裁剪处理 2018-02-02
setScaleType(ScaleType.MATRIX);
mGestureDetector = new GestureDetector(context
new SimpleOnGestureListener() {
@Override
public boolean onDoubleTap(MotionEvent e) {
if (isAutoScale)
return true;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-12-04 17:28 ClipImageView\
文件 635 2019-12-04 17:39 ClipImageView\attrs.xm
文件 20857 2019-12-04 17:27 ClipImageView\ClipImageView.java
- 上一篇:通过JSP实现 图片上传
- 下一篇:JDBCUtils所需jar包
相关资源
- 基于 JSP/Servlet 的头像设置功能实现
- javadbf.jar修正数据和表头的乱码问题
- Android USB摄像头源码
- javaWeb头像上传功能
- android列表当中播放视频以及实现全屏
- android自定义相机 支持自动聚焦 闪光
- Android 调用前摄像头拍照存储,根据打
- Javaopencv打开窗体显示摄像头
- Android USB 摄像头 Camera
- Android系统下选择图片及裁剪
- javaweb调用摄像头demo
- 一头扎进 centos7 视频教程 java1234出品
- android 剪刀石头布程序
- 活体检测人脸验证张嘴摇头
- 调用摄像头拍摄一段视频并上传到服
- android使用手机摄像头.zip
- html5实现摄像头拍照并使用java进行照
- jsp上传头像
- android实现修改头像和上传功能
- 有关Android中从图库或拍照获取头像并
- Android前置摄像头预览并检测人脸,获
- java 程序换头像
- Android手机摄像头采集图片上传pc显示
- Android实时预览摄像头、绘制浮层
- java如何生成可变表头的excel
- 头像的选择截取、上传和Demo
- SWT表格管理类(包括表头排序,隔行
- Android 通过摄像头检测心率
- jsp页面实现对摄像头的调用 能录取图
- 今日头条飞鱼CRM接口,金数据推广接
评论
共有 条评论