如何使用dp移动按钮?

时间:2018-05-16 14:38:10

标签: android button

我正在尝试通过脚本移动按钮。这是它的样子:

   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);

现在这个(y - 40)在不同的设备大小方面存在问题,所以我尝试使用dp代替。有人知道怎么做吗?

编辑:这里有一个技巧,我更新了我发布的原始脚本:

stackoverflow.com/a/14921982/1987425

2 个答案:

答案 0 :(得分:1)

您需要计算dp的像素。你可以用这个来实现:

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

答案 1 :(得分:0)

您可以使用SUM将<{1}}转换为像素:

dp