首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android动画-视图的初始状态

Android动画-视图的初始状态
EN

Stack Overflow用户
提问于 2012-05-25 07:23:04
回答 5查看 1.2K关注 0票数 3

我得到了一个Animation,它导致视图滑出屏幕向右滑动,这与以下代码的工作预期一样:

代码语言:javascript
运行
复制
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);

这意味着我应用此动画的视图将漂亮地滑出屏幕。当然,我有一个相反的滑入方式。但我的问题是,我如何才能让视图离开屏幕,这样我就可以在不应用该动画的情况下滑动它一次?

我玩过负边距之类的游戏,但我似乎找不到合适的属性来让我的视图在发布时从屏幕上消失。

为了澄清,我可以在开始时用另一个动画完美地隐藏它,但我可以看到它消失了,即使只有一小段时间。必须有一种方法让它在一开始就不在那里,然后让我把它滑进去。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-05-29 20:31:49

我不是动画专家,但我会试一试:)

这是我正在使用的动画,它从右侧滑入一个视图

EnterByRight.xml

代码语言:javascript
运行
复制
 <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。当我想让它滑进去的时候:

代码语言:javascript
运行
复制
Animation animationEnterByRight = AnimationUtils.loadAnimation(this, R.anim.animationentrancebyright);
tableLayout.startAnimation(animationEnterByRight);

它来自屏幕之外,我不需要先把它放在外面,动画会帮我解决这个问题。如果您想在视图加载后立即对其进行动画处理,则可以很好地执行此操作。

如果你需要让你的视图在一段时间内保持“不可篡改”,然后显示动画,除了View.Visible和View.Gone,我想不出其他的解决方案。但我不明白为什么这是个问题?

干杯!

票数 4
EN

Stack Overflow用户

发布于 2012-05-25 16:10:48

一个可能的解决方案(考虑到这个问题的受欢迎程度非常低)可能是我目前使用的那个,尽管我一点也不喜欢它。我制作这个视图是为了让View.GONE具有可见性,并应用动画使其向右移动。

然后,第一次(我控制它是第一次在视图上使用标记),我将可见性设置为View.VISIBLE,并应用动画来滑入。这可以像预期的那样工作,没有毛刺和跳跃,但我仍然担心同时向许多与性能相关的元素添加动画的影响。

票数 3
EN

Stack Overflow用户

发布于 2012-05-30 03:28:33

实际上,你自己的答案一点也不差。我唯一要改变的不是将视图可行性设置为GONE,而是使用addChild()手动创建和添加它。

在独立线程中完成,在独立线程中添加动画,并且只在主线程上调用addChild()

通常,您应该在单独的线程上执行初始化过程,以便UI线程不会受到影响,如果花费的时间超过0.4秒,您应该开始播放加载动画至少0.5秒。这是我能告诉你的最好的UI实践,我在我的应用程序中做到了,它工作得很好!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10746639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档