Android UI開發第四十三篇――使用Property Animation實現墨跡天氣3.0引導界面及動畫實現
來源:程序員人生 發布時間:2014-09-17 19:48:31 閱讀次數:4724次
前面寫過《墨跡天氣3.0引導界面及動畫實現》,里面完美實現了動畫效果,那一篇文章使用的View
Animation,這一篇文章使用的Property Animation實現。Property Animation是Android3.0以后新增的動畫庫。
這篇文章的源碼以及效果在github。
實現墨跡天氣向上滑動的viewpager使用的開源庫ViewPager-Android。ViewPager-Android開源庫設置app:orientation定義滑動方向。
墨跡天氣引導界面共有4個視圖,先看一下:(這里引入的圖片都是實現后的,截圖都是靜態圖,運行程序看動畫效果)。

圖一 圖二

圖三 圖四
墨跡天氣的引導界面使用的無非是移動、漸變、縮放、轉動或者其中幾個的組合。我們介紹其中的部分實現。
1、縮放動畫
首先是圖一的“極低耗電”使用了一個縮放效果,使用Property Animation實現如下:
xml動畫文件:
[html]
view plaincopyprint?
- <?xml
version="1.0"
encoding="utf-8"?>
- <set
xmlns:android="http://schemas.android.com/apk/res/android"
- android:ordering="together"
>
-
- <objectAnimator
- android:duration="1000"
- android:interpolator="@android:anim/accelerate_decelerate_interpolator"
- android:propertyName="scaleX"
- android:valueFrom="1.0"
- android:valueTo="1.1"
- android:valueType="floatType"
>
- </objectAnimator>
- <objectAnimator
- android:duration="1000"
- android:interpolator="@android:anim/accelerate_decelerate_interpolator"
- android:propertyName="scaleY"
- android:valueFrom="1.0"
- android:valueTo="1.1"
- android:valueType="floatType"
>
- </objectAnimator>
-
- </set>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:ordering="together" >
<objectAnimator
android:duration="1000"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:propertyName="scaleX"
android:valueFrom="1.0"
android:valueTo="1.1"
android:valueType="floatType" >
</objectAnimator>
<objectAnimator
android:duration="1000"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:propertyName="scaleY"
android:valueFrom="1.0"
android:valueTo="1.1"
android:valueType="floatType" >
</objectAnimator>
</set>
java使用:
[java]
view plaincopyprint?
- animation1=(AnimatorSet)AnimatorInflater.loadAnimator(PropertyAnimActivity.this,
- R.animator.tutorail_rotate);
- LinearInterpolator lin = new LinearInterpolator();
- animation1.setInterpolator(lin);
- t1_icon2.setVisibility(View.VISIBLE);
-
- animation1.setTarget(t1_icon2);
- animation1.start();
animation1=(AnimatorSet)AnimatorInflater.loadAnimator(PropertyAnimActivity.this,
R.animator.tutorail_rotate);
LinearInterpolator lin = new LinearInterpolator();
animation1.setInterpolator(lin);
t1_icon2.setVisibility(View.VISIBLE);
animation1.setTarget(t1_icon2);
animation1.start();
2、移動漸變組合動畫
圖一中下面的箭頭使用了移動漸變組合動畫,實現如下:
xml文件:
[html]
view plaincopyprint?
- <?xml
version="1.0"
encoding="utf-8"?>
- <set
xmlns:android="http://schemas.android.com/apk/res/android"
- android:ordering="together"
>
-
- <!--
- 可以包含<objectAnimator>,
<valueAnimator>,<set>項
- 屬性:android:ordering=["together" | "sequentially"],子集執行順序
- sequentially Play animations in this set sequentially
- together (default) Play animations in this set at the same time.
- -->
-
- <set
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:ordering="together"
>
- <objectAnimator
- android:duration="1000"
- android:propertyName="translationX"
- android:repeatCount="infinite"
- android:repeatMode="reverse"
- android:valueFrom="0"
- android:valueTo="0"
- android:valueType="floatType"
>
- </objectAnimator>
- <objectAnimator
- android:duration="1000"
- android:propertyName="translationY"
- android:repeatCount="infinite"
- android:repeatMode="reverse"
- android:valueFrom="-15"
- android:valueTo="20"
- android:valueType="floatType"
>
- </objectAnimator>
- </set>
-
- <objectAnimator
- android:duration="1000"
- android:propertyName="alpha"
- android:repeatCount="infinite"
- android:valueFrom="1.0"
- android:valueTo="0.3"
- android:valueType="floatType"
>
- </objectAnimator>
- <!--
- objectAnimator:
-
- android:propertyName
- 對view可以設置一下值:
- translationX and translationY:
- These properties control where the View is located
- as a delta from its left and top coordinates which
- are set by its layout container.
- rotation, rotationX, and rotationY:
- These properties control the rotation
- in 2D (rotation property) and 3D around the pivot point.
- scaleX and scaleY:
- These properties control the 2D scaling of a View around
- its pivot point.
- pivotX and pivotY:
- These properties control the location of the pivot point,
- around which the rotation and scaling transforms occur.
- By default, the pivot point is located at the center of
- the object.
- x and y:
- These are simple utility properties to describe
- the final location of the View in its container,
- as a sum of the left and top values and translationX
- and translationY values.
- alpha:
- Represents the alpha transparency on the View.
- This value is 1 (opaque) by default, with a value of 0
- representing full transparency (not visible).
-
- 還可以設置"backgroundColor"等值
-
- android:valueTo
- float, int, or color. Required. The value where the animated property ends.
- Colors are represented as six digit hexadecimal numbers (for example, #333333).
-
- android:valueFrom
- float, int, or color. The value where the animated property starts. If not specified,
- the animation starts at the value obtained by the property's get method.
- Colors are represented as six digit hexadecimal numbers (for example, #333333).
-
- android:duration
- int. The time in milliseconds of the animation. 300 milliseconds is the default.
-
- android:startOffset
- int. The amount of milliseconds the animation delays after start() is called.
-
- android:repeatCount:重復次數
- 說明:
- infinite:循環執行,
- 具體正整數表示循環次數
-
- android:repeatMode:重復模式,
- 說明:
- restart:重新從頭開始執行
- reverse:反方向執行
-
- android:valueType
- Keyword. Do not specify this attribute if the value is a color.
- The animation framework automatically handles color values
-
- intType: Specifies that the animated values are integers
- floatType (default): Specifies that the animated values are floats
- -->
-
- </set>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:ordering="together" >
<!--
可以包含<objectAnimator>, <valueAnimator>,<set>項
屬性:android:ordering=["together" | "sequentially"],子集執行順序
sequentially Play animations in this set sequentially
together (default) Play animations in this set at the same time.
-->
<set
xmlns:android="http://schemas.android.com/apk/res/android"
android:ordering="together" >
<objectAnimator
android:duration="1000"
android:propertyName="translationX"
android:repeatCount="infinite"
android:repeatMode="reverse"
android:valueFrom="0"
android:valueTo="0"
android:valueType="floatType" >
</objectAnimator>
<objectAnimator
android:duration="1000"
android:propertyName="translationY"
android:repeatCount="infinite"
android:repeatMode="reverse"
android:valueFrom="-15"
android:valueTo="20"
android:valueType="floatType" >
</objectAnimator>
</set>
<objectAnimator
android:duration="1000"
android:propertyName="alpha"
android:repeatCount="infinite"
android:valueFrom="1.0"
android:valueTo="0.3"
android:valueType="floatType" >
</objectAnimator>
<!--
objectAnimator:
android:propertyName
對view可以設置一下值:
translationX and translationY:
These properties control where the View is located
as a delta from its left and top coordinates which
are set by its layout container.
rotation, rotationX, and rotationY:
These properties control the rotation
in 2D (rotation property) and 3D around the pivot point.
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
------分隔線----------------------------
------分隔線----------------------------