繁体   English   中英

在布局android上获取imageview的位置

[英]Get position of imageview on layout android

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

在此处输入图片说明

x = imageViewObject.getLeft();
y = imageViewObject.getTop();

希望,对你有帮助!

您可以将其与getLocationOnScreen(int [])

在运行时,您可以获得每个View对象的位置(这也包括Layouts

视图对象的左侧位置getleft()

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

视图对象的正确位置getRight()

视图对象底部位置getBottom()

即使你可以得到位置

getLocationOnScreen(int [] )

位置意味着 x 和 y 以及高度和宽度?

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

下面的代码适用于我获取原始位置我使用全局布尔变量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;
        }
    });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM