Android 仿微信显示的聊天照片
2016-08-20 17:18
323 查看
Android 仿微信显示的聊天照片
Android 仿微信显示的聊天照片,效果如下图所示:
![](http://img.blog.csdn.net/20160820170327950)
这种显示的样式就是和微信的显示照片的样式是一样的,微信的实现我不知道是否和我一样,今天我来和大家介绍一下我的实现方法:
实现思路:照片先在Imageview展示照片的全部,然后再处理照片最终显示成这样,在实际实现中,照片有的是本地照片有的是网络照片,如果是网络照片的话,我们需要在照片加载好了过后再去处理照片,遇到了这个难题,我采取了去判断Imageview是否能拿到已经显示的照片来进行判断是否对照片进行处理,如果Imageview没有拿到照片,我就会通过Handler来消息通知再次去触发照片处理的方法,直到照片加载完成。
废话不多说,代码献上,供大家参考,学习,如果大家有什么好方法希望可以一起探讨:
Android 仿微信显示的聊天照片,效果如下图所示:
这种显示的样式就是和微信的显示照片的样式是一样的,微信的实现我不知道是否和我一样,今天我来和大家介绍一下我的实现方法:
实现思路:照片先在Imageview展示照片的全部,然后再处理照片最终显示成这样,在实际实现中,照片有的是本地照片有的是网络照片,如果是网络照片的话,我们需要在照片加载好了过后再去处理照片,遇到了这个难题,我采取了去判断Imageview是否能拿到已经显示的照片来进行判断是否对照片进行处理,如果Imageview没有拿到照片,我就会通过Handler来消息通知再次去触发照片处理的方法,直到照片加载完成。
废话不多说,代码献上,供大家参考,学习,如果大家有什么好方法希望可以一起探讨:
/*** * //IM聊天照片设置为裁剪后显示的照片 * @param imageView 照片显示的控件 * @param pointNineImage R.drawable.chat_others_up .9的图 */ private void showImage(final ImageView imageView, final int pointNineImage) { new Thread(new Runnable() { @Override public void run() { runOnUiThread(new Runnable() { @Override public void run() { imageView.setDrawingCacheEnabled(true); imageView.buildDrawingCache(); Bitmap bitmap_bg = BitmapFactory.decodeResource(getResources(), pointNineImage); Bitmap bitmap_in = imageView.getDrawingCache(); if (bitmap_bg != null && bitmap_in != null) { final Bitmap bp = getRoundCornerImage(imageView.getWidth(), imageView.getHeight(), bitmap_bg, bitmap_in); final Bitmap bp2 = getShardImage(imageView.getWidth(), imageView.getHeight(), bitmap_bg, bp); imageView.setImageBitmap(bp2); } else { //如果照片没有设置好,再发通知重新设置,直到照片设置完成 android.os.Message message = new android.os.Message(); message.obj = imageView; message.arg1 = pointNineImage; setPicHandler.sendMessageAtTime(message, 100); } imageView.setDrawingCacheEnabled(false); } }); } }).start(); } private Handler setPicHandler = new Handler() { @Override public void handleMessage(android.os.Message msg) { showImage((ImageView) msg.obj, msg.arg1); } }; public Bitmap getRoundCornerImage(int width, int height, Bitmap bitmap_bg, Bitmap bitmap_in) { Bitmap roundConcerImage = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(roundConcerImage); Paint paint = new Paint(); Rect rect = new Rect(0, 0, width, height); Rect rectF = new Rect(0, 0, bitmap_in.getWidth(), bitmap_in.getHeight()); paint.setAntiAlias(true); NinePatch patch = new NinePatch(bitmap_bg, bitmap_bg.getNinePatchChunk(), null); patch.draw(canvas, rect); paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); canvas.drawBitmap(bitmap_in, rectF, rect, paint); return roundConcerImage; } public Bitmap getShardImage(int width, int height, Bitmap bitmap_bg, Bitmap bitmap_in) { Bitmap roundConcerImage = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(roundConcerImage); Paint paint = new Paint(); Rect rect = new Rect(0, 0, width, height); paint.setAntiAlias(true); NinePatch patch = new NinePatch(bitmap_bg, bitmap_bg.getNinePatchChunk(), null); patch.draw(canvas, rect); Rect rect2 = new Rect(1, 1, width - 1, height - 1); canvas.drawBitmap(bitmap_in, rect, rect2, paint); return roundConcerImage; }
相关文章推荐
- [置顶] Android实现仿微信朋友圈发布动态(拍照、图库选择、照片压缩、显示、保存、缩略图、点击缩略图删除对应文件等)附源码
- Android"挂逼"修炼之行---微信定位聊天记录中照片的位置信息插件开发详解
- android 仿微信聊天时间格式化显示
- android 仿微信聊天时间格式化显示
- android 自定义ListView显示微信聊天好友列表
- Android仿微信添加照片并且随意限制照片数量并显示缩略图界面
- Android实现仿微信朋友圈发布动态(拍照、图库选择、照片压缩、显示、保存、缩略图、点击缩略图删除对应文件等)
- Android高仿微信照片选择器+预览+显示照片
- Android 仿微信聊天时间格式化显示功能
- Android拍照后显示照片
- Android中显示照片的Exif信息
- Android仿微信气泡聊天界面设计
- android 仿微信聊天气泡效果实现思路
- Android手机导出微信聊天记录
- Android 仿微信Activity左右切换 【全局配置Activity显示动画】
- Android ListView侧滑显示操作项(仿微信消息列表)
- Android编程之仿微信显示更多文字的View
- Android编程之仿微信显示更多文字的View
- Android 仿微信Activity左右切换 【全局配置Activity显示动画】
- Android获取图片资源之——拍照后在程序中显示照片