资源简介
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包
相关资源
- delphi xe5 android 调用照相机摄像头拍照
- java中画带箭头的线
- Android双列滑动表格(双表头不动)
- Android手机通过otg线外接usb摄像头
- PHP头像上传预览剪切组件 v2.11.rar
- Android图片上传头像裁切+原图原样
- android开发摄像头实现前置后置切换
- AndroidUSBCamera.zip
- 大华摄像头Demo
- Android驱动USB摄像头源码
- 超高仿今日头条 新闻客户端 最终版
- android 高仿 频道管理----网易、今日头
- 高仿今日头条 网易 源码
- creator实现调用android相机相册,并实现
- Android 上传头像自定义剪切、平移,缩
- 疯狂android讲义合金弹头完整yuan代码
- Android 测试上传头像到服务器
- Android 仿今日头条频道管理 全GridVie
- CameraPhotoVideo
- 安卓手机摄像头转给电脑用androidCam
- DroidCam android手机摄像头
- Qt for Android 调用原生系统摄像头进行
- 高仿今日头条android客户端源码
- java和 js实现图片上传和裁剪
- Android版实现用摄像头拍照完整代码
- Android 实现自定义Camera和前后置摄像头
- DroidCamX 6.4.8 可调亮度对比度android 8
- 互联网公司测试工程师测试开发工程
- 基于Java代码的USB摄像头采集与显示
- 合金弹头 java版
评论
共有 条评论