Независимо от того, какие у вас проблемы, они не связаны с 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()
, я бы сначала искал другие причины. Например, вы, возможно, пытаетесь позвонить setX()
и setY()
с неправильным номером View
или еще часть вашего кода позже может перезаписать ваши изменения. Я не могу дать вам более подробный ответ, чем с предоставленной вами информацией.