java - Android - 确保 ImageView 保留在屏幕上

标签 java android imageview

我有一个 Android 项目,其中有一个 ImageView,每次按下按钮时它都会向左移动

tButton.setOnTouchListener(new RepeatListener(10, 10, new View.OnClickListener()
    {
        @Override
        public void onClick(View view)
        {                    
             player1.setX(player1.getX() - 1);
        }
}));

我不希望这个 ImageView 离开屏幕,因此我尝试将另一个 ImageView 添加到边缘,并尝试使用

tButton.setOnTouchListener(new RepeatListener(10, 10, new View.OnClickListener()
    {
        @Override
        public void onClick(View view)
        {
            Rect p1 = new Rect();
            player1.getHitRect(p1);

            Rect sL = new Rect();
            lSide.getHitRect(sL);

          if(Rect.intersects(p1, sL))
            {
                player1.setX(player1.getX() + 100);
            }
            else
            {
                player1.setX(player1.getX() - 1);
            }
        }
}));

问题是,在两个对象感兴趣之后,onClick 方法似乎再也没有被调用过。有什么我忘记做的事情,或者有更简单的方法来解决这个问题吗? 谢谢

最佳答案

有一个更简单的方法可以解决这个问题。使用 imageView.getLocationOnScreen() 获取屏幕上 View 的 x 和 y 位置。然后您可以检查并查看再次移动它是否会导致出现负 X(从屏幕向左移动)或者 X+imageView.getWidth()>screen_width(从屏幕向右移动)。

关于java - Android - 确保 ImageView 保留在屏幕上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41537756/

相关文章:

java - 复制对象不实例化

Java SendMail 在服务器停止后发送邮件

java - 如何将从 TextField View 中获取的 String 转换为 int

java - 在android中创建菜单/子菜单

android - Firestore 查询 StartAt(DocumentReference) 没有给出正确的结果

JavaFX:AnimationTimer与MenuBar的交互

android - ImageViews 中加载 Picasso 的图片在 GridLayout 中溢出?

java - 将证书导入 cacerts 在 Mac OS Mojave 上出现文件 I/O 异常

Android 动态壁纸 onOffsetsChanged

java - 将ImageView保存到sdcard android