Изменение объекта imageView в Android после загрузки активности - PullRequest
0 голосов
/ 03 апреля 2012

Я создаю приложение в Android, которое требует отправки растрового объекта из одного действия и отображения этого растрового объекта, отправленного на второй странице действия.Но я получаю пустой экран

Вот пример моего кода для отправки объекта Bitmap: -

Intent intent = new Intent(Display2.this, Display3.class);
ImageView iv = (ImageView) findViewById(R.id.imageView1);
Bitmap bitmap = Bitmap.createBitmap(iv.getWidth(), iv.getHeight(), Bitmap.Config.RGB_565);
intent.putExtra("BitmapImage", bitmap);
startActivity(intent);

Теперь часть кода во втором действии для извлечения отправленного объектаи отображая его на экране: -

public class Display3 extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        Bitmap bitmap = (Bitmap)getIntent().getParcelableExtra("BitmapImage");
        ImageView myIV = (ImageView) findViewById(R.id.imageView1);
        bitmap = bitmap.createBitmap(myIV.getWidth(), myIV.getHeight(), Bitmap.Config.RGB_565);
        myIV.setImageBitmap(bitmap);
        setContentView(R.layout.display3);

    }
}

Кто-нибудь может подсказать, что не так в этой части?

Спасибо!

Ответы [ 5 ]

3 голосов
/ 03 апреля 2012

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

Intent intent = new Intent(this, NewActivity.class);
intent.putExtra("BitmapImage", bitmap);

и получите его на другом конце:

Bitmap bitmap = (Bitmap) intent.getParcelableExtra("BitmapImage");
2 голосов
/ 03 апреля 2012

это не хорошо для передачи растрового изображения из одного действия в другое ..

Сначала вы можете просто назвать свое растровое изображение статическим.затем создайте метод, подобный

public static Bitmap getBitmap(){
    return bitmap;
}

, затем вы можете просто вызвать другие действия,

bitmapexistingclass.getBitmap();

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

1 голос
/ 03 апреля 2012

из вашего кода выше вы создаете пустое растровое изображение:

ImageView iv = (ImageView) findViewById(R.id.imageView1);
Bitmap bitmap = Bitmap.createBitmap(iv.getWidth(), iv.getHeight(), Bitmap.Config.RGB_565);

Я не вижу никаких причин, почему из этого кода вы получите что-то еще, кроме пустого черного растрового изображения с высотой и шириной, равнойimageView высота и ширина

0 голосов
/ 03 апреля 2012

Используйте ниже два метода для преобразования растрового изображения в строку и наоборот. Затем вы можете передать строку с намерениями из действия в другое действие. Я тоже делаю то же самое в моем приложении. Тогда нам не нужно использовать ParcelableExtra и serialzable класс.

public String convertBitmapToString(Bitmap src) {
if(src!= null){
ByteArrayOutputStream os=new ByteArrayOutputStream();
src.compress(android.graphics.Bitmap.CompressFormat.PNG, 100,(OutputStream) os);
byte[] byteArray = os.toByteArray();
return Base64.encodeToString(byteArray,Base64.DEFAULT);  
}
return null;            
}

public Bitmap getBitMapFromString(String src){
Bitmap bitmap = null;
if(src!= null){
byte[] decodedString = Base64.decode(src.getBytes(), Base64.DEFAULT);
bitmap = BitmapFactory.decodeByteArray(decodedString,0,decodedString.length);
return bitmap;
}
return null;
}
0 голосов
/ 03 апреля 2012

что вы ожидаете от андроида, чтобы заполнить рисунок в Bitmap, вы создаете пустой Bitmap Object с высотой и шириной, эквивалентными ImageView объекту; поскольку Bitmap реализует Parcelable, вы можете просто поместить его в связку и получить другой Activity

...