Android draw a resized bitmap on another bitmap -
i need draw bitmap resized on bitmap (scale down 1 bitmap , draw on another).
the code using right is:
resources res = ((context)(activity)).getresources(); drawable[] layers = new drawable[2]; layers[0] = res.getdrawable(r.drawable.marker_report_red); layers[1] = new bitmapdrawable(getresizedbitmap(((bitmapdrawable)res.getdrawable(r.drawable.report_path_merge_ic)).getbitmap(),10,10)); layerdrawable layerdrawable = new layerdrawable(layers); bitmap b = bitmap.createbitmap(layers[0].getintrinsicwidth(), layers[0].getintrinsicheight(), bitmap.config.argb_8888); layerdrawable.setbounds(0, 0, layers[0].getintrinsicwidth(), layers[0].getintrinsicheight()); layerdrawable.draw(new canvas(b)); and:
public bitmap getresizedbitmap(bitmap bm, int newheight, int newwidth) {     int width = bm.getwidth();     int height = bm.getheight();     float scalewidth = ((float) newwidth) / width;     float scaleheight = ((float) newheight) / height;     // create matrix manipulation     matrix matrix = new matrix();     // resize bit map     matrix.postscale(scalewidth, scaleheight);      // "recreate" new bitmap     bitmap resizedbitmap = bitmap.createbitmap(bm, 0, 0, width, height, matrix, false);     return resizedbitmap; } but resulting image shows fuzzy bitmap stretched size of underlying one.
how can this? 4th method trying...
i fixed problem, using different code completely:
resources res = ((context)(activity)).getresources(); drawable[] layers = new drawable[2]; layers[0] = res.getdrawable(r.drawable.marker_report_red); layers[1] = res.getdrawable(r.drawable.report_path_merge_ic); layerdrawable layerdrawable = new layerdrawable(layers); layerdrawable.setlayerinset(1, 15, 10, 15, 15); bitmap b = bitmap.createbitmap(layers[0].getintrinsicwidth(), layers[0].getintrinsicheight(), bitmap.config.argb_8888); layerdrawable.setbounds(0, 0, layers[0].getintrinsicwidth(), layers[0].getintrinsicheight()); layerdrawable.draw(new canvas(b)); with emphasis on line:
layerdrawable.setlayerinset(1, 15, 10, 15, 15); this line resized bitmap on second layer.
Comments
Post a Comment