Скопируйте растровое содержимое одного ImageView в другой - PullRequest
7 голосов
/ 21 октября 2010

Это меня озадачило. Мне нужно скопировать растровое изображение из одного ImageView в другой. Я не хочу просто копировать один ImageView в другой, потому что мне нужно внести некоторые изменения в растровое изображение при его завершении.

Вот код, который не работает.

ImageView ivSrc = (ImageView) findViewById(R.id.photo);

ivSrc.setDrawingCacheEnabled(true);
    Bitmap bmSrc1 = ivSrc.getDrawingCache(); // will cause nullPointerException

    Bitmap bmSrc2 = Bitmap.createBitmap(ivSrc.getDrawingCache());//bmSrc2 will be null

    View vSrc = (View) ivSrc.getParent();
    vSrc.setDrawingCacheEnabled(true);
    Bitmap bmSrc3 = Bitmap.createBitmap(vSrc.getDrawingCache());  //black bitmap 

// Для проверки растровых изображений:

     ImageView ivDest = (ImageView) findViewById(R.id.photo2);
      ivDest.setImageBitmap(bmSrc1); //bmSrc1, 2, 3 results shown above

Я должен ошибиться, потому что делать копию должно быть очень легко. ТИА

1 Ответ

21 голосов
/ 21 октября 2010

Не используется кэш чертежа, но не нужно ли вызывать buildDrawingCache ()?

Как бы я это сделал:

Bitmap bmSrc1 = ((BitmapDrawable)ivSrc.getDrawable()).getBitmap();
Bitmap bmSrc2 = bmSrc1.copy(bmSrc1.getConfig(), true);

Обратите внимание, что bmSrc2 является изменяемым, то есть вы можете вставить его в Canvas и делать с ним что угодно, прежде чем рисовать его где-либо.

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