Android 实现最新版QQ图像裁剪功能
这是依据翔神那篇高仿微信图像截取改的 能够先去看 Android 高仿微信头像截取 打造不一样的自己定义控件 这篇文章。
眼下还有个小问题。就是截取成圆形图片之后 会有黑色的边框填充。不知道怎么解决。知道怎么解决的大神麻烦告知一声。
改动ClipImageBorderView
@Override
protected 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的bitmap Paint 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图像裁剪功能的更多相关文章
- 用JQuery仿造QQ头像裁剪功能
最近工作真心忙碌,几乎没时间写博客.今天趁周末来仿一个QQ头像裁剪功能插件.效果如下: 所有文件都可在我的Github上下载,从头到尾从简到繁按步骤一共分了9个HTML文件,每个步骤文件里的注释都写的 ...
- android之照相、相冊裁剪功能的实现过程
今天无聊做了一些照相.相冊裁剪功能,希望能够帮到大家! 不多说了,贴代码实际一点: 首先是XML: <ImageButton android:id="@+id/imageButton1 ...
- Android学习之仿QQ側滑功能的实现
如今项目越来越多的应用了滑动删除的功能,Android本来遵循的是长按删除,IOS定制的是滑动删除,不可否认滑动删除确实在客户体验上要好一点,所以看了非常多关于仿QQ滑动删除的样例,还是感觉代码家的A ...
- 【开源】canvas图像裁剪、压缩、旋转
前言 前段时间遇到了一个移动端对图像进行裁剪.压缩.旋转的需求. 考虑到已有各轮子的契合度都不高,于是自己重新造了一个轮子. 关于图像裁剪.压缩 在HTML5时代,canvas的功能已经非常强大了,可 ...
- canvas图像裁剪、压缩、旋转
转载于:http://www.cnblogs.com/dailc/p/7843204.html 前言 前段时间遇到了一个移动端对图像进行裁剪.压缩.旋转的需求.考虑到已有各轮子的契合度都不高,于是自己 ...
- Android实现类似换QQ头像功能(图片裁剪)
现在几乎所有的App都有用户登录模块,需要设置用户头像,而关于用户头像部分无疑也是比较头疼的,目前大部分应用的头像部分会有两种方式:一种是利用系统的裁剪功能去获取用户头像,一种就是获取到图片或者照片的 ...
- [Android]仿新版QQ的tab下面拖拽标记为已读的效果
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/4182929.html 可拖拽的红点,(仿新版QQ,tab下面拖 ...
- Android端IM应用中的@人功能实现:仿微博、QQ、微信,零入侵、高可扩展
本文由“猫爸iYao”原创分享,感谢作者. 1.引言 最近有个需求:评论@人(没错,就是IM聊天或者微博APP里的@人功能),就像下图这样: ▲ 微信群聊界面里的@人功能 ▲ QQ群聊界面里 ...
- Android SDK4/5/6/7,相册、拍照及裁剪功能及遇见的坑
保存照片和视频到系统相册显示- http://blog.csdn.net/chendong_/article/details/52290329 Android 7.0 之拍照与图片裁剪适配-http: ...
随机推荐
- WinForm无边框窗体移动方法
C#WinForm无边框窗体移动方法.模仿鼠标单击标题栏移动窗体位置 这里介绍俩种办法 方法一:直接通过修改窗体位置从而达到移动窗体的效果 方法二:直接伪装发送单击任务栏消息,让应用程序误以为单击任务 ...
- 【Hello 2018 C】Party Lemonade
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 处理出凑够2^j最少需要花费多少钱. 即试着把第i种物品买2^(j-i)个,看看会不会更便宜 记录在huafei[0..31]中 然 ...
- web显示winform,web打开winform,IE打开winform
前言:为什么要用ie打开winform 个人觉得,winform部署client太麻烦如金蝶··用友,winfrom打补丁太麻烦,加入新功能再部署很费时间:于是就想为什么不能用IE打开呢?这样就不须要 ...
- TCP/IP图解学习总结(二)
注意:这里的第n层是依照OSI协议来的 I 网桥--2层交换机.数据链路层面上链接两个网络的设备.它可以识别数据链路层中的数据帧. II 路由器-3层交换机.网络层面上连接两个网络,并对分组报文 ...
- hdu 1233 还是畅通project (克鲁斯卡尔裸题)
还是畅通project Time Limit: 4000/2000 MS (Java/Others) M ...
- java.lang.ClassNotFoundException: org.springframework.web.content.ContextLoaderListener
1.错误描写叙述 严重: Error configuring application listener of class org.springframework.web.content.Context ...
- jQuery03
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...
- Android开发经验一判断当前屏幕是全屏还是非全屏
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView ...
- weblogic安装(无界面静默安装)
一.环境准备 1. 用户准备 Generic通用版weblogic不能用ROOT用户安装,如无其他用户需先创建用户,创建用户步骤此处略过 2. 下载weblogic 在官网下载weblogic,将下载 ...
- node 内存溢出
遇到这个问题的人可以更快解决 再复制写一篇 利于百度搜索 坑爹的node 内存溢出 react开发项目 安装一个插件依赖 ,然后就报错了 报错如下(自己的没有截图出来 这是从别人的截图---报错基本 ...