Wednesday, October 4, 2017

Chuyển ảnh qua activity khác

Bạn muốn chuyển ảnh qua activity khác, thông thường đó là một ảnh chụp màn hình của ứng dụng đang chạy. Ví dụ khi người dùng đang chơi dở game thì hết giờ, ta bật ra thông báo game over kèm theo ảnh chụp để người dùng biết họ đang chơi đến đâu. Ta không gửi trực tiếp được như với chuỗi hay số mà cần thêm vài dòng code.
layout.setDrawingCacheEnabled(true);                layout.setDrawingCacheQuality(LinearLayout.DRAWING_CACHE_QUALITY_HIGH);
layout.buildDrawingCache();
Bitmap b = layout.getDrawingCache();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
b.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
Intent in = new Intent(MainActivity.this, newclass.class);
in.putExtra("image",byteArray);                 
startActivity(in);
layout tức là LinearLayout bạn set cho toàn bộ màn hình muốn chụp. Ta chụp ảnh màn hình ứng dụng đang chạy, rồi biến nó thành dạng byte và chuyển đi.
Tại class mới ta nhận về ảnh bitmap rồi set nó vào imageView bằng các lệnh:
byte[] byteArray = getIntent().getByteArrayExtra("image");
Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
image.setImageBitmap(bmp);

Nếu ảnh to quá, ta muốn nó nhỏ đi, chỉ còn 60% chẳng hạn, ta thêm và các lệnh.
int srcWidth = bmp.getWidth();
int srcHeight = bmp.getHeight();
int dstWidth = (int)(srcWidth*0.6f);
int dstHeight = (int)(srcHeight*0.6f);
image.setImageBitmap(Bitmap.createScaledBitmap(bmp, dstWidth, dstHeight, true));


1 comment:

  1. This comment has been removed by a blog administrator.

    ReplyDelete