Как отправить растровое изображение между двумя различными классами активности в Android - PullRequest
1 голос
/ 25 мая 2011

В нашем приложении нам нужно отправить растровое изображение из одного класса деятельности в другое действие после некоторой обработки изображений. Мы вызываем методы в первом упражнении, а затем хотим показать выходное изображение во втором упражнении. Два класса активности имеют разные макеты XML-файлов. Как мы можем это сделать?

Ответы [ 3 ]

4 голосов
/ 25 мая 2011

Растровое изображение распознается, как сказал EboMike, поэтому в своем первом действии вы можете сделать это:

Intent intent = new Intent(this,SecondActivity.class);
intent.putExtras("MYBITMAP",yourImage);
startActivity(intent);

и в свой SecondActivity добавьте этот код:

Bitmap imageToDisplay = (Bitmap) this.getIntent().getExtras("MYBITMAP");
//and then you can display it in your imageView :)
4 голосов
/ 25 мая 2011

Растровое изображение может быть отправлено, поэтому вы можете отправить его как дополнительное, НО это плохая идея, если ваше растровое изображение большое - оно может дать сбой на старых телефонах, у которых мало ОЗУ.

Еслиу вас действительно большие битмапы, вам следует рассмотреть возможность записи их во внутреннее хранилище по мере их передачи.Это также будет обрабатывать случай, когда пользователь временно переключается на другое приложение (например, на входящий телефонный звонок), а затем возвращается к вашему приложению, которое, возможно, было прервано в этот момент.

0 голосов
/ 25 мая 2011

Если действия находятся в одном и том же файле apk, то лучше всего просто использовать статическую переменную.

Вы будете обрабатывать растровый объект (из Canvas?)

class Globals {
    public static BitmapDrawable processedBitmapDrawable=null;
}

.... в процессе деятельности:

Bitmap processedBitmap = canvas.getBitmap();
Globals.processedBitmapDrawable = new BitmapDrawable(processedBitmap); 

...

во второй активности:

if (Globals.processedBitmapDrawable!=null) {
   imageView.setDrawable(Globals.processedBitmapDrawable);
}

кажется (и является) простым, но это лучший способ, поскольку он несколько раз экономит обработку / загрузку растрового изображения.

Вы также можете выбрать SoftReference<Bitmaprawable>, что позволит сборщику мусора очистить ссылку, если это необходимо. хотя вам может понадобиться перезагрузить / повторно выполнить, если вам это понадобится снова.

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