如何使约束布局的宽度为负?

时间:2019-01-09 01:17:18

标签: java android

我不确定这是否可行,或者如果我无法正确应对这一挑战。我正在制作2D平台游戏,因此当您点击屏幕的边缘(宽度)时,将出现地图的新部分。目前,我为地图的每个部分制作了一张图片。问题是,在较大的设备上,这将留下很多黑屏,并且“图像”仅适合特定设备。

现在我想知道,我可以将我的ImageView(MAP)设置为负X值,然后当角色触碰边缘时,地图将向右移动(X会升高)。

我正在使用XML(Java也可以),但我不知道如何实现。

3 个答案:

答案 0 :(得分:0)

由于使用约束布局,因此需要设置android:layout_width="0dip"
这将使任何图像都适合其屏幕宽度。(图像宽度应大于屏幕水平宽度)。
应用某些条件,例如
如果图像宽度<屏幕宽度,则将下一幅图像调用到其余屏幕,否则调用整个屏幕的下一幅图像。
希望它对代码流有所帮助。
:)

答案 1 :(得分:0)

您可以使用实际上支持负值的android:translationX或Android:translationY。但是,在您的特定情况下,我认为您正在尝试使用指甲钳剪头发……您使用的不是为此目的而设计的。使用多个大图像视图可能会成为性能问题(我不知道您的具体情况),我建议您还是勇敢一点,自己动手并动态绘制它(听起来很困难,但我敢肯定会比您尝试的方法更容易),或者对想要的视图进行全面的搜索。

特别是对于游戏,您应该尝试使用lib或类似的引擎,相信我...最终会更容易,您可能会获得新的东西:)

答案 2 :(得分:0)

另一种解决方案是绘制比屏幕尺寸更大的版式(例如RelativeLayout) ,并在所有面上都使用相同的填充量。

例如,如果要使50dp x 50dp ImageView从屏幕的右侧出现,则RelativeLayout的高度将比屏幕高100dp(每个屏幕50dp侧)。然后,您可以将ImageView放在RelativeLayout的最右边,然后将其随意移动到可见区域。因此,在此示例中,以-20dp绘制一些内容实际上是在30dp处绘制它。

以编程方式getting the screen sizeresizing a layout非常简单,这种方法可以让您以您描述的方式控制地图加载。