如何在多图像视图中处理长按

问题描述 投票:-1回答:1

我的布局中有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);
}
android onlongclicklistener
1个回答
1
投票

你上面介绍的是这样的:

  1. 显然你的ImageView已经分配了OnLongClickListeners
  2. 用户点击工具栏的菜单项R.id.saveImage,你试图保存基于isLongClickable指示的图像

如果为真,则上述错误是因为isLongClickable基本上只是指示给定控制已分配OnLongClickListener

您应该做什么:要么在每个OnLongClickListener内部保存(并且它的onLongClick将为您提供视图,即ImageView)或者如果您需要仅在R.id.saveImage点击时进行保存,那么在OnLongClickListener中你应该以某种方式告诉你长时间点击给定ImageView的应用程序,然后在R.id.saveImage点击,迭代记录的ImageView长按点列表并执行保存。

© www.soinside.com 2019 - 2024. All rights reserved.