Android 实现最新版QQ图像裁剪功能
这是根据翔神那篇高仿微信图像截取改的 可以先去看 Android 高仿微信头像截取 打造不一样的自定义控件 这篇文章。
目前还有个小问题,就是截取成圆形图片之后 会有黑色的边框填充。不知道怎么解决。知道怎么解决的大神麻烦告知一声。
修改ClipImageBorderView
@Overrideprotected void onDraw(Canvas canvas){super.onDraw(canvas);// // 计算矩形区域的宽度// mWidth = getWidth() - 2 * mHorizontalPadding;// // 计算距离屏幕垂直边界 的边距// mVerticalPadding = (getHeight() - mWidth) / 2;// mPaint.setColor(Color.parseColor("#aa000000"));// mPaint.setStyle(Style.FILL);// // 绘制左边1// canvas.drawRect(0, 0, mHorizontalPadding, getHeight(), mPaint);// // 绘制右边2// canvas.drawRect(getWidth() - mHorizontalPadding, 0, getWidth(),// getHeight(), mPaint);// // 绘制上边3// canvas.drawRect(mHorizontalPadding, 0, getWidth() -// mHorizontalPadding, mVerticalPadding, mPaint);// // 绘制下边4// canvas.drawRect(mHorizontalPadding, getHeight() - mVerticalPadding,// getWidth() - mHorizontalPadding, getHeight(), mPaint);// // 绘制外边框// mPaint.setColor(mBorderColor);// mPaint.setStrokeWidth(mBorderWidth);// mPaint.setStyle(Style.STROKE);// canvas.drawRect(mHorizontalPadding, mVerticalPadding, getWidth() -// mHorizontalPadding, getHeight() - mVerticalPadding, mPaint);if (rf == null || rf.isEmpty()){r = new Rect(0, 0, getWidth(), getHeight());rf = new RectF(r);}mPaint.setStyle(Style.STROKE);// 在imageview上面画入背景和 圆形int sc = canvas.saveLayer(rf, null, Canvas.MATRIX_SAVE_FLAG | Canvas.CLIP_SAVE_FLAG | Canvas.HAS_ALPHA_LAYER_SAVE_FLAG | Canvas.FULL_COLOR_LAYER_SAVE_FLAG | Canvas.CLIP_TO_LAYER_SAVE_FLAG | Canvas.ALL_SAVE_FLAG);mPaint.setColor(Color.parseColor("#aa000000"));mPaint.setStyle(Style.FILL);canvas.drawRect(r, mPaint);mPaint.setXfermode(cur_xfermode);// mPaint.setStyle(Style.STROKE);// 绘制圆形canvas.drawCircle(getWidth() / 2, getHeight() / 2, mRadius, mPaint);// 绘制边框canvas.drawCircle(getWidth() / 2, getHeight() / 2, mRadius, mBoderPaint);canvas.restoreToCount(sc);mPaint.setXfermode(null);}
修改 ClipZoomImageView
public Bitmap onClip(){// 获取imageview的bitmapPaint paint = new Paint();invalidate();setDrawingCacheEnabled(true);Bitmap bitmap = getDrawingCache().copy(getDrawingCache().getConfig(), false);setDrawingCacheEnabled(false);// 创建你要截取的位图 Bitmap bitmap2 = Bitmap.createBitmap(2 * mRadius, 2 * mRadius, Config.ARGB_8888);Canvas canvas = new Canvas(bitmap2);canvas.drawRoundRect(new RectF(0, 0, 2 * mRadius, 2 * mRadius), mRadius, mRadius, paint);paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));RectF dst = new RectF(-bitmap.getWidth() / 2 + mRadius, -getHeight() / 2 + mRadius, bitmap.getWidth() - bitmap.getWidth() / 2 + mRadius, getHeight() - getHeight() / 2 + mRadius);canvas.drawBitmap(bitmap, null, dst, paint);return bitmap2;}
更改后的源码下载
Android 实现最新版QQ图像裁剪功能相关推荐
- 如何在Android手机中开发QQ账户登陆功能的应用
2019独角兽企业重金招聘Python工程师标准>>> 背景 OAUTH 开发授权协议,为用户资源的授权提供了一个安全开放而又简易的标准.可以使用第三方的账户登陆另一个方的 应用或服 ...
- 手把手教你集成华为Image Kit图像裁剪功能
前言 在我们拍摄完一张照片后,为了让照片更好看.比例更完美经常会裁剪掉多余的部分.华为Image Kit图片裁剪功能给您提供设置裁剪比例.设置裁剪图形.图片旋转等一系列便捷的操作. 应用场景 我们最常 ...
- Android学习之仿QQ側滑功能的实现
如今项目越来越多的应用了滑动删除的功能,Android本来遵循的是长按删除,IOS定制的是滑动删除,不可否认滑动删除确实在客户体验上要好一点,所以看了非常多关于仿QQ滑动删除的样例,还是感觉代码家的A ...
- 新版qq新增的功能(屏幕录制 屏幕翻译 屏幕文字识别 屏幕截图)
后来发现qq更新后很多功能都有,例如屏幕录制 屏幕翻译 屏幕文字识别 屏幕截图,这样子仅仅一个qq就可以起到多个软件的作用,我也是无意间发现的,此处给大家分享一下,嘻嘻 qq快捷键总结:(敲黑板) c ...
- Android 仿微信 QQ 图片裁剪,赶紧收藏起来!
在正文之前,先公布下周三的送书中奖名单,点赞前15名为: 码不停蹄 િ?ી.zdxོ.gaolhjy.C.Aiden_ryan.进进.WhenSun .明($?.啊鑫.久伴.街 景 -.小石头.纸.冯 ...
- Jcrop是一个功能强大的图像裁剪引擎
Jcrop是一个功能强大的图像裁剪引擎jQuery的. 它的设计使开发人员可以很容易地直接集成了先进的图像裁剪功能集成到任何基于Web的应用程序在不牺牲动力和灵活性(或编码,测试和调试的星期).Jcr ...
- Android 图片裁剪功能实现详解(类似QQ自定义头像裁剪)
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://mzh3344258.blog.51cto.com/1823534/808837 ...
- android布局管理器模仿qq登录效果,Android程序开发仿新版QQ锁屏下弹窗功能
新版的qq,可以在锁屏下弹窗显示qq消息,正好目前在做的项目也需要这一功能.经过各种试验和资料查找,终于实现,过程不难,但是却有一些地方需要注意. 下面是实现过程. 1.使用Activity,而不是V ...
- android 仿微信头像裁剪,Android仿微信QQ设置图形头像裁剪功能
最近在做毕业设计,想有一个功能和QQ一样可以裁剪头像并设置圆形头像,额,这是设计狮的一种潮流. 而纵观现在主流的APP,只要有用户系统这个功能,这个需求一般都是在(bu)劫(de)难(bu)逃(xue ...
最新文章
- 尺度空间理论与图像金字塔(二)
- 【Java 泛型】泛型用法 ( 泛型类用法 | 泛型方法用法 | 泛型通配符 ? | 泛型安全检查 )
- 如何用视频云技术,搞一个爆红的 “反应视频” 项目?
- Redis 通配符批量删除key
- linux 离线安装中文,linux离线安装及配置redis-Go语言中文社区
- Feign Hystrix微服务调用Session传播
- 使用Directory.EnumerateFiles进行批处理
- Docker 概念-1
- Ubuntu源码安装Nginx
- Web服务中延时对QoE(体验质量)的影响
- 第45届ICPC 昆明站 临时模板补充
- Zabbix学习(十七)zabbix low-level discover zabbix批量部署必备
- linux svn服务器同步,Linux服务器实现SVN与WEB同步解决方案
- 不同类型的Syslinux 引导
- 日常开单送货VBA模块
- 拳头的国人动画师,是这样让《英雄联盟》里的角色变成“戏精”的
- 中值滤波Median filtering
- 网络——路由进阶与安全
- PreTranslateMessage和TranslateMessage区别
- Image Translation for Medical Image Generation Ischemic Stroke Lesion Segmentation——论文翻译