android - 如何在多图像视图中处理长按
问题描述
我的布局中有 8 个数字,ImageView
并且我已将LongClickListner
. ImageView
如果用户长按图片(任意图片),图片将保存在图库中。但我的问题是当用户长按第 8 张图片时,第 1 张或其他人(其中 1 张)将保存在图库中。我想要的是当用户长按第 8 张图像时,第 8 张图像不会保存其他图像。
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.saveImage:
if(img1.isLongClickable() ){
BitmapDrawable bitmapDrawable = (BitmapDrawable)img1.getDrawable();
Bitmap bitmap = bitmapDrawable.getBitmap();
Random random = new Random();
int x = random.nextInt(1000000);
saveImageUtils.insertImage(getActivity().getContentResolver(),bitmap,String.valueOf(x));
//SaveImage(bitmap);
Toast.makeText(getContext(), "Image Saved to Device", Toast.LENGTH_SHORT).show();
break;
}else if(img2.isLongClickable()){
BitmapDrawable bitmapDrawable = (BitmapDrawable)img2.getDrawable();
Bitmap bitmap = bitmapDrawable.getBitmap();
Random random = new Random();
int x = random.nextInt(1000000);
saveImageUtils.insertImage(getActivity().getContentResolver(),bitmap,String.valueOf(x));
//SaveImage(bitmap);
Toast.makeText(getContext(), "Image Saved to Device", Toast.LENGTH_SHORT).show();
break;
}else if(img3.isLongClickable()){
BitmapDrawable bitmapDrawable = (BitmapDrawable)img3.getDrawable();
Bitmap bitmap = bitmapDrawable.getBitmap();
Random random = new Random();
int x = random.nextInt(1000000);
saveImageUtils.insertImage(getActivity().getContentResolver(),bitmap,String.valueOf(x));
//SaveImage(bitmap);
Toast.makeText(getContext(), "Image Saved to Device", Toast.LENGTH_SHORT).show();
break;
}else if(img4.isLongClickable()){
BitmapDrawable bitmapDrawable = (BitmapDrawable)img4.getDrawable();
Bitmap bitmap = bitmapDrawable.getBitmap();
Random random = new Random();
int x = random.nextInt(1000000);
saveImageUtils.insertImage(getActivity().getContentResolver(),bitmap,String.valueOf(x));
//SaveImage(bitmap);
Toast.makeText(getContext(), "Image Saved to Device", Toast.LENGTH_SHORT).show();
break;
}else if(img5.isLongClickable()){
BitmapDrawable bitmapDrawable = (BitmapDrawable)img5.getDrawable();
Bitmap bitmap = bitmapDrawable.getBitmap();
Random random = new Random();
int x = random.nextInt(1000000);
saveImageUtils.insertImage(getActivity().getContentResolver(),bitmap,String.valueOf(x));
//SaveImage(bitmap);
Toast.makeText(getContext(), "Image Saved to Device", Toast.LENGTH_SHORT).show();
break;
}else if(img6.isLongClickable()){
BitmapDrawable bitmapDrawable = (BitmapDrawable)img6.getDrawable();
Bitmap bitmap = bitmapDrawable.getBitmap();
Random random = new Random();
int x = random.nextInt(1000000);
saveImageUtils.insertImage(getActivity().getContentResolver(),bitmap,String.valueOf(x));
//SaveImage(bitmap);
Toast.makeText(getContext(), "Image Saved to Device", Toast.LENGTH_SHORT).show();
break;
}else if(img7.isLongClickable()){
BitmapDrawable bitmapDrawable = (BitmapDrawable)img7.getDrawable();
Bitmap bitmap = bitmapDrawable.getBitmap();
Random random = new Random();
int x = random.nextInt(1000000);
saveImageUtils.insertImage(getActivity().getContentResolver(),bitmap,String.valueOf(x));
//SaveImage(bitmap);
Toast.makeText(getContext(), "Image Saved to Device", Toast.LENGTH_SHORT).show();
break;
}else if(img8.isLongClickable()){
BitmapDrawable bitmapDrawable = (BitmapDrawable)img8.getDrawable();
Bitmap bitmap = bitmapDrawable.getBitmap();
Random random = new Random();
int x = random.nextInt(1000000);
saveImageUtils.insertImage(getActivity().getContentResolver(),bitmap,String.valueOf(x));
//SaveImage(bitmap);
Toast.makeText(getContext(), "Image Saved to Device", Toast.LENGTH_SHORT).show();
break;
}
}
return super.onContextItemSelected(item);
}
解决方案
您上面介绍的内容是这样的:
- 显然您的 ImageView 已
OnLongClickListener
分配 - 用户正在单击工具栏的菜单项
R.id.saveImage
,您正在尝试根据isLongClickable
指示保存图像
如果为真,则上述内容是错误的,因为isLongClickable
基本上只是表明给定控制已OnLongClickListener
分配。
你应该做什么:要么在每个内部进行保存OnLongClickListener
(它onLongClick
会给你视图,即 ImageView),或者如果你只需要在R.id.saveImage
点击时进行保存,那么OnLongClickListener
你应该以某种方式告诉你的应用程序给定的 ImageView被长按,然后在R.id.saveImage
单击时,遍历记录的 ImageView 长按列表并执行保存。
推荐阅读
- javascript - 在滚动动画中将锚链接移高一点
- c# - 从 DbSet 中删除记录会在 EF Core 中引发“值不能为空”错误
- c# - 如何根据特定值从对象列表中获取对象?C#
- i18next - i18next::backendConnector: TypeError: 仅支持绝对 URL
- gnupg - GPG 将秘密移至 Yubikey 时添加地铁
- mongodb - 如何在 MongoDB 中创建具有不同过滤器的多个聚合?
- python - 如何为熊猫中的每一行获取上一行和下一行的序列
- javascript - 从 chrome 扩展插入 iframe 在某些网站上不起作用
- database-design - 关于数据库设计的问题 - 表层次结构
- log4j2 - Pulsar Log4j2 Appender 错误:名称为“pulsar-log4j2-appender-applog-json”的生产者已连接到主题