I was using following methods sometimes back.. I dont know if these will be helpful for you or not .. please check if this works for you 
float scale = getResources().getDisplayMetrics().density;
Display display = ((WindowManager) main.getSystemService(Context.WINDOW_SERVICE)) 
.getDefaultDisplay();
int WIDTH = display.getWidth();
int HEIGHT = display.getHeight();
public static Drawable resizeDrawable(Drawable d, float scale) {
    Drawable drawable = null;
    if (d != null) {
        try {
            Bitmap bitmap1 = ((BitmapDrawable) d).getBitmap();
            int width = 0;
            int height = 0;
            if (Math.min(WIDTH, HEIGHT) > 600) {
                width = (int) (100 * scale + 0.5f);
                height = (int) (100 * scale + 0.5f);
            } else if (Math.min(WIDTH, HEIGHT) > 240) {
                width = (int) (70 * scale + 0.5f);
                height = (int) (70 * scale + 0.5f);
            } else {
                width = (int) (44 * scale + 0.5f);
                height = (int) (44 * scale + 0.5f);
            }
            drawable = new BitmapDrawable(resizeBitmap(bitmap1,
                    width, height));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    return drawable;
}
please note that value used in if-else conditions in resizeDrawable method are just arbitrary values taken by trial n error (which suits my app).. you can try other values according to screens you are targeting
public static Bitmap resizeBitmap(final Bitmap bitmap, final int width,
        final int height) {
    final int oldWidth = bitmap.getWidth();
    final int oldHeight = bitmap.getHeight();
    final int newWidth = width;
    final int newHeight = height;
    // calculate the scale
    final float scaleWidth = ((float) newWidth) / oldWidth;
    final float scaleHeight = ((float) newHeight) / oldHeight;
    // create a matrix for the manipulation
    final Matrix matrix = new Matrix();
    // resize the Bitmap
    matrix.postScale(scaleWidth, scaleHeight);
    // if you want to rotate the Bitmap
    // recreate the new Bitmap
    final Bitmap resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0,
            oldWidth, oldHeight, matrix, true);
    return resizedBitmap;
}