我的微信相册删除在图库删除后就再也不出现了,保存微信图片也不出现,以前不是这样的。

生命不息,奋斗不止,万事起于忽微,量变引起质变
Android 超高仿微信图片选择器
图片该这么加载
转载请标明出处:,本文出自:1、概述关于手机图片加载器,在当今像素随随便便破千万的时代,一张图片占据的内存都相当可观,作为高大尚程序猿的我们,有必要掌握图片的压缩,缓存等处理,以到达纵使你有万张照片,纵使你的像素再高,我们也能正确的显示所有的图片。当然了,单纯显示图片没撒意思,我们决定高仿一下微信的图片选择器,在此,感谢微信!本篇博客将基于以下两篇博客:
将使用我们打造的CommonAdapter作为我们例子中GridView以及ListView的适配器 将使用我们自己写的ImageLoader作为我们的图片加载的核心类如果你没看过也没关系,等看完本篇博客,可以结合以上两篇再进行充分理解一下。好了,首先贴一下效果图:动态图实在是录不出来,大家自己打开微信点击发表图片,或者聊天窗口发送图片,大致和微信的效果一样~简单描述一下:1、默认显示图片最多的文件夹图片,以及底部显示图片总数量;如上图1;2、点击底部,弹出popupWindow,popupWindow包含所有含有图片的文件夹,以及显示每个文件夹中图片数量;如上图2;注:此时Activity变暗3、选择任何文件夹,进入该文件夹图片显示,可以点击选择图片,当然了,点击已选择的图片则会取消选择;如上图3;注:选中图片变暗当然了,最重要的效果一定流畅,不能动不动OOM~~本人测试手机小米2s,图片6802张,未出现OOM异常,效果也是非常流畅,堪比图库~不过存在bug在所难免,大家可以留言说下自己发现的bug;文末会提供源码下载。好了,下面就可以代码的征程了~2、图片的列表页首先对手机中图片进行扫描,拿到图片数量最多的,直接显示在GridView上;并且扫描结束,得到一个所有包含图片的文件夹信息的List;对于文件夹信息,我们单独创建了一个Bean:package com.zhy.
public class ImageFloder
* 图片的文件夹路径
* 第一张图片的路径
private String firstImageP
* 文件夹的名称
* 图片的数量
public String getDir()
public void setDir(String dir)
this.dir =
int lastIndexOf = this.dir.lastIndexOf("/");
this.name = this.dir.substring(lastIndexOf);
public String getFirstImagePath()
return firstImageP
public void setFirstImagePath(String firstImagePath)
this.firstImagePath = firstImageP
public String getName()
public int getCount()
public void setCount(int count)
this.count =
用来存储当前文件夹的路径,当前文件夹包含多少张图片,以及第一张图片路径用于做文件夹的图标;注:文件夹的名称,我们在set文件夹的路径的时候,自动提取,仔细看下setDir这个方法。接下来就是扫描手机图片的代码了:@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DisplayMetrics outMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(outMetrics);
mScreenHeight = outMetrics.heightP
initView();
getImages();
initEvent();
* 利用ContentProvider扫描手机中的图片,此方法在运行在子线程中 完成图片的扫描,最终获得jpg最多的那个文件夹
private void getImages()
if (!Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED))
Toast.makeText(this, "暂无外部存储", Toast.LENGTH_SHORT).show();
// 显示进度条
mProgressDialog = ProgressDialog.show(this, null, "正在加载...");
new Thread(new Runnable()
public void run()
String firstImage =
Uri mImageUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
ContentResolver mContentResolver = MainActivity.this
.getContentResolver();
// 只查询jpeg和png的图片
Cursor mCursor = mContentResolver.query(mImageUri, null,
MediaStore.Images.Media.MIME_TYPE + "=? or "
+ MediaStore.Images.Media.MIME_TYPE + "=?",
new String[] { "image/jpeg", "image/png" },
MediaStore.Images.Media.DATE_MODIFIED);
Log.e("TAG", mCursor.getCount() + "");
while (mCursor.moveToNext())
// 获取图片的路径
String path = mCursor.getString(mCursor
.getColumnIndex(MediaStore.Images.Media.DATA));
Log.e("TAG", path);
// 拿到第一张图片的路径
if (firstImage == null)
firstImage =
// 获取该图片的父路径名
File parentFile = new File(path).getParentFile();
if (parentFile == null)
String dirPath = parentFile.getAbsolutePath();
ImageFloder imageFloder =
// 利用一个HashSet防止多次扫描同一个文件夹(不加这个判断,图片多起来还是相当恐怖的~~)
if (mDirPaths.contains(dirPath))
mDirPaths.add(dirPath);
// 初始化imageFloder
imageFloder = new ImageFloder();
imageFloder.setDir(dirPath);
imageFloder.setFirstImagePath(path);
int picSize = parentFile.list(new FilenameFilter()
public boolean accept(File dir, String filename)
if (filename.endsWith(".jpg")
|| filename.endsWith(".png")
|| filename.endsWith(".jpeg"))
totalCount += picS
imageFloder.setCount(picSize);
mImageFloders.add(imageFloder);
if (picSize & mPicsSize)
mPicsSize = picS
mImgDir = parentF
mCursor.close();
// 扫描完成,辅助的HashSet也就可以释放内存了
mDirPaths =
// 通知Handler扫描图片完成
mHandler.sendEmptyMessage(0x110);
}).start();
}ps:运行出现空指针的话,在81行的位置添加判断,if(parentFile.list()==null)continue , 切记~~~有些图片比较诡异~~; initView就不看了,都是些findViewById;getImages主要就是扫描图片的代码,我们开启了一个Thread进行扫描,扫描完成以后,我们得到了图片最多文件夹路径(mImgDir),手机中图片数量(totalCount);以及所有包含图片文件夹信息(mImageFloders)然后我们通过handler发送消息,在handleMessage里面:1、创建GridView的适配器,为我们的GridView设置适配器,显示图片;2、有了mImageFloders,就可以创建我们的popupWindow了看一眼我们的Handlerprivate Handler mHandler = new Handler()
public void handleMessage(android.os.Message msg)
mProgressDialog.dismiss();
//为View绑定数据
data2View();
//初始化展示文件夹的popupWindw
initListDirPopupWindw();
};可以看到分别干了上述的两件事:/**
* 为View绑定数据
private void data2View()
if (mImgDir == null)
Toast.makeText(getApplicationContext(), "擦,一张图片没扫描到",
Toast.LENGTH_SHORT).show();
mImgs = Arrays.asList(mImgDir.list());
* 可以看到文件夹的路径和图片的路径分开保存,极大的减少了内存的消耗;
mAdapter = new MyAdapter(getApplicationContext(), mImgs,
R.layout.grid_item, mImgDir.getAbsolutePath());
mGirdView.setAdapter(mAdapter);
mImageCount.setText(totalCount + "张");
};data2View就是我们当前Activity上所有的View设置数据了。看到这里还用到了一个Adapter,我们GridView的:package com.zhy.
import java.util.LinkedL
import java.util.L
import android.content.C
import android.graphics.C
import android.view.V
import android.view.View.OnClickL
import android.widget.ImageV
import com.zhy.utils.CommonA
public class MyAdapter extends CommonAdapter&String&
* 用户选择的图片,存储为图片的完整路径
public static List&String& mSelectedImage = new LinkedList&String&();
* 文件夹路径
private String mDirP
public MyAdapter(Context context, List&String& mDatas, int itemLayoutId,
String dirPath)
super(context, mDatas, itemLayoutId);
this.mDirPath = dirP
public void convert(final com.zhy.utils.ViewHolder helper, final String item)
// 设置no_pic
helper.setImageResource(R.id.id_item_image, R.drawable.pictures_no);
// 设置no_selected
helper.setImageResource(R.id.id_item_select,
R.drawable.picture_unselected);
// 设置图片
helper.setImageByUrl(R.id.id_item_image, mDirPath + "/" + item);
final ImageView mImageView = helper.getView(R.id.id_item_image);
final ImageView mSelect = helper.getView(R.id.id_item_select);
mImageView.setColorFilter(null);
// 设置ImageView的点击事件
mImageView.setOnClickListener(new OnClickListener()
// 选择,则将图片变暗,反之则反之
public void onClick(View v)
// 已经选择过该图片
if (mSelectedImage.contains(mDirPath + "/" + item))
mSelectedImage.remove(mDirPath + "/" + item);
mSelect.setImageResource(R.drawable.picture_unselected);
mImageView.setColorFilter(null);
// 未选择该图片
mSelectedImage.add(mDirPath + "/" + item);
mSelect.setImageResource(R.drawable.pictures_selected);
mImageView.setColorFilter(Color.parseColor("#"));
* 已经选择过的图片,显示出选择过的效果
if (mSelectedImage.contains(mDirPath + "/" + item))
mSelect.setImageResource(R.drawable.pictures_selected);
mImageView.setColorFilter(Color.parseColor("#"));
可以看到我们GridView的Adapter继承了我们的CommonAdapter,如果不知道CommonAdapter为何物,可以去看看万能适配器那篇博文;我们现在只需要实现convert方法:在convert中,我们设置图片,设置事件等,对于图片的变暗,我们使用的是ImageView的setColorFilter ;根据Url加载图片的操作封装在helper.setImageByUrl(view,url)中,内部使用的是我们自己定义的ImageLoader,包括错乱处理都已经封装了,图片策略我们使用的是LIFO后进先出;不清楚的可以看文章一开始说明的那两篇博文,对于CommonAdapter以及ImageLoader都有从无到有的详细打造过程;到此我们的第一个Activity的所有的任务就完成了~~~3、展现文件夹的PopupWindow现在我们要实现,点击底部的布局弹出我们的文件夹选择框,并且我们弹出框后面的Activity要变暗;不急着贴代码,我们先考虑下PopupWindow怎么用最好,我们的PopupWindow需要设置布局文件,需要初始化View,需要初始化事件,还需要和Activity交互~~那么肯定的,我们使用独立的类,这个类和Activity很相似,在里面initView(),initEvent()之类的。我们创建了一个popupWindow使用的超类:package com.zhy.
import java.util.L
import android.content.C
import android.graphics.drawable.BitmapD
import android.view.MotionE
import android.view.V
import android.view.View.OnTouchL
import android.widget.PopupW
public abstract class BasePopupWindowForListView&T& extends PopupWindow
* 布局文件的最外层View
protected View mContentV
protected C
* ListView的数据集
protected List&T& mD
public BasePopupWindowForListView(View contentView, int width, int height,
boolean focusable)
this(contentView, width, height, focusable, null);
public BasePopupWindowForListView(View contentView, int width, int height,
boolean focusable, List&T& mDatas)
this(contentView, width, height, focusable, mDatas, new Object[0]);
public BasePopupWindowForListView(View contentView, int width, int height,
boolean focusable, List&T& mDatas, Object... params)
super(contentView, width, height, focusable);
this.mContentView = contentV
context = contentView.getContext();
if (mDatas != null)
this.mDatas = mD
if (params != null && params.length & 0)
beforeInitWeNeedSomeParams(params);
setBackgroundDrawable(new BitmapDrawable());
setTouchable(true);
setOutsideTouchable(true);
setTouchInterceptor(new OnTouchListener()
public boolean onTouch(View v, MotionEvent event)
if (event.getAction() == MotionEvent.ACTION_OUTSIDE)
dismiss();
initViews();
initEvents();
protected abstract void beforeInitWeNeedSomeParams(Object... params);
public abstract void initViews();
public abstract void initEvents();
public abstract void init();
public View findViewById(int id)
return mContentView.findViewById(id);
protected static int dpToPx(Context context, int dp)
return (int) (context.getResources().getDisplayMetrics().density * dp + 0.5f);
也就是封装了一下popupWindow常用的一些设置,然后使用了类似模版方法模式,约束子类,必须实现initView,initEvent,init等方法package com.zhy.
import java.util.L
import android.view.V
import android.widget.AdapterV
import android.widget.AdapterView.OnItemClickL
import android.widget.ListV
import com.zhy.bean.ImageF
import com.zhy.utils.BasePopupWindowForListV
import com.zhy.utils.CommonA
import com.zhy.utils.ViewH
public class ListImageDirPopupWindow extends BasePopupWindowForListView&ImageFloder&
private ListView mListD
public ListImageDirPopupWindow(int width, int height,
List&ImageFloder& datas, View convertView)
super(convertView, width, height, true, datas);
public void initViews()
mListDir = (ListView) findViewById(R.id.id_list_dir);
mListDir.setAdapter(new CommonAdapter&ImageFloder&(context, mDatas,
R.layout.list_dir_item)
public void convert(ViewHolder helper, ImageFloder item)
helper.setText(R.id.id_dir_item_name, item.getName());
helper.setImageByUrl(R.id.id_dir_item_image,
item.getFirstImagePath());
helper.setText(R.id.id_dir_item_count, item.getCount() + "张");
public interface OnImageDirSelected
void selected(ImageFloder floder);
private OnImageDirSelected mImageDirS
public void setOnImageDirSelected(OnImageDirSelected mImageDirSelected)
this.mImageDirSelected = mImageDirS
public void initEvents()
mListDir.setOnItemClickListener(new OnItemClickListener()
public void onItemClick(AdapterView&?& parent, View view,
int position, long id)
if (mImageDirSelected != null)
mImageDirSelected.selected(mDatas.get(position));
public void init()
// TODO Auto-generated method stub
protected void beforeInitWeNeedSomeParams(Object... params)
// TODO Auto-generated method stub
好了,现在就是我们正在的popupWindow咯,布局文件夹主要是个ListView,所以在initView里面,我们得设置它的适配器;当然了,这里的适配器依然用我们的CommonAdapter,几行代码搞定~~然后我们需要和Activity交互,当我们点击某个文件夹的时候,外层的Activity需要改变它GridView的数据源,展示我们点击文件夹的图片;关于交互,我们从Activity的角度去看弹出框,Activity想知道什么,只想知道选择了别的文件夹来告诉我,所以我们创建一个接口OnImageDirSelected,对Activity设置回调;这里还可以这么写:就是把popupWindow的ListView公布出去,然后在Activity里面使用popupWindow.getListView(),setOnItemClickListener,这么做,个人觉得不好,耦合度太高,客户简单改下需求“这个文件夹展示,给我们换了,换成GridView”,呵呵,此时,你需要到处去修改Activity里面的代码,因为你Activity里面竟然还有个popupWindow.getListView。好了,扯多了,初始化事件的代码:@Override
public void initEvents()
mListDir.setOnItemClickListener(new OnItemClickListener()
public void onItemClick(AdapterView&?& parent, View view,
int position, long id)
if (mImageDirSelected != null)
mImageDirSelected.selected(mDatas.get(position));
}如果有人设置了回调,我们就调用;到此,整个popupWindow就出炉了,接下来就看啥时候让它展示了;4、选择不同的文件夹上面说道,当扫描图片完成,拿到包含图片的文件夹信息列表;这个列表就是我们popupWindow所需的数据,所以我们的popupWindow的初始化在handleMessage(上面贴了handler的代码)里面:在handleMessage里面调用initListDirPopupWindw/**
* 初始化展示文件夹的popupWindw
private void initListDirPopupWindw()
mListImageDirPopupWindow = new ListImageDirPopupWindow(
LayoutParams.MATCH_PARENT, (int) (mScreenHeight * 0.7),
mImageFloders, LayoutInflater.from(getApplicationContext())
.inflate(R.layout.list_dir, null));
mListImageDirPopupWindow.setOnDismissListener(new OnDismissListener()
public void onDismiss()
// 设置背景颜色变暗
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.alpha = 1.0f;
getWindow().setAttributes(lp);
// 设置选择文件夹的回调
mListImageDirPopupWindow.setOnImageDirSelected(this);
}我们初始化我们的popupWindow,设置了关闭对话框的回调,已经设置了选择不同文件夹的回调;这里仅仅是初始化,下面看我们合适将其弹出的,其实整个Activity也就一个事件,点击弹出该对话框,所以看Activity的initEvents方法:private void initEvent()
* 为底部的布局设置点击事件,弹出popupWindow
mBottomLy.setOnClickListener(new OnClickListener()
public void onClick(View v)
mListImageDirPopupWindow
.setAnimationStyle(R.style.anim_popup_dir);
mListImageDirPopupWindow.showAsDropDown(mBottomLy, 0, 0);
// 设置背景颜色变暗
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.alpha = .3f;
getWindow().setAttributes(lp);
}可以看到,我们为底部布局设置点击事件;设置popupWindow的弹出与消失的动画;已经让Activity背景变暗变亮,通过改变Window alpha实现的。变亮在弹出框消息的监听里面~~动画的文件就不贴了,大家自己看源码;popupWindow弹出了,用户此时可以选择不同的文件夹,那么现在该看选择后的回调的代码了:我们的Activity实现了该接口,直接看实现的方法: @Override
public void selected(ImageFloder floder)
mImgDir = new File(floder.getDir());
mImgs = Arrays.asList(mImgDir.list(new FilenameFilter()
public boolean accept(File dir, String filename)
if (filename.endsWith(".jpg") || filename.endsWith(".png")
|| filename.endsWith(".jpeg"))
* 可以看到文件夹的路径和图片的路径分开保存,极大的减少了内存的消耗;
mAdapter = new MyAdapter(getApplicationContext(), mImgs,
R.layout.grid_item, mImgDir.getAbsolutePath());
mGirdView.setAdapter(mAdapter);
// mAdapter.notifyDataSetChanged();
mImageCount.setText(floder.getCount() + "张");
mChooseDir.setText(floder.getName());
mListImageDirPopupWindow.dismiss();
}我们改变了GridView的适配器,以及底部的控件上的文件夹名称,文件数量等等;好了,到此结束;整篇由于篇幅原因没有贴任何布局文件,大家自己通过源码查看;在此希望大家可以通过该案例,能够去其糟粕,取其精华,学习其中值得借鉴的代码风格,不要真的当作一个例子去学习~~ps:请真机测试,反正我的模拟器扫描不到图片~ps:运行出现空指针的话,在getImages中添加判断,if(parentFile.list()==null)continue , 切记~~~具体位置,上面有说; ---------------------------------------------------------------------------------------------------------我建了一个QQ群,方便大家交流。群号:----------------------------------------------------------------------------------------------------------博主部分视频已经上线,如果你不喜欢枯燥的文本,请猛戳(初录,期待您的支持):
扫码向博主提问
量变引起质变
擅长领域:
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!专业的QQ下载站 本站非腾讯QQ官方网站
本类阅读排行
12345微信电脑客户端官方下载 微信电脑能用吗?678910
热点图文新闻
微信收藏的图片保存在哪里 教你轻松删除微信收藏的图片
导读:在微信与好友聊天过程中,遇见喜欢的图片或照片都可以收藏,在微信我的收藏中是可以看到这些图片,可是在手机照片中为什么就找不到呢?其实微信我的收藏保存的图片是在另一个地方哦!想知道在哪吗?一起来看看吧!
在微信与好友聊天过程中,遇见喜欢的图片或照片都可以收藏,在微信我的收藏中是可以看到这些图片,可是在手机照片中为什么就找不到呢?其实微信我的收藏保存的图片是在另一个地方哦!想知道在哪吗?一起来看看吧!微信收藏的图片在哪?一、在手机中打开微信,然后点击切换到右下角的【我】选项,如下图所示。二、然后点击打开【收藏】这里面就可以找到我们收藏的微信图片了,如下图所示。如果收藏的图片过多,觉得在手机中浏览不方便的话,安卓手机还可以将手机通过数据线连接电脑,然后在SD卡的tencent/MicroMsg文件夹中,也可以找到微信保存的图片。如何删除微信收藏的图片?如果微信保存的图片太多,影响存储空间的话,我们也可以手动删除这些收藏的微信图片。具体方法是在微信我的收藏中找到收藏的图片,然后长按图片,就可以看到删除选项了。此外,安卓手机用户也可以将手机连接电脑,然后在电脑中找到手机SD卡的tencent/MicroMsg文件找到,并可以批量选择删除。
出处: 作者:qqtn强柔
阅读本文后您有什么感想? 已有 0 人给出评价!魅族魅蓝note的微信图片全部删除了,再保存微信图片时,显示还是保存在以前那个微信相册,可是怎么也_百度知道
魅族魅蓝note的微信图片全部删除了,再保存微信图片时,显示还是保存在以前那个微信相册,可是怎么也
魅族魅蓝note的微信图片全部删除了,再保存微信图片时,显示还是保存在以前那个微信相册,可是怎么也找不到了。求大师解答…
我有更好的答案
打开图库,右下角有个+,点开选择要显示的图片文件后面打勾就可以了
你好,+号的都被删了,不知道怎么恢复。本来还有一个微信的…现在图片还是能保存,就是找不到在哪儿了
采纳率:55%
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。微信聊天图片保存在哪里 怎么删除_西西软件资讯
西西软件园多重安全检测下载网站、值得信赖的软件下载站!
→ 微信聊天图片保存在哪里 怎么删除
v6.5.4 官网最新版
类型:社交聊天大小:38.7M语言:中文 评分:9.3
今天西西小编使用的时候想要把里面的聊天图片收藏保存起来,但是不知道怎么弄,后来研究了下,还是挺简单的。在安装文件夹下的 图片文件里面,如果是默认路径,那就要你自己找找了!打开,登录微信帐号随意找到一张图片,长按两秒左右手机会跳出提示框,点击“保存到手机”注意下面微信出现的提示,提示上会显示图片保存的位置讯速记下上面提示的地址,然后到相当的位置查找图片微信聊天记录里的图片怎么删进入微信 点左上角的编辑 就可以删除整个联系人的聊天记录了呀?也可以进入聊天界面 删除单条记录~
(22) 西西软件园微信抢红包神器专区为您提供微信抢红包神器手机版电脑版微信抢红包软件下载,都是经过小编亲测无毒安全,大家可以放心使用使用教程.........微信自从上线发红包的功能之后就吸引了很多的用户,小编也经常能收到老板们发的红包。但更多的时候由于没有及时登录微信或因为网速手机差的客观因素错失一个个红包。可能很多人都想过,有没有什么软件能够帮助大家自动抢红包呢西西为您来提供微信抢红包神器下载。抢红包技巧确保网...
09-13 / 2.5M
推荐理由:快乐抢红包神器,正品微信抢红包软件,在保证抢红包效果的同时,也不会造成个人信息泄漏,请放心使用!快乐
01-22 / 9.8M
推荐理由:抢红包神器2016是最新的一款安卓手机抢红包软件,这款软件不仅能够自动抢红包,而且内置很多小活动,软件游
10-12 / 2.6M
推荐理由:红包猎人高级版是2017最新的手机抢红包软件,此软件可以自动抢QQ和微信群红包,打开手机后台自动运行软件就
10-10 / 2.6M
推荐理由:乐乐抢红包app是为喜欢抢红包的人群量身打造的一款实用的手机应用软件,用户通过使用乐乐抢红包神器可以方便
01-17 / 512KB
推荐理由:小米红包助手,是小米专为MIUI6,7用户准备的春节抢红包神器,全面支持微信,支付宝等各大平台的抢红包提醒
10-10 / 2.6M
推荐理由:最近快过年了,又到了微信红包发得比较密集的时间段了,但是许多人却因为手不够快而错过了不少红包,那么有
(300) 西西软件园提供微信电脑版微信下载正式版官方免费下载,微信是腾讯公司开发的一款免费语音即时聊天工具,用户可以使用微信很方便的搜索和添加附近使用微信的用户,也可以使用摇一摇和漂流瓶来寻找陌生的人交往和聊天。微信下载手机版,用户可以使用微信免费的发送消息和语音聊天内容。微信不仅仅是聊天工具,更是一种生活方式。微信,已被越来越多的人使用,并将成为未来网络营销一大利器,为了帮助你提升个人行业品牌,让更多的人...
01-30 / 36.2M
推荐理由:微信是TX公司基于QQ开发的一种可以用语音说的软件,不过手机是智能机才可以用的,拥有其独特的摇一摇,漂流瓶功
06-03 / 32.9M
推荐理由:好消息,期待已久的微信电脑版今天终于发布,西西第一时间带来分享给亲们哦!下边带来微信电脑版详细资料及
01-21 / 62.3M
推荐理由:钉钉电脑版是阿里巴巴最新推出的新一代的团队通讯软件,钉钉电脑版是阿里巴巴专为中小企业和团队打造的沟通
07-27 / 36.0M
推荐理由:京东咚咚商家版是京东商城针对商家和用户推出的IM工具,京东IM工具“咚咚”为商家和用户架起沟通桥梁,支持
02-03 / 3.0M
推荐理由:海拓微信助手是一款专业的微信营销工具,软件采用全新的自动化技术帮你处理那些需要大量时间精力的机械操作
01-06 / 15.8M
推荐理由:国外一种老牌的聚合聊天软件最近异常火热,它叫MirandaIM.通过安装丰富的插件可以令MirandaIM(下简称为MIM)支
(34) 微信分身版是一款第三方的微信客户端,这款客户端可以支持用户同时登录多个微信账号,对于经常需要在多个微信号之间切换的微商们来说这款软件非常实用。微信目前不仅是一款社交软件还有很多人将其作为办公的通讯软件使用,因此很多人就会存在两个微信号,一个对公的,一个对私的。经常在两个微信号之间切换非常麻烦,这里西西给大家提供的微信分身版可以让你同时登录两个微信号,这样再也不用考虑登录这个账号收不到另一个账号信息...
01-23 / 38.7M
推荐理由:微信,可以群聊的手机对讲机。微信是腾讯公司推出的一个为智能手机提供即时通讯服务的免费应用程序。微信支
10-14 / 2.6M
推荐理由:逢年过节都是有很多的朋友喜欢发红包的,过年的时候,除了抢红包,我们还有很多事情要忙,和家人团聚,和朋
01-30 / 36.2M
推荐理由:微信是TX公司基于QQ开发的一种可以用语音说的软件,不过手机是智能机才可以用的,拥有其独特的摇一摇,漂流瓶功
11-21 / 38.8M
推荐理由:基于Android平台的腾讯微信服务,带给您全新的移动即时通信体验。您可以使用微信软件快速地发送消息,即时拍
01-30 / 19.8M
推荐理由:微信,是一个生活方式超过三亿人使用的手机应用支持发送语音短信、视频、图片和文字可以群聊,仅耗少量流量
01-24 / 187M
推荐理由:很多使用iPad的用户不知道如何微信,其实微信iPhone版兼容iPad,苹果iPad平板电脑请看下边的安装方法主要功
(21) 腹黑微信又名黑客破解微信,微信在当前国内的地位是不可动摇的,如果无法外部打倒,就要从内部瓦解,当然这些都是玩笑,一群极客们在无聊至极,或心怀远大理想的情况下对微信进行了破解,可以让大家在聊天时记录下所有信息,即使对方即发即撤在你面前也是无用哒,最逆天的就是智能抢红包功能,你可以在秒的时间内进行设置,比如设秒,红包发出最多秒后就能自动被你抢到了。相关版本一开始腹黑微信只有苹果版的,后来为了照顾非水果...
01-24 / 34.0M
推荐理由:微信腹黑版其实就是微信的破解版,因为这个破解版可以查看撤回的消息以及自动抢红包,这款软件是由黑客团队
01-25 / 12.2M
推荐理由:腹黑微信电脑版是一个黑客团队进行破解后的作品,相信此举已经惹火了微信官方,所以大家要早些下载哟,以免
01-25 / 34.0M
推荐理由:黑客破解微信是一款高科技的微信应用,这款微信不同于官方版本,下载安装后,与人聊天,对方再也不能随意给
10-18 / 2.3M
推荐理由:微信多开助手破解版是一款微信多开软件,由于微信的限制,所以正常的话一部手机是只能安装一个微信的,但是
03-11 / 5.8M
推荐理由:行政联盟安卓版是一款非常不错的手机企业办公必备软件,它为企业人员带来了便捷化的功能,服务大家办公变得
01-23 / 38.7M
推荐理由:微信,可以群聊的手机对讲机。微信是腾讯公司推出的一个为智能手机提供即时通讯服务的免费应用程序。微信支
(24) 微信公开课版一经推出便广受欢迎,除了官方的营销策略,更是基于微信的庞大用户群体,这款微信新功能可以帮助用户数据化管理自己的网络生活,虽然推出时间不长,但已经有不少用户刷爆朋友圈了,大家也赶快下载体验吧使用方法微信公开课版怎么用关注公众号微信公开课进去之后就能查看到。微信公开课版暂时不能在电脑上打开,只能在手机上打开,此方法仅用于手机。功能简介在微信中,只要打开微信公开课版活动链接,就可以查看您的微...
01-11 / 1KB
推荐理由:2016微信公开课pro版昨晚刷爆了微信朋友圈,那么2016微信公开课pro版能不能再电脑上测试呢?答案肯定是可以
01-11 / 106M
推荐理由:2016微信公开课pro版是腾讯官方为1月11日维修公开课pro版准备的官方体验活动,2016微信公开课pro版我和微信
01-11 / 106M
推荐理由:2016微信公开课pro版昨天刷爆了朋友圈,小伙伴们纷纷展现了微信的注册时间、微信的第一个好友、查看2015发布
01-11 / 106M
推荐理由:2016微信公开课pro版当前异常火爆,微信作为国内社交行业的巨头,其一举一动都被人所关注,新的2016,新的微
01-11 / 1KB
推荐理由:2016微信公开课pro已经火热推出,当前腾讯官方已经进入营销环节,众小编一片激动,微信将会为这个网络社会带
01-11 / 1KB
推荐理由:2016微信公开课pro版是微信在1月10日晚间推出的一款微信新功能,通过个应用你可以查询自己微信是哪一日注册
08-2008-1908-1908-1908-1908-1508-1508-1408-1308-12
阅读本文后您有什么感想? 已有23人给出评价!
名称大小下载

我要回帖

更多关于 微信相册怎么批量删除 的文章

 

随机推荐