我需要一个屏幕,我会指导用户做什么,他们应该按照我的指示操作。此屏幕仅显示为初次使用屏幕,并且永远不会再次出现。我找到了一个名为Cover Lockscreen的应用程序。它的图案屏幕是我需要的正确的东西。
请查看here
我尝试过使用framelayout(将其背景设置为图像)并添加一些交互式内容以便用户可以使用。但问题是屏幕分辨率会随着不同的设备而改变,首先这会使我的背景发生变化,有时会失真。其次,随着背景的变化,交互区域也会发生变化,我无法控制该区域是否仍然在背景中的正确位置。
我也尝试过Showcase库,但这还不够。我相信必须有一些方法可以做到这一点。
编辑:好的抱歉,我还不够清楚。让我再说一遍:
我拍了一张漂亮的照片,它的分辨率是1080x1920。我将它用作活动的背景。图片内容类似于我在下面发布的内容。正如你所看到的,有一只手拿着电话"在图片里。我想要求用户画一个" S"在"屏幕"那个"电话"。
为此,我创建了一个新活动。主要布局是framelayout。我用图片(1080x1920分辨率)设置了framelayout的背景。我将此活动的主题设置为noTitleBar和Fullscreen,这样图片就不会失真。然后我在framelayout上放置了GestureOverlayView(因为我们可以在上面绘制和识别手势)。我在dp中设置了左边和上边距,宽度和高度以及一些固定值,因此它是" on" "电话"的背景。如果一切正常,那么结果是GestureOverlayView将放在手机的屏幕上(我使用红色来表示GestureOverlayView的区域)
问题:
我无法处理图片失真。由于我的原始图片是1080x1920所以其他屏幕分辨率如480x800(Nexus S)800x1280(Nexus 7)会导致失真,...当然还有平板电脑,它更糟糕(我目前的平板电脑解决方案是.. 。强制screenOrientation为肖像)。如果背景失真,那么手机的区域将更改。因此,GestureOverlayView的margin_left,margin_top,width,height将不再正确。我不能使用9-patch因为我的照片非常复杂。
结果:
具有1080 * 1920和720 * 1280的设备将具有良好的背景和正确的交互区域。同时,具有其他分辨率的设备将具有扭曲的背景,并且交互区域可能在某处但不在电话"我设置为背景的图片。
答案 0 :(得分:0)
您可以按照以下步骤轻松完成此操作:
要在运行时获取每个视图的x,y位置,请使用以下方法。
public void getLocationOnScreen(int [] location)
在API级别1中添加计算此视图的坐标 屏幕。参数必须是两个整数的数组。之后 方法返回,该数组按顺序包含x和y位置。
参数location一个包含两个整数的数组 坐标
有关详细信息,请参阅this