ホームページ  >  記事  >  ウェブフロントエンド  >  Androidアニメーションアニメーションの詳しい解説(2):組み合わせアニメーション特殊効果_html/css_WEB-ITnose

Androidアニメーションアニメーションの詳しい解説(2):組み合わせアニメーション特殊効果_html/css_WEB-ITnose

WBOY
WBOYオリジナル
2016-06-24 11:37:591151ブラウズ

はじめに

前回のブログ Android アニメーションのアニメーション詳細説明 (1): トゥイーン アニメーション Android のトゥイーン アニメーションの 4 つの形式を紹介しましたが、このブログを読んだ兄弟なら一緒に理解できると思います。まだ理解していない場合は、リンクをクリックして勉強してから、簡単なアニメーション効果を組み合わせてクールなアニメーション効果を作成する方法を学びに来てください。


1. アニメーションの続き

タイトルにあるように、考えてみてください。ページに多くのアニメーションが含まれている場合、これらのアニメーションは順番に再生される必要があります。つまり、1 つのアニメーションが再生された後、別のアニメーションが継続して再生されます。これらのアニメーションに一貫性があるように再生されます。これを達成するにはどうすればよいでしょうか? 開発経験や論理的思考を持っている人は、このアニメーションの再生が終了したら、別のアニメーションを再生することを検討すると思います。

おめでとうございます、あなたと私は同じことを考えています。

この種のアニメーションの再生を通じて監視する方法を見てみましょう:

rreee
コメントをかなり詳しく書きましたが、この方法は非常に簡単であると言えます。特に言うことはありません。


上記で紹介したアニメーション再生の終了を監視するリスナーの使用に加えて、より簡単な方法があり、最初にお勧めします。それがアニメーション セットです。

ここでは、アニメーション属性 startOffset を導入します。 それの使い方?アニメーションを定義するコードを見てください:

 private void continueAnim(){        // 先加载第一个动画        Animation translate = AnimationUtils.loadAnimation(getActivity(), R.anim.translate_animation);        // 在加载第二个动画        final Animation scale = AnimationUtils.loadAnimation(getActivity(), R.anim.scale_animation);        // 接下来,我们队第一个动画进行监听,当它播放完成后,我们播放第二个动画        translate.setAnimationListener(new Animation.AnimationListener() {            @Override            public void onAnimationStart(Animation animation) {            }            @Override            public void onAnimationEnd(Animation animation) {                imgView.startAnimation(scale);            }            @Override            public void onAnimationRepeat(Animation animation) {            }        });        imgView.startAnimation(translate);    }

translation によって定義されたアニメーションを詳しく見てください。この属性の値は、実際にはアルファ アニメーションの継続時間の値です。これは 3 秒の遅延を意味します。実際には、最初のアルファ アニメーションが完了した後に再生されます。

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"    android:fillAfter="true"    android:fillEnabled="true">    <alpha        android:fromAlpha="0"        android:toAlpha="1"        android:duration="3000"/>    <translate        android:duration="1000"        android:fromXDelta="0"        android:fromYDelta="0"        android:toXDelta="100"        android:toYDelta="100"        android:startOffset="3000"        /></set>

さて、これを書いた後、実行中のエフェクトを見てみましょう:



2. アニメーションの再生

アニメーションの再生 (Siyi という名前の由来) は、アニメーションを繰り返し再生することです。上のアニメーション gif を見てください。実際にアニメーションが繰り返し再生されます。では、Android はどのようにしてアニメーションを繰り返し再生するのでしょうか?

Android 自体がアニメーションを定義するための 2 つの属性、repeatCount とrepeatMode を提供しているため、実際には非常に簡単です。これら 2 つの属性をアニメーションに設定するだけで問題ありません。

記憶を容易にするために、コードを見てみましょう:

Animation continueAnim = AnimationUtils.loadAnimation(getActivity(), R.anim.continue_animation);imgView.startAnimation(continueAnim);

ここでは、repeatCount を 5 に指定すると、アニメーションは 5 回再生され、repeatMode が "restart" の場合、アニメーションは次のようになります。毎回繰り返し再生されます。 repeatMode には、アニメーションを逆再生することを意味する「reverse」という値もあります。 効果を見てみましょう。


3. アクティビティ切り替えアニメーション

アクティビティ切り替えアニメーションと言えば、例えば淘宝網や美団などをプレイすると、スライドでページ切り替えが入力されることがわかると思います。はい、これは実際にはアクティビティ切り替えアニメーションのアプリケーションです。最初は難しいと思うかもしれませんが、私が言いたいのは、アニメーション (特にトゥイーン アニメーション) の定義方法をすでに知っている場合は、次の方法を理解するだけでよいということです。 overridePendingTransition は可能です。

まずこのメソッドの定義を見てみましょう:

    <translate        android:duration="1000"        android:fromXDelta="0"        android:fromYDelta="0"        android:toXDelta="100"        android:toYDelta="100"        android:repeatCount="5"        android:repeatMode="restart"        />
最初のパラメータ enterAnim は、開始される新しいアクティビティが開始されるときのアニメーションです。 2 番目のパラメータ exitAnim は、実際には元のアクティビティが終了するときのアニメーションを参照します。効果。

次に、2 つのアニメーション リソースを定義しましょう: fade_in.xml とhold_out.xml

/**     * @param enterAnim A resource ID of the animation resource to use for     * the incoming activity.  Use 0 for no animation.     * @param exitAnim A resource ID of the animation resource to use for     * the outgoing activity.  Use 0 for no animation.     */    public void overridePendingTransition(int enterAnim, int exitAnim) {        try {            ActivityManagerNative.getDefault().overridePendingTransition(                    mToken, getPackageName(), enterAnim, exitAnim);        } catch (RemoteException e) {        }    }
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"    android:interpolator="@android:anim/accelerate_interpolator"    >    <alpha        android:fromAlpha="0.2"        android:toAlpha="1.0"        android:duration="1000"        /></set>

アニメーションを定義したら、新しいアクティビティを開始するとき、またはアクティビティを終了するときに、overridePendingTransition メソッドをオーバーライドし、Just を渡すだけです。アニメーションを追加します:

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"    android:interpolator="@android:anim/accelerate_interpolator">    <translate        android:fromXDelta="0%p"        android:toXDelta="100%p"        android:duration="1000"        /></set>

または:

Intent intent = new Intent(getActivity(),SecondActivity.class);startActivity(intent);overridePendingTransition(R.anim.fade_in,R.anim.hold_out);
そして効果を見てください:


叫ばれたことがありますか、それはとても簡単であることがわかりました! 急いで自分で試してみてください。


フォローしてください:

実際、複雑なアニメーションは、これらのアニメーションを 1 つのステップで明確に分析して統合するだけです。段階的にロックを解除できます。

その後、開発プロセスで使用した 2 つのアニメーションを紹介するブログをさらに 2 つ書きます。もちろん、それらは経験を共有するだけです。ご期待ください。


ソース コードのダウンロード アドレス (無料): http://download.csdn.net/detail/zuiwuyuan/9047739

著作権表示: この記事はブロガーによるオリジナルの記事であり、許可なく複製することはできません。ブロガーの許可。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。