我在一个基于幻灯片的应用程序中工作,并使用自定义RelativeLayout创建了一个形状,这是我的应用程序中非常深的节点(位置在viewHierarchy中大约是第90级)。并且形状是幻灯片的内容。 在尝试使用ObjectAnimator或ViewPropertyAnimator对形状的属性进行平移,旋转或缩放时。动画不平滑。它的闪烁。
以下是示例代码片段
016-05-25 13:45:11+0530 [scrapy] INFO: Enabled item pipelines:
2016-05-25 13:45:11+0530 [PfData] INFO: Spider opened
2016-05-25 13:45:11+0530 [PfData] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2016-05-25 13:45:11+0530 [scrapy] DEBUG: Telnet console listening on 127.0.0.1:6023
2016-05-25 13:45:11+0530 [scrapy] DEBUG: Web service listening on 127.0.0.1:6080
2016-05-25 13:45:11+0530 [PfData] INFO: Closing spider (finished)
2016-05-25 13:45:11+0530 [PfData] INFO: Dumping Scrapy stats:
{'finish_reason': 'finished',
'finish_time': datetime.datetime(2016, 5, 25, 8, 15, 11, 343313),
'log_count/DEBUG': 2,
'log_count/INFO': 7,
'start_time': datetime.datetime(2016, 5, 25, 8, 15, 11, 341872)}
2016-05-25 13:45:11+0530 [PfData] INFO: Spider closed (finished)
pvhTX,pvhTY;
PropertyValuesHolder.ofFloat(View.TRANSLATION_X,translateXFrom,translateXTo);
pvhTY = PropertyValuesHolder.ofFloat(View.TRANSLATION_Y,translateYFrom,translateYTo);
anim1 = ObjectAnimator.ofPropertyValuesHolder(shape,pvhTX,pvhTY);
anim1.setDuration((long)(animData.getDetail()。getDuration()* 1000)); //根据我的要求添加侦听器以覆盖onAnimationStart,onAnimationEnd。 anim1.addListener(new AnimationListener(shape,animData,slideEventHandler));
anim1.start();
在上面的代码中 Shape是一个customeView(custome relativlayout),它可以是任何几何形状,如线圆三角形等。
请帮帮我!!!
答案 0 :(得分:0)
可能您正在使用视图中的一些图像进行动画制作,或者它会移动一些动画效果的图像。如果你使用drawable文件夹,然后尝试将它们移动到文件夹drawable-nodpi。因为当你使用drawable dir时,每次都会进行dpi转换,因此在制作动画时会导致性能下降。
这里是样本:
public static void applyAnimation(Context context, View view, int animationResource, int animationOffsetMilisec){
Animation anim = android.view.animation.AnimationUtils.loadAnimation(context, animationResource);
anim.setStartOffset(animationOffsetMilisec);
anim.setFillAfter(true);
if(view != null) {
view.setAnimation(anim);
view.startAnimation(anim);
}
}
然后将sample_animation.xml添加到res.anim。
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator">
<rotate
xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="4000"
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:repeatCount="infinite"
android:startOffset="0"
android:toDegrees="360"
android:interpolator="@android:anim/linear_interpolator"/>
<scale
android:duration="100"
android:fromXScale="0.0"
android:toXScale="1.1"
android:toYScale="1.1"
android:fromYScale="0.0"
android:pivotX="50%"
android:pivotY="50%"
android:interpolator="@android:anim/accelerate_interpolator"/>
<!--<alpha-->
<!--android:fromAlpha="0.0"-->
<!--android:toAlpha="1.0"-->
<!--android:duration="1000" />-->
<scale
android:duration="100"
android:fromXScale="1.1"
android:toXScale="0.91"
android:toYScale="0.91"
android:fromYScale="1.1"
android:pivotX="50%"
android:pivotY="50%"
android:startOffset="100"
android:interpolator="@android:anim/accelerate_interpolator"/>
</set>
用法:
applyAnimation(context, yourview, R.anim.sample_animation, 0);