【发布时间】:2017-10-24 07:17:39
【问题描述】:
如果您想了解更多背景信息,请参考我的this previous question。
我想要一个滑入式菜单,菜单本身是一个网格视图,包含多个图像和文本视图。
这就是我所做的:使用 const 布局,我把它放在屏幕右边缘的外面,以为我所要做的就是将它从屏幕外移到屏幕内。
我遇到了很多问题,但我解决了大部分问题。现在我有一个无法解决的问题:
您会看到,当您为“视图”设置动画时,编程反应区域(例如 onTouchListener 响应的区域)不会被移动。换句话说,视图的图形表示,图像将被移动,但编程的东西,或者布局(我不确定布局是否是我所指的正确的东西,对不起)将被留下在后面。
所以现在你可以理解我的困惑了。我想将图形和反应区域都移动到我的目标位置。换句话说,用户不仅应该能够看到从屏幕右边缘进入的菜单,还应该能够点击它并且它应该是响应式的。
但我遇到的问题是用户将能够看到该视图,但如果他们点击它,则什么也不会发生 - 因为反应区域,布局(不确定它再次是正确的,抱歉)被抛在了屏幕之外。
我知道你在想什么:“所以只需使用
设置布局的新位置setLayoutParams
?没那么难吧?
好吧,事情就是这样,我终于要说到重点了,毕竟背景是我必须要做的事情,否则整个问题会显得相当突然。
这里是翻译动画的xml脚本:
<?xml version="1.0" encoding="utf-8"?>
<set
xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator"
android:fillAfter="true">
<translate
android:fromXDelta="0%"
android:toXDelta="-100%"
android:duration="300"
/>
</set>
如您所见,我正在将图像、我的布局/视图/任何内容的图形表示移动到我的布局/视图/反应区域的 -100%。那么如果我使用它会发生什么:
constraintLayoutParams.leftMargin = 1958;
swipeGridMenu.setLayoutParams(constraintLayoutParams);
?用户将看到一个菜单出现在屏幕的右侧,但无论如何都不会与屏幕的右边缘接壤,而是在菜单之间有一个空白区域(无法点击,因为反应区域不是' t 与它正确对齐,它被留在后面)和屏幕的右边缘,空白区域的宽度是菜单的宽度,因为那是反应区域/布局所在的位置。下图展示了这种情况:
我要放弃了。无论我如何调整它,它总是会以令人讨厌且不太理想的方式结束。那么如何为整个布局设置动画和移动呢?我只想将我的 gridview 菜单平稳地移动到新位置,并使其保持在那里,并使其可点击。
任何帮助将不胜感激!
【问题讨论】:
-
有趣!给我一些时间来实现它。 :-)
标签: android android-layout android-animation