我似乎无法弄清楚这个。我正在开发一个Android项目,我创建了一个补间动画,可以多次缩放TextView。我的动画资源定义如下......
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator">
<scale android:fromXScale="1" android:fromYScale="1"
android:toXScale="2" android:toYScale="2"
android:pivotX="50%" android:pivotY="50%"
android:duration="500"
android:startOffset="0"/>
<scale android:fromXScale="2" android:fromYScale="2"
android:toXScale="1" android:toYScale="1"
android:pivotX="50%" android:pivotY="50%"
android:duration="500"
android:startOffset="500"/>
<scale android:fromXScale="1" android:fromYScale="1"
android:toXScale="2" android:toYScale="2"
android:pivotX="50%" android:pivotY="50%"
android:duration="500"
android:startOffset="1000"/>
<scale android:fromXScale="2" android:fromYScale="2"
android:toXScale="1" android:toYScale="1"
android:pivotX="50%" android:pivotY="50%"
android:duration="500"
android:startOffset="1500"/>
</set>
应用动画的TextView
在RelativeLayout
内的xml布局资源文件中定义,如下所示......
<TextView
android:id="@+id/textView1"
android:text="@string/textView1Text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/text_color"
android:shadowColor="@color/text_shadow_color"
android:shadowDx="0.0"
android:shadowDy="0.0"
android:shadowRadius="20.0"
android:textSize="@dimen/text_size_large"
android:layout_centerInParent="true"/>
然后,动画被初始化并从活动中加载......
animation1 = AnimationUtils.loadAnimation(this, R.anim.textview_grow_shrink);
textView1.startAnimation(growShrinkAnimation);
我认为代码解释了将TextView
从大缩小为小的意图,反之亦然
虽然动画确实启动并按预期运行,但在动画运行时,缩放似乎不成比例。在动画停止并且TextView
返回其初始状态之前,TextView似乎从屏幕边界变得太大了。
我不知道文本的初始大小是否与这种奇怪的行为有关。 textSize
属性通过36sp
资源文件中设置的值资源(text_size_large
)设置为dimens
以前有人有这个问题吗?是不是很明显我错过了什么?我怎样才能让它按预期工作?
我尝试使用谷歌搜索几个关键字,但出现的文章略有不相关。 干杯
答案 0 :(得分:0)
经过几个小时的绝望寻找解决方案后,我仍然不知道出了什么问题,我相信我遇到了一系列问题:
在活动的onCreate
方法上启动动画。将此操作移至Handler
postDelayed
修复了扩展问题
我觉得Animations API有很多错误,因为很多帖子建议
我使用单个动画而不是使用基于某些文章的集合来暗示动画集的问题......
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXScale="1.0"
android:fromYScale="1.0"
android:toYScale="0.9"
android:toXScale="0.9"
android:pivotX="50%"
android:pivotY="50%"
android:repeatCount="infinite"
android:repeatMode="reverse"
android:duration="700"
android:startOffset="0" />