蓝色矩形是不可见区域(对于调试而言是可见的)我点击并发生了一些事情。在IDE上,它们位于正确的位置。
但是在genymotion(同一型号)上,他们被置于不同的位置 - 为什么?可能是什么问题 - 屏幕拒绝?
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"
android:id="@+id/main">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/background"
android:src="@drawable/page_2_bkg"
android:layout_alignParentTop="true" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/door_closed2"
android:src="@drawable/page2_door_closed" />
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/door_open2"
android:src="@drawable/page2_door_opened"
android:visibility="invisible" />
<ImageView
android:layout_width="80dp"
android:layout_height="300dp"
android:id="@+id/boy"
android:layout_marginLeft="160dp"
android:visibility="visible"
android:src="#ff2b16ff"
android:layout_marginBottom="50dp" />
<ImageView
android:layout_width="150dp"
android:layout_height="300dp"
android:id="@+id/doorBox"
android:visibility="visible"
android:layout_alignParentTop="true"
android:layout_alignRight="@+id/background"
android:layout_alignEnd="@+id/background"
android:layout_marginRight="118dp"
android:layout_marginEnd="118dp"
android:src="#ffff3240" />
答案 0 :(得分:1)
我发现您使用的是XML布局,在编辑之前,它不在原始问题中。无论如何,问题是矩形是相对于屏幕放置的,当它应该放在相对于图像时。
您可以通过执行以下操作来实现此效果:
RelativeLayout
(也恰好是RelativeLayout
)RelativeLayout
的大小并重新定位到中心并使用全屏大小等。RelativeLayout
背景图片设为您的图片RelativeLayout
内,并始终相对保持位置。这是relative
中RelativeLayout
的含义;)你要做的是让矩形在图像的前置部分,但是当你正在调整大小/移动图像时,矩形无法知道父母的尺寸预先部分&#39;图像(即使它不是真正的父母,这是问题的一部分)。通过使两个对象相对于父对象移动,您始终保持正确的位置。
答案 1 :(得分:0)
屏幕密度只是一种可能性,可能是其中一个原因。另一个可能是您将蓝色矩形与屏幕相关联,但您应该做的是将其与图像相关联。
屏幕密度稍微有点困难,因为2x密度屏幕上的100px只会移动矩形一半,所以不是使用像素,考虑使用百分比。这使得处理精神状态变得更加容易。
例如,看起来“门”矩形从图像宽度的75%变为图像宽度的90%。它大约是从顶部到图像高度的75%的高度的15%。
了解所有这些(伪代码示例):