setImageBitmap没有刷新ImageButton

时间:2014-10-07 21:36:33

标签: android updates imagebutton

我在Android KitKat API19上测试以下代码。我已经采用了我的例子中的元素并在下面显示了它们。简单的应用程序采用ImageButton,单击该按钮时,您可以选择一次选择的图像替换ImageButton上的默认图像。 当我的应用程序只能阅读带有标准文件路径的图库照片时,生活很简单,但现在您可以选择Google+,Dropbox或文件管理器图像,我必须检查" http"在照片字符串中查看是否需要使用其他机制来显示图像。

private Bitmap photo = null;
private ImageButton b_photo;

    b_photo.setOnTouchListener(new OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if (event.getAction() == MotionEvent.ACTION_UP) {
                Intent intent = new Intent();
                intent.setType("image/*");
                intent.setAction(Intent.ACTION_GET_CONTENT);
                intent.addCategory(Intent.CATEGORY_OPENABLE);
                startActivityForResult(intent, SELECT_PICTURE);
            }
            return true;
        }
    });

    b_photo = (ImageButton) findViewById(R.id.b_photo);

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == SELECT_PICTURE && resultCode == Activity.RESULT_OK)
        try {
            // We need to recyle unused bitmaps
            if (photo != null) {
                photo.recycle();
            }

            if (data.getData().toString().contains("http")) {

                Uri uriPhoto = Uri.parse(data.getData());

                InputStream stream = getContentResolver().openInputStream(
                        uriPhoto);

                photo = BitmapFactory.decodeStream(stream);
                stream.close();

                b_photo.setImageBitmap(photo);
            } else {
                Uri selectedImageUri = data.getData();
                selectedImagePath = getPath(selectedImageUri);

                Drawable filePhoto = pathToDrawable(selectedImagePath);

                b_photo.setImageDrawable(filePhoto);

            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    super.onActivityResult(requestCode, resultCode, data);
}

后一种情况" b_photo.setImageDrawable(filePhoto);"工作良好;因此,从图库中选择本地照片后,将使用照片更新ImageButton。 问题在于" b_photo.setImageBitmap(照片);"代码,ImageButton不会更新。我已尝试对图像进行硬编码,因此我知道我选择的图像没问题,我只是想知道我是否遗漏了某些内容,或者“#34”之间存在细微差别; setImageDrawable"和" setImageBitmap"这需要某种额外的屏幕刷新。

0 个答案:

没有答案