2013-08-09 2 views
2

я делаю андроид приложение, в котором я масштабировать растровое изображение, используя bitmap2 = Bitmap.createScaledBitmap(bmp, 150, 150, true);Как масштабировать изображение относительно размера экрана?

это изображение выглядит достаточно хорошо на мобильный телефон с большим экраном ... но он выходит из пропорции при использовании на телефоне с небольшим размером. .... любой знает решение для него?

+0

Здесь есть аналогичный вопрос -> http://stackoverflow.com/questions/17835318/making-a-layout-big-as-his-real-content-not-his-background/17837371#17837371 – g00dy

+0

http: //stackoverflow.com/questions/4821488/bad-image-quality-after-resizing-scaling-bitmap и http://stackoverflow.com/questions/6410364/how-to-scale-bitmap-to-screen-size – Simon

ответ

6

Необходимо указать размер изображения в формате dp, как и в XML. Для того, чтобы сделать преобразование из дп в пикселы вы можете использовать что-то вроде:

float ht_px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, ht, getResources().getDisplayMetrics()); 
float wt_px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, wt, getResources().getDisplayMetrics()); 

Для вашего конкретного использования:

float ht_px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 150, getResources().getDisplayMetrics()); 
float wt_px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 150, getResources().getDisplayMetrics()); 

и масштабирование растрового изображения с ht_px и wt_px. Вы, возможно, потребуется изменить 150 на 75.

+0

да, я думал то же самое ..... но bitmap2 = Bitmap.createScaledBitmap (bmp, 150, 150, true); не принимает значения в dp ..... и жаль, что я не могу понять ваш sloution, не могли бы вы рассказать подробнее? –

+0

обновил мой ответ – Heinrisch

+0

Thanx .................. –

3

высоту взять и ширину экрана и рассчитать ваш размер

DisplayMetrics display = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(display); 
    int screenWidth = display.widthPixels; 
    int screenHeight = display.heightPixels; 

, как вы хотите, чтобы показать вашу растровый половину экрана тогдашний

bitmap2 = Bitmap.createScaledBitmap(bmp, screenWidth/2, screenHeight/2, true); 

вычислите его согласно вашему требованию.

+0

whats getWindowManager() ... похоже, для этого нет импорта –

+0

Дополнительная информация прочитайте это-http://developer.android.com/reference/android/util/DisplayMetrics.html –

Смежные вопросы