Удалить / удалить текущее изображение из ImageView? - PullRequest
8 голосов
/ 30 ноября 2011

Я хочу удалять / удалять или очищать изображение из imageView каждый раз, когда пользователь снова щелкает, чтобы установить другое изображение для imageView. я получаю OutOfMemoryError: размер растрового изображения превышает бюджет виртуальной машины (размер кучи = 7239 КБ, выделено = 2769 КБ, размер растрового изображения = 8748 КБ) вот мой код:

ImageView imageView;
private static final int SELECT_PICTURE = 1;
private String selectedImagePath;
Bitmap yourSelectedImage;



@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);


}


@Override
protected void onResume() {
    super.onResume();
    imageView = (ImageView) findViewById(R.id.imageView);

            ((ImageView) findViewById(R.id.imageView))
    .setOnClickListener(new OnClickListener() {

        public void onClick(View arg0) {

            goToGallery();
        }
    });

}


public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK) {
        if (requestCode == SELECT_PICTURE) {
            Uri selectedImageUri = data.getData();
            selectedImagePath = getPath(selectedImageUri);
            /*Toast.makeText(getBaseContext(), "" + selectedImagePath, 1000)
                    .show();
            *///editText2.setText(selectedImagePath);

            // Convert file path into bitmap image using below line.
            yourSelectedImage = BitmapFactory
                    .decodeFile(selectedImagePath);

            // put bitmapimage in your imageview
            imageView.setImageBitmap(yourSelectedImage);


        }
    }
}

public String getPath(Uri uri) {
    String[] projection = { MediaStore.Images.Media.DATA };
    Cursor cursor = managedQuery(uri, projection, null, null, null);
    int column_index = cursor
            .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    return cursor.getString(column_index);
}
private void goToGallery()
{


    // in onCreate or any event where your want the user to
    // select a file
    Intent intent = new Intent();
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(
            Intent.createChooser(intent, "Select Picture"),
            SELECT_PICTURE);

}

Ответы [ 6 ]

27 голосов
/ 24 октября 2013

Установка ресурса на 0 у меня не сработала. Следующее работало хотя:

imageView.setImageBitmap(null);
1 голос
/ 11 марта 2015
image.setImageDrawable(null);

очистит изображение в просмотре изображений.

1 голос
/ 30 ноября 2011

используйте специальный идентификатор ресурса '0'. Это недопустимый идентификатор res, поэтому изображение не отображается.

0 голосов
/ 21 мая 2018
edit_countflag.setBackgroundColor(0);
0 голосов
/ 12 февраля 2015
viewToUse.setImageResource(android.R.color.transparent);
  • Я думаю, что использование setImageResource с идентификатором цвета создаст проблемы при сбое в Android 2.2.1, обязательно протестируйте его.
0 голосов
/ 30 ноября 2011

Когда вы устанавливаете другое изображение для текущего ImageView, предыдущее изображение больше не используется для ImageView. Следовательно, нет необходимости выполнять дополнительную работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...