Android: масштабировать ширину границ? - PullRequest
0 голосов
/ 25 октября 2011

Я написал собственный вид, где рисую сам.Мне это нужно, потому что я должен нарисовать круги с границами, где это границы, и некоторые вещи внутри.

В настоящее время я использую 5px как ширину границ круга.Это выглядит нормально на экранах ldpi, хорошо на экранах mdpi, и я думаю, что это будет выглядеть дерьмово на экранах hdpi.

Как мне написать представление для масштабирования границы для разных экранов?В настоящий момент пользовательский вид получает атрибут, который устанавливает ширину в пикселях.

Как я могу использовать другие размеры в процессе рисования?

Ответы [ 2 ]

2 голосов
/ 25 октября 2011

Думайте в dp вместо пикселя и получайте пиксель, соответствующий значению dp, используя следующий код:

/**
 * Convert a dimension in dip to px
 * @param dip
 * @param context
 * @return px
 */
public static int dipToPx(int dip, Context context) {
    return (int) (dip * context.getResources().getDisplayMetrics().density);
}

Или, если вы определили измерение в файле ресурсов xml, как этот:

<resources>
    <dimen name="common_padding_large">20dp</dimen>
</resources>

Вы можете получить значение пикселя этого измерения с помощью

getContext().getResources().getDimension(R.dimen.common_padding_large);
1 голос
/ 25 октября 2011

Вы должны изучить использование dp или пикселей, не зависящих от плотности. Эта страница содержит подробную информацию о поддержке различных экранов.

...