Android Studio / Случайный размер View в dp

269
28 мая 2017, 19:56

Недавно начал заниматься в Android Studio. Постоянно обращаюсь для решения вопросов на этот ресурс. Однако сейчас ответа на свой вопрос я не нашел.

Задача: задать случайный размер высоты view элемента в приложении.

Проблема: случайное значение применяется в элементе как px, а необходимо задать как dp.

Код приложен ниже:

private int x, y, z;
 View1 = (TextView) findViewById(R.id.View1);
 View2 = (TextView) findViewById(R.id.View2);
 View3 = (TextView) findViewById(R.id.View3);
 SecureRandom random1 = new SecureRandom();
 x = random1.nextInt(39) + 1;
 SecureRandom random2 = new SecureRandom();
 y = random2.nextInt(39) + 1;
 SecureRandom random3 = new SecureRandom();
 z = random3.nextInt(39) + 1;
 View1.setHeight(x * 10);
 View2.setHeight(y * 10);
 View3.setHeight(z * 10);

....

Answer 1

Попробуйте так:

Random mRand = new Random();
//вывод случайного значение между мин и макс (Java)
private   int getRandomInt(int min, int max){
    return mRand.nextInt(max - min + 1) + min;
}

public int dpToPx(int dp) {
    DisplayMetrics displayMetrics = getContext().getResources().getDisplayMetrics();
    return Math.round(dp * (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT));     
}

View1.setHeight(dpToPx(getRandomInt(10,20)) * 10);

Источник - dpToPx(int dp){...}

READ ALSO
Как решить пример с прогрессией?

Как решить пример с прогрессией?

Нужно решить P=2/3*4/5*6/7

284
Как в цикле событие кнопок добавить?

Как в цикле событие кнопок добавить?

Пишу "крестики ноли"Создал 9 панелей по девять кнопок

430
не определяются java классы

не определяются java классы

Возник вопрос, копаюсь долго не могу решить: что-то слетело в студио и java классы во всех проектах не определяются, вместо привычного значка...

245
Добавить аргументы в метод onBindViewHolder?

Добавить аргументы в метод onBindViewHolder?

Как добавить ещё несколько аргументов в метод onBindViewHolder()? Каждый раз при попытке добавить новый аргумент, мне предлагается повторно implement'ировать...

254