setX、setY 方法中 dpi 和浮点值的偏移量是多少?[android]

What is the offset for dpi and float values in setX, setY methods?[android]

public void onClick(View v) {
    ImageView image = (ImageView) inflate.inflate(R.layout.ani_image_view, null); 
    mAllImageViews.add(image);    
    image.setX(10);
    image.setY(100);
}

我尝试在坐标 10,100 处放置一个新的 ImageView。我还尝试将 ImageView 定位为 2000,100,但 ImageView 始终出现在同一位置。

我怀疑这与像素密度有关。浮动像素和dpi值之间的关系是什么?

无论您遇到什么问题,它们都与 setX()setY() 和像素密度无关。无论如何 setX()setY() 需要一定数量的像素。如果您查看 setX()setY() 的源代码,您会看到:

/**
 * Sets the visual x position of this view, in pixels. This is equivalent to setting the
 * {@link #setTranslationX(float) translationX} property to be the difference between
 * the x value passed in and the current {@link #getLeft() left} property.
 *
 * @param x The visual x position of this view, in pixels.
 */
public void setX(float x) {
    setTranslationX(x - mLeft);
}

/**
 * Sets the visual y position of this view, in pixels. This is equivalent to setting the
 * {@link #setTranslationY(float) translationY} property to be the difference between
 * the y value passed in and the current {@link #getTop() top} property.
 *
 * @param y The visual y position of this view, in pixels.
 */
public void setY(float y) {
    setTranslationY(y - mTop);
}

换句话说,他们基本上只是调用setTranslationX()setTranslationY()。如果您的 View 不受调用 setX()setY() 的影响,我会首先寻找其他原因。例如,您可能试图在错误的 View 上调用 setX()setY(),或者稍后代码的另一部分可能会覆盖您的更改。根据您提供的信息,我无法给您更详细的答案。