Как переместить кнопку с помощью дп? - PullRequest
0 голосов
/ 16 мая 2018

Я пытаюсь переместить кнопку с помощью скрипта.Вот как это выглядит:

   Handler handler2 = new Handler();
    handler.postDelayed(new Runnable() {
        public void run() {
            float y = chatButtonOne.getY();
            float yB = 40;
            float pxs = yB * getResources().getDisplayMetrics().density;
            chatButtonOne.setY(y - pxs);
            chatButtonOne2.setVisibility(View.VISIBLE);
        }

    }, 2000);

Теперь это (у - 40) проблематично с точки зрения разных размеров устройств, поэтому я пытаюсь использовать вместо него dp.Кто-нибудь знает, как это сделать?

Редактировать: Этот здесь сделал свое дело, я обновил оригинальный скрипт, который я опубликовал:

stackoverflow.com / a / 14921982/1987425

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

Вы можете конвертировать dp в пиксели, используя TypedValue#applyDimension():

int pixels = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp,
                                             getResources().getDisplayMetrics());
0 голосов
/ 16 мая 2018

Вам нужно рассчитать пиксели в дп.Вы можете достичь этого с помощью:

public static int pixelToDps(Context context, int desiredDps) {
    final float scale = context.getResources().getDisplayMetrics().density; //get device density
    int calculatedPixels = (int) (desiredDps * scale + 0.5f);  //The +0.5 rounds up to the nearest whole number if necessary. When converted to integer, everything after the decimal is simply cut off. The +0.5 ensures that the most "correct" integer is returned
    return calculatedPixels;
}

См. Также здесь: https://stackoverflow.com/a/6656774/8490899

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...