Android中ImageCropper矩形、圆形裁剪框的实现方法-创新互联

前言

创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站制作、成都网站设计、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的苏尼特右网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

支持圆形裁剪框,裁剪后生成圆形图案。

代码基于开源项目修改,github上项目链接:https://github.com/shengge/android-crop (本地下载)

还是贴下效果图:

说一下圆形裁剪实现部分:

1.UI方面,自定义CircleHighlightView继承至HighlightView(原有的矩形裁剪框实现),直接看draw方法实现

@Override
 protected void draw(Canvas canvas) {
 canvas.save();
 Path path = new Path();
 outlinePaint.setStrokeWidth( outlineWidth);
 if(!hasFocus()) {//没焦点是,直接画一个黑色的矩形框
  outlinePaint.setColor( Color.BLACK);
  canvas.drawRect( drawRect, outlinePaint);
 }
 else {
  Rect viewDrawingRect = new Rect();
  viewContext.getDrawingRect( viewDrawingRect);
 
  //已裁剪框drawRect,算出圆的半径
  float radius = (drawRect.right - drawRect.left) / 2;
  //添加一个圆形
  path.addCircle( drawRect.left + radius, drawRect.top + radius, radius, Direction.CW);
  outlinePaint.setColor( highlightColor);
 
  //裁剪画布,path之外的区域,以outsidePaint填充
  canvas.clipPath( path, Region.Op.DIFFERENCE);
  canvas.drawRect( viewDrawingRect, outsidePaint);
 
  canvas.restore();
  //绘制圆上高亮线,这里outlinePaint定义的Paint.Style.STROKE:表示只绘制几何图形的轮廓。
  canvas.drawPath( path, outlinePaint);
  
  //当modifyMode为grow时,绘制handles,也就是那四个小圆
  if(handleMode == HandleMode.Always || (handleMode == HandleMode.Changing && modifyMode == ModifyMode.Grow)) {
  drawHandles( canvas);
  }
 }
 }

本文名称:Android中ImageCropper矩形、圆形裁剪框的实现方法-创新互联
网站链接:http://myzitong.com/article/ddhogs.html