Как получить положение макета относительно экрана - PullRequest
1 голос
/ 13 июня 2011

Я хочу анимировать относительный макет вдоль оси Y, поэтому я хочу получить его положение на оси Y. Я пробовал много вещей, таких как:

getY()
getTop()
getScreenLocation()

и так далее, но все возвращается 0.

Как мне найти позицию?

следующий код

ImageView advancetab = (ImageView) findViewById(R.id.imageView4);
RelativeLayout advancelayout = (RelativeLayout) findViewById(R.id.relativeLayout2);
final ObjectAnimator anim = ObjectAnimator.ofFloat(advancelayout, "Y", 
            advancelayout.getY(),advancelayout.getY()-100);
    anim.setDuration(1000);     
advancetab.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            anim.start();
        }
    });

Когда я нажимаю на изображение, макет анимируется от 0,0 позиции до.

Ответы [ 4 ]

3 голосов
/ 02 июня 2015

Вот мой ответ,

private int[] getViewLocations(View view) {
  int[] locations = new int[2];
  view.getLocationOnScreen(locations);
  return locations;
}

Используйте вот так,

int[] locations = getViewLocations(yourcustomview);
int x = locations[0]; // x position of left
int y = locations[1]; // y position of top

Веселитесь.

0 голосов
/ 02 декабря 2011

Возможно, ваше решение -

View.getLocationOnScreen(int[] location)

, как указано здесь: Получение координат вида относительно корневого макета

0 голосов
/ 11 ноября 2013

пишите свой код внутри onwindowsfocuschange () класса активности ... там вы получите параметры, касающиеся вашей позиции на экране, с помощью метода getLocationonscreen () любого представления.

0 голосов
/ 13 июня 2011

Я думаю, я не уверен, что вам нужно сделать «холст», а затем использовать параметры, чтобы найти координаты x и y. Может быть, есть другие варианты, но я сделал это, используя только это.

...