黑马程序员技术交流社区

标题: Android仿微信朋友圈发动态功能(相册图片多选) [打印本页]

作者: 张然龙    时间: 2014-7-8 09:11
标题: Android仿微信朋友圈发动态功能(相册图片多选)
DEMO一共13个类 大约2000行代码,童鞋们耐心点看基本思路是:
1,首先从Thumbnails中把略缩图地址拿出来用GridView显示出来
2,如果没有该略缩图就找到原图地址在线程中生成略缩图然后再显示出来(这种情况非常容易发生,现在很多人喜欢删除系统Thumbnails文件夹,导致无系统略缩图可用,代码里面大量生成略缩图又是个非常耗费资源的过程,且容易造成内存溢出)
3,如果原图地址也没有则自定义显示一张图
主要实现了 进入相册多选图 或者 照相获取图片 (图片已压缩) 选择好图片后 可以左右滑动浏览大图,自由删除图片
选择相册图片或者拍照限制为9张,选择好的图片都保存在缓存中,同时保存在sd临时文件夹,图片都是小于100kb失真度较小,自己可以折中选择一个合适的值
回复即可免费下载,代码托管在华为网盘,所以下载是不需要豆子的
图片都是代码运行后的截图  测试用三星s4  not3(三星系列因为硬件问题拍照后图片需要代码设置翻转90度,不然图片会变横着)
华为p1 LG ne5测试过均没有问题
选择好图片后,安卓4.4的版本因为虚拟按钮的原因会盖住最下方的完成按钮,自己可以修改下布局.



转载自安卓巴士




附上图片:


               





源码: TestPics.rar (3.84 MB, 下载次数: 52595)



作者: free26    时间: 2014-12-24 13:11
Android仿微信朋友圈发动态功能(相册图片多选) 这个帖子 中的demo我试了 也看了下思路 有个问题  就是拍照后的图片不能显示 在log中看没有走到onActivityResult中 但是没看出来为什么  求解
作者: Ogre    时间: 2014-12-24 16:25
{:3_51:}仿朋友圈都有了,什么时候会在论坛看到仿卡牌游戏的呢
作者: ctr123123    时间: 2015-1-30 16:21
哈哈哈哈
作者: Aemy    时间: 2015-1-30 18:35
:):):):):):):)
作者: 459522344    时间: 2015-3-4 22:08
谢谢分享
作者: away    时间: 2015-3-17 10:43
free26 发表于 2014-12-24 13:11
Android仿微信朋友圈发动态功能(相册图片多选) 这个帖子 中的demo我试了 也看了下思路 有个问题  就是拍 ...

楼主做出来没有?
作者: Staray    时间: 2015-4-28 17:22
away 发表于 2015-3-17 10:43
楼主做出来没有?

这个问题是因为sd卡里面没有那个存储照相的文件夹,需要自己改一下:
PublishedActivity.java文件里面的photo()方法:

  1. public void photo() {
  2.         Intent openCameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
  3.         openCameraIntent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);

  4.         StringBuffer sDir = new StringBuffer();
  5.         if (hasSDcard()) {
  6.             sDir.append(Environment.getExternalStorageDirectory() + "/MyPicture/");
  7.         } else {
  8.             String dataPath = Environment.getRootDirectory().getPath();
  9.             sDir.append(dataPath + "/MyPicture/");
  10.         }

  11.         File fileDir = new File(sDir.toString());
  12.         if (!fileDir.exists()) {
  13.             fileDir.mkdirs();
  14.         }
  15.         File file = new File(fileDir, String.valueOf(System.currentTimeMillis()) + ".jpg");

  16.         path = file.getPath();
  17.         Uri imageUri = Uri.fromFile(file);
  18.         openCameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
  19.         startActivityForResult(openCameraIntent, TAKE_PICTURE);
  20.     }

  21.     public static boolean hasSDcard() {
  22.         String status = Environment.getExternalStorageState();
  23.         if (status.equals(Environment.MEDIA_MOUNTED)) {
  24.             return true;
  25.         } else {
  26.             return false;
  27.         }
  28.     }
复制代码


代码很简单,就不用注释了。
作者: 铁血丹心    时间: 2015-5-14 16:49
代码怎么和图片不对应啊
作者: 风衣    时间: 2015-7-6 14:37
上传的代码有吗,楼主。:loveliness:
作者: rxpaini    时间: 2015-7-28 17:03
谢谢楼主
作者: 凡_草    时间: 2015-7-31 16:27
很好,很强大
作者: 凡_草    时间: 2015-7-31 16:39
很好,很强大的
作者: chen_left    时间: 2015-8-7 10:41
dingdingding
作者: chen_left    时间: 2015-8-7 10:42
dingdingding
作者: asdf175    时间: 2015-8-10 00:05
huiofu kankan  
作者: 风衣    时间: 2015-8-11 10:17
请教一下,怎么让他可以显示视频文件,并且可以选择
作者: Easy_lee    时间: 2015-8-13 16:41
在最后发送完的时候.数据没有进行删除是怎么回事?我看楼主调用了那个detele删除的方法,但是不管用貌似.求解决方案..
作者: Easy_lee    时间: 2015-8-13 16:42
你好在吗?Android仿微信朋友圈发动态功能,这个最后再发送完毕后,调用的detele方法,貌似没起到作用,并且如果后退的话,数据依然还在.我调用了detele,不起作用,
作者: 无奈的年华ˊ    时间: 2015-8-18 10:48
看看,正需要
作者: windyvic    时间: 2015-10-23 17:25
不错啊,谢谢
作者: 马尼玛    时间: 2015-10-25 13:52
mark,mark
作者: long_Iceman    时间: 2015-11-15 14:25
我选择照片不发送,再重新进去选择照片点击完成,程序直接崩溃啊
作者: aaa123456    时间: 2015-11-17 14:08
哈对挥洒大大大大阿斯达大大大
作者: long_Iceman    时间: 2015-11-23 17:08
下载不了啊
作者: long_Iceman    时间: 2015-11-23 17:52
away 发表于 2015-3-17 10:43
楼主做出来没有?

楼主有没有解决这个问题啊
作者: long_Iceman    时间: 2015-11-23 17:53
Easy_lee 发表于 2015-8-13 16:42
你好在吗?Android仿微信朋友圈发动态功能,这个最后再发送完毕后,调用的detele方法,貌似没起到作用,并且如果 ...

楼主有没有解决这个问题啊?
作者: maomaoyuyihao    时间: 2015-12-22 10:07
获取一下哦哦哦
作者: Sky丶    时间: 2016-2-2 09:41
不回复 也有源码???
作者: kanyu    时间: 2016-3-18 09:32
顶顶顶顶顶顶顶顶顶顶顶顶
作者: zhengjiao    时间: 2016-4-1 14:44
代码和图片不一样
作者: wangchuang    时间: 2016-4-1 22:24
谢谢分享~
作者: 萌帅123    时间: 2016-4-4 15:12
666666666666666666666
作者: 传智8期    时间: 2016-4-23 10:40
求源码  我是八期的
作者: 传智8期    时间: 2016-4-23 10:43
求源码  我是八期的
作者: 传智8期    时间: 2016-4-23 10:58
拍照选取蹦了。。。。
作者: 魔绳头    时间: 2016-5-4 15:11
能用到!
作者: 纪先森    时间: 2016-5-4 22:33
谢谢分享!~~~~
作者: hi1    时间: 2016-6-16 16:44
国内外的分类为
作者: Tao580231    时间: 2016-8-3 15:46
哈哈哈哈
作者: newu    时间: 2016-8-3 21:36
仿朋友圈都有了,什么时候会在论坛看到仿卡牌游戏的呢
作者: 泪痕沉睡    时间: 2016-9-9 20:38
Android仿微信朋友圈发动态功能很好,很实用
作者: 读书可以当饭吃    时间: 2016-9-17 11:57
学习一下,收获很大
作者: loveimust    时间: 2016-9-17 12:32
谢谢分享!
作者: ゛Babyゝ    时间: 2016-9-17 14:16
可以借鉴学习一下
作者: 大治    时间: 2016-9-17 23:39
赞一个,哈哈哈!对我很有帮助
作者: 黑马豹仔    时间: 2016-9-20 10:56
66666666666
作者: awakening    时间: 2016-9-26 00:17
很好很强大    留个脚丫子
作者: 512309517    时间: 2016-11-21 10:03
顶~~~~!!!!
作者: 李查德叔叔    时间: 2016-12-8 14:24
Easy_lee 发表于 2015-8-13 16:42
你好在吗?Android仿微信朋友圈发动态功能,这个最后再发送完毕后,调用的detele方法,貌似没起到作用,并且如果 ...

你好,你这个问题解决了没?

作者: 李查德叔叔    时间: 2016-12-9 17:33
关于那个调用delete方法不起作用的问题,我采用的是 :每次进入页面就做一个判断  if(Bimp.bmp.size()>0){
            Bimp.bmp.clear();}  这样暂时解决了图片留存的问题。
作者: 这就是我和id    时间: 2016-12-13 21:07
  ︵
("\(●-●)
\ /     0\ \
  (          )"
  \__T__/
good

作者: cainiao111    时间: 2016-12-28 09:06
正需要。。。。。。。
作者: 江东美景不借人    时间: 2016-12-28 16:49
holder.selected.setImageResource(-1); 这个地方一直报错
作者: 江东美景不借人    时间: 2016-12-28 16:50
public View getView(final int position, View convertView, ViewGroup parent) {
                final Holder holder;

                if (convertView == null) {
                        holder = new Holder();
                        convertView = View.inflate(act, R.layout.item_image_grid, null);
                        holder.iv = (ImageView) convertView.findViewById(R.id.image);
                        holder.selected = (ImageView) convertView
                                        .findViewById(R.id.isselected);
                        holder.text = (TextView) convertView
                                        .findViewById(R.id.item_image_grid_text);
                        convertView.setTag(holder);
                } else {
                        holder = (Holder) convertView.getTag();
                }
                final ImageItem item = dataList.get(position);

                holder.iv.setTag(item.imagePath);
                cache.displayBmp(holder.iv, item.thumbnailPath, item.imagePath,
                                callback);
                if (item.isSelected) {
                        holder.selected.setImageResource(R.drawable.icon_data_select);  
                        holder.text.setBackgroundResource(R.drawable.bgd_relatly_line);
                } else {
                        holder.selected.setImageResource(-1);
                        holder.text.setBackgroundColor(0x00000000);
                }
作者: as642237978    时间: 2017-2-1 19:00
666666666666666666666666666666666666666666
作者: youxiongcm    时间: 2017-2-15 15:15
asdfasdfasdfasdfsfsdfasdf
作者: 三星苹果组装机    时间: 2017-3-1 00:37
hhvvvvbbbvvvv
作者: 三星苹果组装机    时间: 2017-3-1 00:37
hhvvvvbbbvvvv
作者: 三星苹果组装机    时间: 2017-3-1 00:37
hhvvvvbbbvvvv
作者: clf1    时间: 2017-5-4 14:28
感谢楼主的慷慨分享
作者: 醉方尘明月    时间: 2017-5-5 15:42
刚好要用
作者: Allen8Lee    时间: 2017-6-15 12:08
谢谢分享
作者: 王允璋黑厉害    时间: 2017-8-9 15:15
技术贴,顶一下
作者: 王允璋黑厉害    时间: 2017-8-9 15:16
技术贴,顶一下

作者: baby14    时间: 2019-1-6 13:22
多谢分享




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2