<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                #### 7.1.1 View動畫的種類 View動畫的四種變換效果對應著Animation的四個子類:TranslateAnimation、ScaleAnimation、RotateAnimation和AlphaAnimation,如表7-1所示。這四種動畫既可以通過XML來定義,也可以通過代碼來動態創建,對于View動畫來說,建議采用XML來定義動畫,這是因為XML格式的動畫可讀性更好。 表7-1 View動畫的四種變換 [插圖] 要使用View動畫,首先要創建動畫的XML文件,這個文件的路徑為:res/anim/filename. xml。View動畫的描述文件是有固定的語法的,如下所示。 <? xml version="1.0" encoding="utf-8"? > <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@[package:]anim/interpolator_resource" android:shareInterpolator=["true" | "false"] > <alpha android:fromAlpha="float" android:toAlpha="float" /> <scale android:fromXScale="float" android:toXScale="float" android:fromYScale="float" android:toYScale="float" android:pivotX="float" android:pivotY="float" /> <translate android:fromXDelta="float" android:toXDelta="float" android:fromYDelta="float" android:toYDelta="float" /> <rotate android:fromDegrees="float" android:toDegrees="float" android:pivotX="float" android:pivotY="float" /> <set> ... </set> </set> 從上面的語法可以看出,View動畫既可以是單個動畫,也可以由一系列動畫組成。 `<set>`標簽表示動畫集合,對應AnimationSet類,它可以包含若干個動畫,并且它的內部也是可以嵌套其他動畫集合的,它的兩個屬性的含義如下: android:interpolator 表示動畫集合所采用的插值器,插值器影響動畫的速度,比如非勻速動畫就需要通過插值器來控制動畫的播放過程。這個屬性可以不指定,默認為@android:anim/accelerate_decelerate_interpolator,即加速減速插值器,關于插值器的概念會在7.3.2節中進行具體介紹。 android:shareInterpolator 表示集合中的動畫是否和集合共享同一個插值器。如果集合不指定插值器,那么子動畫就需要單獨指定所需的插值器或者使用默認值。 `<translate>`標簽標示平移動畫,對應TranslateAnimation類,它可以使一個View在水平和豎直方向完成平移的動畫效果,它的一系列屬性的含義如下: * · android:fromXDelta——表示x的起始值,比如0; * · android:toXDelta——表示x的結束值,比如100; * · android:fromYDelta——表示y的起始值; * · android:toYDelta——表示y的結束值。 `<scale>`標簽表示縮放動畫,對應ScaleAnimation,它可以使View具有放大或者縮小的動畫效果,它的一系列屬性的含義如下: * · android:fromXScale——水平方向縮放的起始值,比如0.5; * · android:toXScale——水平方向縮放的結束值,比如1.2; * · android:fromYScale——豎直方向縮放的起始值; * · android:toYScale——豎直方向縮放的起始值; * · android:pivotX——縮放的軸點的x坐標,它會影響縮放的效果; * · android:pivotY——縮放的軸點的y坐標,它會影響縮放的效果。 在`<scale>`標簽中提到了軸點的概念,這里舉個例子,默認情況下軸點是View的中心點,這個時候在水平方向進行縮放的話會導致View向左右兩個方向同時進行縮放,但是如果把軸點設為View的右邊界,那么View就只會向左邊進行縮放,反之則向右邊進行縮放,具體效果讀者可以自己測試一下。 `<rotate>`標簽表示旋轉動畫,對于RotateAnimation,它可以使View具有旋轉的動畫效果,它的屬性的含義如下: * · android:fromDegrees——旋轉開始的角度,比如0; * · android:toDegrees——旋轉結束的角度,比如180; * · android:pivotX——旋轉的軸點的x坐標; * · android:pivotY——旋轉的軸點的y坐標。 在旋轉動畫中也有軸點的概念,它也會影響到旋轉的具體效果。在旋轉動畫中,軸點扮演著旋轉軸的角色,即View是圍繞著軸點進行旋轉的,默認情況下軸點為View的中心點。考慮一種情況,View圍繞著自己的中心點和圍繞著自己的左上角旋轉90度顯然是不同的旋轉軌跡,不同軸點對旋轉效果的影響讀者可以自己測試一下。 `<alpha>`標簽表示透明度動畫,對應AlphaAnimation,它可以改變View的透明度,它的屬性的含義如下: * · android:fromAlpha——表示透明度的起始值,比如0.1; * · android:toAlpha——表示透明度的結束值,比如1。 上面簡單介紹了View動畫的XML格式,具體的使用方法查看相關文檔。除了上面介紹的屬性以外,View動畫還有一些常用的屬性,如下所示。 * · android:duration——動畫的持續時間; * · android:fillAfter——動畫結束以后View是否停留在結束位置,true表示View停留在結束位置,false則不停留。 下面是一個實際的例子: // res/anim/animation_test.xml <? xml version="1.0" encoding="utf-8"? > <set xmlns:android="http://schemas.android.com/apk/res/android" android:fillAfter="true" android:zAdjustment="normal" > <translate android:duration="100" android:fromXDelta="0" android:fromYDelta="0" android:interpolator="@android:anim/linear_interpolator" android:toXDelta="100" android:toYDelta="100" /> <rotate android:duration="400" android:fromDegrees="0" android:toDegrees="90" /> </set> 如何應用上面的動畫呢?也很簡單,如下所示。 Button mButton = (Button) findViewById(R.id.button1); Animation animation = AnimationUtils.loadAnimation(this, R.anim.animation_ test); mButton.startAnimation(animation); 除了在XML中定義動畫外,還可以通過代碼來應用動畫,這里舉個例子,如下所示。 AlphaAnimation alphaAnimation = new AlphaAnimation(0, 1); alphaAnimation.setDuration(300); mButton.startAnimation(alphaAnimation); 在上面的代碼中,創建了一個透明度動畫,將一個Button的透明度在300ms內由0變為1,其他類型的View動畫也可以通過代碼來創建,這里就不做介紹了。另外,通過Animation的setAnimationListener方法可以給View動畫添加過程監聽,接口如下所示。從接口的定義可以很清楚地看出每個方法的含義。 public static interface AnimationListener { void onAnimationStart(Animation animation); void onAnimationEnd(Animation animation); void onAnimationRepeat(Animation animation); }
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看