最近发现一个非常好的 裁剪器,SimpleCropView. 满足各种需求、据此记录。

Github:SimpleCropView





1.支持各种比例的裁剪



项目有这么一个需求,定义好裁剪框大小、不允许改变大小、并且在图片范围类移动,并且裁剪。

所以小小的改动了如下:

在初始化CropView的时候、加上这个几个属性

mCropView = (CropImageView) findViewById(R.id.cropImageView);mCropView.setMinFrameSizeInDp(100);mCropView.setHandleShowMode(CropImageView.ShowMode.NOT_SHOW);   //不显示点mCropView.setGuideShowMode(CropImageView.ShowMode.NOT_SHOW);    //不显示线(内部虚线)mCropView.setmIsScaling(false);      //自定义一个属性,不支持缩放


然后在到CropImageView源码中阻止缩放手势、应为在初始化的时候加了一个 boolean mIsScaling变量标识。

在onMove方法中、有对应的 内容、左上、右上、左下、右下,4个触摸点屏蔽,当然这里最好不要屏蔽代码(这样也可以,只是太暴力 )、我们可以用mIsScaling 标识列来判别,是否执行.

private void onMove(MotionEvent e) {    float diffX = e.getX() - mLastX;    float diffY = e.getY() - mLastY;    switch (mTouchArea) {        case CENTER:            moveFrame(diffX, diffY);            break;        case LEFT_TOP:            moveHandleLT(diffX, diffY);            break;        case RIGHT_TOP:            moveHandleRT(diffX, diffY);            break;        case LEFT_BOTTOM:            moveHandleLB(diffX, diffY);            break;        case RIGHT_BOTTOM:            moveHandleRB(diffX, diffY);            break;        case OUT_OF_BOUNDS:            break;    }    invalidate();    mLastX = e.getX();    mLastY = e.getY();}

在对应的moveHandleLt(diffX,diffY)... 的方法 第一行 中加上判断就ok。

private void moveHandleLT(float diffX, float diffY) {    if(!mIsScaling)return;    if (mCropMode == CropMode.RATIO_FREE) {        mFrameRect.left += diffX;        mFrameRect.top += diffY;        if (isWidthTooSmall()) {            float offsetX = mMinFrameSize - getFrameW();            mFrameRect.left -= offsetX;        }        if (isHeightTooSmall()) {            float offsetY = mMinFrameSize - getFrameH();            mFrameRect.top -= offsetY;        }        checkScaleBounds();

别忘记有4个方法。.....

传送门:SimpleCropView源码、APk安装包、不支持缩放改动

更多相关文章

  1. android:windowSoftInputMode属性详解以及editText监听键盘回车
  2. SQLite
  3. Android在标准linux基础上对休眠唤醒的实现(二)
  4. Android屏幕截图之View方法
  5. Android(安卓)Asynchronous Http Client-Android异步网络请求客
  6. android之蓝牙开发续(自动配对)
  7. Android启动画面的实现方法
  8. Android培训班(9)
  9. android 一键锁屏 开发

随机推荐

  1. SQL2005、SQL2008允许远程连接的配置说明
  2. SQL语句计算两个日期之间有多少个工作日
  3. 解决SQLServer远程连接失败的问题
  4. 实例讲解SQL Server加密功能
  5. SQL如何实现MYSQL的递归查询
  6. sql server建库、建表、建约束技巧
  7. sql server 2000 数据库自动备份设置方法
  8. sql server创建临时表的两种写法和删除临
  9. 如何优化SQL语句(全)
  10. sql server 2000中禁止创建表(权限设置方