2016-05-25 5 views
0

私は1つのスライドベースのアプリケーションで作業しており、カスタムRelativeLayoutを使用してシェイプを作成しています。 viewHierarchyのレベル)。シェイプはスライドの内容です。 ObjectAnimatorまたはViewPropertyAnimatorを使用して、アニメーションの変換、回転、またはシェイプのプロパティのスケールを設定しようとしています。アニメーションが滑らかではありません。そのちらつき。ここObjectAnimatorを使用したカスタムビュー(ViewHierarchyの葉ノード)をアニメーションで滑らかにしない

サンプルコード切り取り領域

PropertyValuesHolder

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)); //要求に応じてonAnimationEnd、onAnimationEndをオーバーライドするリスナを追加しています。anim1.addListener(新しいAnimationListener(shape、animData、slideEventHandler));

anim1.start();上記のコードで

ShapeがcustomeView(、カスタマーのrelativlayout)であること等

ライン円キューブ三角形など任意の幾何学的形状であってもよい助けてください!

答えて

0

おそらく、アニメーション化しているビューで一部の画像を使用しているか、アニメーション化している画像が一部移動しています。それらのためにdrawableフォルダを使用した場合、それらをfolder drawable-nodpiに移動しようとします。それは毎回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); 
     } 
    } 

その後、res.animに追加sample_animation.xml:ここ

はサンプルです。

<?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> 

使用:FYI問題は形状の充填のすべての種類である

applyAnimation(context, yourview, R.anim.sample_animation, 0); 
+0

@stephan。 しかし、図形、グラデーション、または単色で塗りつぶすことができます。 しかし、すべての場合において、ちらつきが起こっている。 実線で塗りつぶしています。 これはカスタム表示です。では、描画に必要な最適化は何ですか? 私はカスタムシェイプのonDrawメソッドをチェックしました。 私を助けてください。 ニーズに感謝 –

+0

更新と答えからサンプルを試してみてください) :-)返信用 –

+0

@Stephanおかげで、それは私のrequirement.Iが私のアニメーション の私の要件ごとにキーフレーム、PropertiesValueHolderとObjectAnimatorを使用してアニメーションをやっているスーツはありませんだから、これらすべてのオブジェクトは、アニメーションを開始する前に作成する 私のコードスニペットに概要を持ってください。私はcustomeView(relativelayoutの子)であり、このビューが最も深いレベル(ルートビューから90番目のレベル)にある私の描画された形状にアニメーションを適用しています。 アニメーションは、私が適用され、正しく起こっているが、いくつかの (スムーズでない)ちらつきがあり、この点で おかげで私を助けてください –

関連する問題