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

Popular posts from this blog

basic authentication with http post params android -

vb.net - Virtual Keyboard commands -

css - Firefox for ubuntu renders wrong colors -