android 长按保存图片大小,Android长按图片保存到本地并且更新图库

实现效果:

bca1f5d9dd6061eda922e39a60dff303.png

实现过程:

首先定义以下数组:

//长按后显示的 Item

final String[] items = new String[] { "保存图片"};

//图片转成Bitmap数组

final Bitmap[] bitmap = new Bitmap[1];

图片转Bitmap数组代码:

Glide.with(context).load(url).asBitmap().into(new SimpleTarget() {

@Override

public void onResourceReady(Bitmap resource, GlideAnimation super Bitmap> glideAnimation) {

bitmap[0] = resource;

}

});

给view设置长按监听事件:

icon.setOnLongClickListener(new View.OnLongClickListener() {

@Override

public boolean onLongClick(View view) {

//弹出的“保存图片”的Dialog

AlertDialog.Builder builder = new AlertDialog.Builder(context);

builder.setItems(items, new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

switch (which){

case 0:

if(bitmap[0] !=null){

saveImageToGallery(context, bitmap[0]);

}else {

ToastUtils.showShort(context,"bitmap为空");

}

}

}

});

builder.show();

return true;

}

保存图片的方法:

public static void saveImageToGallery(Context context, Bitmap bmp) {

// 首先保存图片 创建文件夹

File appDir = new File(Environment.getExternalStorageDirectory(), "shy");

if (!appDir.exists()) {

appDir.mkdir();

}

//图片文件名称

String fileName = "shy_"+System.currentTimeMillis() + ".jpg";

File file = new File(appDir, fileName);

try {

FileOutputStream fos = new FileOutputStream(file);

bmp.compress(Bitmap.CompressFormat.JPEG, 100, fos);

fos.flush();

fos.close();

} catch (Exception e) {

Log.e("111",e.getMessage());

e.printStackTrace();

}

// 其次把文件插入到系统图库

String path = file.getAbsolutePath();

try {

MediaStore.Images.Media.insertImage(context.getContentResolver(), path, fileName, null);

} catch (FileNotFoundException e) {

Log.e("333",e.getMessage());

e.printStackTrace();

}

// 最后通知图库更新

Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);

Uri uri = Uri.fromFile(file);

intent.setData(uri);

context.sendBroadcast(intent);

ToastUtils.showShort(context,"保存成功");

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值