我得到了一个Animation
,它导致视图滑出屏幕向右滑动,这与以下代码的工作预期一样:
Animation outtoRight = new TranslateAnimation(
Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, +1.0f,
Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f
);
outtoRight.setDuration(500);
outtoRight.setInterpolator(new AccelerateInterpolator());
outtoRight.setFillAfter(true);
这意味着我应用此动画的视图将漂亮地滑出屏幕。当然,我有一个相反的滑入方式。但我的问题是,我如何才能让视图离开屏幕,这样我就可以在不应用该动画的情况下滑动它一次?
我玩过负边距之类的游戏,但我似乎找不到合适的属性来让我的视图在发布时从屏幕上消失。
为了澄清,我可以在开始时用另一个动画完美地隐藏它,但我可以看到它消失了,即使只有一小段时间。必须有一种方法让它在一开始就不在那里,然后让我把它滑进去。
发布于 2012-05-29 12:31:49
我不是动画专家,但我会试一试:)
这是我正在使用的动画,它从右侧滑入一个视图
EnterByRight.xml
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<translate android:fromXDelta="100%" android:toXDelta="0%"
android:fromYDelta="0%" android:toYDelta="0%"
android:duration="400"/>
</set>
在我的例子中,我将动画化用xml定义的TableLayout。当我想让它滑进去的时候:
Animation animationEnterByRight = AnimationUtils.loadAnimation(this, R.anim.animationentrancebyright);
tableLayout.startAnimation(animationEnterByRight);
它来自屏幕之外,我不需要先把它放在外面,动画会帮我解决这个问题。如果您想在视图加载后立即对其进行动画处理,则可以很好地执行此操作。
如果你需要让你的视图在一段时间内保持“不可篡改”,然后显示动画,除了View.Visible和View.Gone,我想不出其他的解决方案。但我不明白为什么这是个问题?
干杯!
发布于 2012-05-25 08:10:48
一个可能的解决方案(考虑到这个问题的受欢迎程度非常低)可能是我目前使用的那个,尽管我一点也不喜欢它。我制作这个视图是为了让View.GONE
具有可见性,并应用动画使其向右移动。
然后,第一次(我控制它是第一次在视图上使用标记),我将可见性设置为View.VISIBLE
,并应用动画来滑入。这可以像预期的那样工作,没有毛刺和跳跃,但我仍然担心同时向许多与性能相关的元素添加动画的影响。
发布于 2012-05-29 19:28:33
实际上,你自己的答案一点也不差。我唯一要改变的不是将视图可行性设置为GONE
,而是使用addChild()
手动创建和添加它。
在独立线程中完成,在独立线程中添加动画,并且只在主线程上调用addChild()
。
通常,您应该在单独的线程上执行初始化过程,以便UI线程不会受到影响,如果花费的时间超过0.4秒,您应该开始播放加载动画至少0.5秒。这是我能告诉你的最好的UI实践,我在我的应用程序中做到了,它工作得很好!
https://stackoverflow.com/questions/10746639
复制