0

Simpan Layout sebagai Image

   

 

Ketika kita membuat suatu aplikasi, terkadang membutuhkan dokumentasi berupa gambar (image).

Berikut adalah salah satu cara untuk membuat image dari layout yang telah dibuat.

Buat method untuk konversi dari view ke bitmap:

private Bitmap getBitmap(View view) {
    view.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
            View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
    view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
    view.buildDrawingCache(true);
    Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(),Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);

    Drawable background =view.getBackground();
    if (background!=null) {
        background.draw(canvas);
    }else{
        canvas.drawColor(Color.WHITE);
    }
    view.draw(canvas);
    
    return bitmap;
}

Buat method untuk simpan ke dalam bentuk file:

public void save(Bitmap image, String path) {
    try {
        FileOutputStream output = new FileOutputStream(path);
        image.compress(Bitmap.CompressFormat.PNG, 100, output);
        output.close();
        Toast.makeText(context,"File berhasil disimpan di: "+path+".",Toast.LENGTH_LONG).show();
    } catch (FileNotFoundException e) {
//        e.printStackTrace();
        Log.e(TAG, e.toString());
        Toast.makeText(context,"Gagal menyimpan file.",Toast.LENGTH_LONG).show();
    } catch (IOException e) {
//        e.printStackTrace();
        Log.e(TAG, e.toString());
        Toast.makeText(context,"Gagal menyimpan file.",Toast.LENGTH_LONG).show();
    }
}

Panggil method yang telah dibuat:

image = getBitmap(layout);

Buat fungsi untuk menyimpan image:

btnSave.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        String path = Environment.getExternalStorageDirectory()+"/image.png";
        save(image, path);
    }
});
 Buat fungsi untuk menampilkan image:
btnView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        bmImage.setImageBitmap(image);
    }
});

 

Source code:
download