您好,登錄后才能下訂單哦!
這篇文章主要介紹在xml中如何實現動畫,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
1. Selector
Android中的Selector主要是用來改變ListView和Button控件的默認背景。
1.創建mylist_view.xml文件
首先在res目錄下新建drawable文件夾,再在新建的drawable文件夾中新建mylist_view.xml,其目錄結構為:res/drawable/mylist_view.xml。
2.根據具體需求編輯mylist_view.xml文件
新建mylist_view.xml文件后,在沒有添加任何屬性時其內部代碼結構為:
<?xml version="1.0" encoding="utf-8" ?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> </selector>
下面就可以根據項目需求,在其內部定義為自己想要的樣式了,主要屬性如下:
<?xml version="1.0" encoding="utf-8" ?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 默認時的背景圖片--> <item android:drawable="@drawable/pic1" /> <!-- 沒有焦點時的背景圖片 --> <item android:state_window_focused="false" android:drawable="@drawable/pic1" /> <!-- 非觸摸模式下獲得焦點并單擊時的背景圖片 --> <item android:state_focused="true" android:state_pressed="true" android:drawable= "@drawable/pic2" /> <!-- 觸摸模式下單擊時的背景圖片--> <item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/pic3" /> <!--選中時的圖片背景--> <item android:state_selected="true" android:drawable="@drawable/pic4" /> <!--獲得焦點時的圖片背景--> <item android:state_focused="true" android:drawable="@drawable/pic5" /> </selector>
3.引用mylist_view.xml文件
三種方法可以來引用剛才創建的文件:
(1)在ListView中添加如下屬性代碼
android:listSelector="@drawable/mylist_view"
(2)在ListView的item界面中添加如下屬性代碼
android:background="@drawable/mylist_view"
(3)利用JAVA代碼直接編寫
Drawable drawable = getResources().getDrawable(R.drawable.mylist_view);
listView.setSelector(drawable);
為了防止列表拉黑的情況發生,需要在ListView中添加以下的屬性代碼
android:cacheColorHint="@android:color/transparent"
屬性介紹:
android:state_selected選中
android:state_focused獲得焦點
android:state_pressed點擊
android:state_enabled設置是否響應事件,指所有事件
2. 在XML中寫動畫
Animation也可以放在XML文件中,這樣程序的可維護性提高了。在XML中寫動畫的步驟如下
1.在res文件夾下面新建一個名為anim的文件夾
2.創建xml文件,并首先加入set標簽,改標簽如下
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator"> </set>
3.在該標簽當中加入rotate,alpha,scale或者translate標簽
4.在代碼當中使用AnimationUtils加載xml文件,并生成Animation對象
Alpha動畫
<?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="1.0" android:toAlpha="0.0" android:startOffset="500" android:duration="2000" /> </set> Animation a=AnimationUtils.loadAnimation(this, R.anim.alpha); iv.startAnimation(a);
Scale動畫
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator"> <scale android:fromXScale="1.0" android:toXScale="0.0" android:fromYScale="1.0" android:toYScale="0.0" android:pivotX="50%" android:pivotY="50%" android:duration="2000" /> </set>
Rotate動畫
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator"> <rotate android:fromDegrees="0" android:toDegrees="400" android:pivotX="50%" android:pivotY="50%" android:duration="3000" /> </set>
Translate動畫
<?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="50%" android:toXDelta="100%" android:fromYDelta="50%" android:toYDelta="100%" android:duration="3000" /> </set>
這里重點提一下android:pivotX和android:pivotY和android:fromXDelta,android:toXDelta
android:pivotX="50"使用絕對坐標
android:pivotX="50%"相對自己
android:pivotX="50%p"相對父控件
這些動畫怎么調用的呢?
在styles.xml中調用:
<?xml version="1.0" encoding="utf-8"?> <resources> <style mce_bogus="1" name="ThemeActivity"> <item name="android:windowAnimationStyle">@style/AnimationActivity</item> <item name="android:windowNoTitle">true</item> </style> <style name="AnimationActivity" parent="@android:style/Animation.Activity" mce_bogus="1"> <item name="android:activityOpenEnterAnimation">@anim/translate</item> <item name="android:activityOpenExitAnimation">@anim/rotate</item> <item name="android:activityCloseEnterAnimation">@anim/close_enter</item> <item name="android:activityCloseExitAnimation">@anim/close_exit</item> </style> </resources>
注:在/res 目錄下新建 anim 目錄,上面的Translate.xml,Scale.xml都是在這個文件夾下新建的。
3> Interpolator -- 定義動畫變化的速率
① AccelerateDecelerateInterpolator:
在動畫開始和結束的地方速率改變比較慢,在中間的時候加速;
② AccelaerateInterPolotor:
在動畫開始的地方速率改變比較慢,然后開始加速;
③ CycleInterpolator:
動畫循環播放特定的次數,速率沿著正弦曲線
④ DecelerateInterpolator:
在動畫結束的地方速率比較慢
⑤ LinearInterpolator:
動畫以勻速運動
在xml文件中定義Interpolator
android:interpolator="@android:anim/accelerate_interpolator"
android:shareInterpolator="true"
這樣所有的Animation共用一個Interpolator。
在代碼中用代碼設置如下
anim.setInterpolator(new AccelerateInterpolator());
在new一個AnimationSet中傳入true則所有的Animation共用Interpolator。
以上是“在xml中如何實現動畫”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。