获取imageview在布局android上的位置

问题描述 投票:10回答:5

[请帮助我,我想在布局上获取imageview的位置。

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS8wNXRwWi5wbmcifQ==” alt =“在此处输入图像描述”>

android layout position imageview
5个回答
7
投票

您可以将其与getLocationOnScreen(int [])一起使用


15
投票
x = imageViewObject.getLeft();
y = imageViewObject.getTop();

希望,对您有帮助!


7
投票

在运行时,您可以通过以下方式获取每个View对象(也包括Layouts)的位置

视图对象getleft()的左位置

视图对象getTop()的顶部位置

查看对象的正确位置getRight()

视图对象getBottom()的底部位置

即使您可以通过以下方式获得位置

getLocationOnScreen(int [] )


1
投票

位置的含义是x和y以及高度和宽度?

此布局是一个视图,该视图具有这些属性。


0
投票

下面的代码对我有用,以获得原始位置,我使用全局布尔变量“ moved”在onTouch方法v.getX()和... getY()中获取值一次,而我的imageView对象的值我已经在设备上的apk文件上运行了它,它运行完美。希望对您有所帮助

joystick.setOnTouchListener(new View.OnTouchListener(){

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if(moved){
                moved = false;
                xOrigin = v.getX();
                yOrigin = v.getY();
                mode.setText(Float.toString(xOrigin));
                challenge.setText(Float.toString(yOrigin));
            }
            mode.setText(Float.toString(v.getX()));
            challenge.setText(Float.toString(v.getY()));
            switch (event.getActionMasked()) {
                case MotionEvent.ACTION_DOWN:
                        xCoOrdinate = v.getX() - event.getRawX();

                    yCoOrdinate = v.getY() - event.getRawY();
                    //mode.setText(Float.toString(v.getX()));
                    //challenge.setText(Float.toString(v.getY()));
                    break;
                case MotionEvent.ACTION_MOVE:
                    v.animate().x(event.getRawX() + xCoOrdinate).y(event.getRawY() + yCoOrdinate).setDuration(0).start();
                    if(v.getX() < xOrigin -50){
                        v.animate().x(xOrigin -50).setDuration(0).start();
                    }
                    else if(v.getX() > xOrigin +50) {
                        v.animate().x(xOrigin +50).setDuration(0).start();
                    }
                    if(v.getY() < yOrigin -50){
                        v.animate().y(yOrigin -50).setDuration(0).start();
                    }
                    else if(v.getY() > yOrigin +50) {
                        v.animate().y(yOrigin +50).setDuration(0).start();
                    }
                    break;
                default:
                    v.setX(xOrigin);
                    v.setY(yOrigin);
                    mode.setText(Float.toString(xOrigin));
                    challenge.setText(Float.toString(yOrigin));
                    return false;
            }
            return true;
        }
    });
© www.soinside.com 2019 - 2024. All rights reserved.