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