Android Animations動畫使用詳解

一、動畫類型

Android的animation由四種類型組成:alpha、scale、translate、rotate

XML配置文件中

alpha漸變透明度動畫效果
scale漸變尺寸伸縮動畫效果
translate畫面轉換位置移動動畫效果
rotate畫面轉移旋轉動畫效果

?

?

?


Java Code代碼中?

AlphaAnimation漸變透明度動畫效果
ScaleAnimation漸變尺寸伸縮動畫效果
TranslateAnimation畫面轉換位置移動動畫效果
RotateAnimation畫面轉移旋轉動畫效果

?

?



二、Android動畫模式

Animation主要有兩種動畫模式:tweened?和?frame

  • 一種是tweened animation(漸變動畫)?
XML中
JavaCode
alphaAlphaAnimation
scaleScaleAnimation

?

?

?

?

  • 一種是frame by frame(畫面轉換動畫)?
XML中
JavaCode
translateTranslateAnimation
rotateRotateAnimation

?

?

?

三、XML文件中定義動畫

?

① 打開Eclipse,新建Android工程

② 在res目錄中新建anim文件夾

③ 在anim目錄中新建一個myanim.xml(注意文件名小寫)

④ 加入XML的動畫代碼

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"><alpha/><scale/><translate/><rotate/>
</set>

四、Android?XML動畫解析

1、Alpha

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<alpha
android:fromAlpha="0.1"
android:toAlpha="1.0"
android:duration="3000"
/> 
<!-- 透明度控制動畫效果 alpha浮點型值:fromAlpha 屬性為動畫起始時透明度toAlpha   屬性為動畫結束時透明度說明: 0.0表示完全透明1.0表示完全不透明以上值取0.0-1.0之間的float數據類型的數字長整型值:duration  屬性為動畫持續時間說明:     時間以毫秒為單位
-->
</set>

2、Scale

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"><scale  android:interpolator="@android:anim/accelerate_decelerate_interpolator"android:fromXScale="0.0"android:toXScale="1.4"android:fromYScale="0.0"android:toYScale="1.4"android:pivotX="50%"android:pivotY="50%"android:fillAfter="false"android:duration="700" />
</set>
<!-- 尺寸伸縮動畫效果 scale屬性:interpolator 指定一個動畫的插入器在我試驗過程中,使用android.res.anim中的資源時候發現有三種動畫插入器:accelerate_decelerate_interpolator  加速-減速 動畫插入器accelerate_interpolator            加速-動畫插入器decelerate_interpolator            減速- 動畫插入器其他的屬于特定的動畫效果浮點型值:fromXScale 屬性為動畫起始時 X坐標上的伸縮尺寸    toXScale   屬性為動畫結束時 X坐標上的伸縮尺寸     fromYScale 屬性為動畫起始時Y坐標上的伸縮尺寸    toYScale   屬性為動畫結束時Y坐標上的伸縮尺寸    說明:以上四種屬性值    0.0表示收縮到沒有 1.0表示正常無伸縮     值小于1.0表示收縮  值大于1.0表示放大pivotX     屬性為動畫相對于物件的X坐標的開始位置pivotY     屬性為動畫相對于物件的Y坐標的開始位置說明:以上兩個屬性值 從0%-100%中取值50%為物件的X或Y方向坐標上的中點位置長整型值:duration  屬性為動畫持續時間說明:   時間以毫秒為單位布爾型值:fillAfter 屬性 當設置為true ,該動畫轉化在動畫結束后被應用
-->

3、Translate

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="30"
android:toXDelta="-80"
android:fromYDelta="30"
android:toYDelta="300"
android:duration="2000"
/>
<!-- translate 位置轉移動畫效果整型值:fromXDelta 屬性為動畫起始時 X坐標上的位置    toXDelta   屬性為動畫結束時 X坐標上的位置fromYDelta 屬性為動畫起始時 Y坐標上的位置toYDelta   屬性為動畫結束時 Y坐標上的位置注意:沒有指定fromXType toXType fromYType toYType 時候,默認是以自己為相對參照物             長整型值:duration  屬性為動畫持續時間說明:   時間以毫秒為單位
-->
</set>

4、Rotate

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<rotate android:interpolator="@android:anim/accelerate_decelerate_interpolator"android:fromDegrees="0" android:toDegrees="+350"         android:pivotX="50%" android:pivotY="50%"     android:duration="3000" />  
<!-- rotate 旋轉動畫效果屬性:interpolator 指定一個動畫的插入器在我試驗過程中,使用android.res.anim中的資源時候發現有三種動畫插入器:accelerate_decelerate_interpolator       加速-減速 動畫插入器accelerate_interpolator                   加速-動畫插入器decelerate_interpolator                   減速- 動畫插入器其他的屬于特定的動畫效果浮點數型值:fromDegrees 屬性為動畫起始時物件的角度    toDegrees   屬性為動畫結束時物件旋轉的角度 可以大于360度   說明:當角度為負數——表示逆時針旋轉當角度為正數——表示順時針旋轉              (負數from——to正數:順時針旋轉)   (負數from——to負數:逆時針旋轉) (正數from——to正數:順時針旋轉) (正數from——to負數:逆時針旋轉)       pivotX     屬性為動畫相對于物件的X坐標的開始位置pivotY     屬性為動畫相對于物件的Y坐標的開始位置說明:        以上兩個屬性值 從0%-100%中取值50%為物件的X或Y方向坐標上的中點位置長整型值:duration  屬性為動畫持續時間說明:       時間以毫秒為單位
-->
</set>

XML中使用動畫效果

public static Animation loadAnimation (Context context, int id) 
//第一個參數Context為程序的上下文    
//第二個參數id為動畫XML文件的引用
//例子:
myAnimation= AnimationUtils.loadAnimation(this, R.anim.my_action);
//使用AnimationUtils類的靜態方法loadAnimation()來加載XML中的動畫XML文件

五、Java代碼中定義動畫

//在代碼中定義 動畫實例對象
private Animation myAnimation_Alpha;
private Animation myAnimation_Scale;
private Animation myAnimation_Translate;
private Animation myAnimation_Rotate;//根據各自的構造方法來初始化一個實例對象
myAnimation_Alpha = new AlphaAnimation(0.1f, 1.0f);myAnimation_Scale = new ScaleAnimation(0.0f, 1.4f, 0.0f, 1.4f,Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);myAnimation_Translate = new TranslateAnimation(30.0f, -80.0f, 30.0f, 300.0f);myAnimation_Rotate = new RotateAnimation(0.0f, +350.0f,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF, 0.5f);

六、Android 代碼動畫解析

1. AlphaAnimation

AlphaAnimation類對象定義

?

private AlphaAnimation myAnimation_Alpha;

AlphaAnimation類對象構造

AlphaAnimation(float fromAlpha, float toAlpha) 
//第一個參數fromAlpha為 動畫開始時候透明度
//第二個參數toAlpha為 動畫結束時候透明度
myAnimation_Alpha = new AlphaAnimation(0.1f, 1.0f);
//說明: 
//                0.0表示完全透明
//                1.0表示完全不透明

設置動畫持續時間

myAnimation_Alpha.setDuration(5000);
//設置時間持續時間為 5000毫秒

2. ScaleAnimation

ScaleAnimation類對象定義

private ScaleAnimation myAnimation_Scale;

ScaleAnimation類對象構造

ScaleAnimation(float fromX, float toX, float fromY, float toY,int pivotXType, float pivotXValue, int pivotYType, float pivotYValue) 
//第一個參數fromX為動畫起始時 X坐標上的伸縮尺寸    
//第二個參數toX為動畫結束時 X坐標上的伸縮尺寸     
//第三個參數fromY為動畫起始時Y坐標上的伸縮尺寸    
//第四個參數toY為動畫結束時Y坐標上的伸縮尺寸  
/*說明:以上四種屬性值    0.0表示收縮到沒有 1.0表示正常無伸縮     值小于1.0表示收縮  值大于1.0表示放大
*/
//第五個參數pivotXType為動畫在X軸相對于物件位置類型  
//第六個參數pivotXValue為動畫相對于物件的X坐標的開始位置
//第七個參數pivotXType為動畫在Y軸相對于物件位置類型   
//第八個參數pivotYValue為動畫相對于物件的Y坐標的開始位置
myAnimation_Scale = new ScaleAnimation(0.0f, 1.4f, 0.0f, 1.4f,Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);

設置動畫持續時間

myAnimation_Scale.setDuration(700);
//設置時間持續時間為 700毫秒

3. TranslateAnimation

ranslateAnimation類對象定義

private TranslateAnimation myAnimation_Translate;

TranslateAnimation類對象構造

TranslateAnimation(float fromXDelta, float toXDelta,float fromYDelta, float toYDelta) 
//第一個參數fromXDelta為動畫起始時 X坐標上的移動位置    
//第二個參數toXDelta為動畫結束時 X坐標上的移動位置      
//第三個參數fromYDelta為動畫起始時Y坐標上的移動位置     
//第四個參數toYDelta為動畫結束時Y坐標上的移動位置

設置動畫持續時間

myAnimation_Translate = new TranslateAnimation(10f, 100f, 10f, 100f);
myAnimation_Translate.setDuration(2000);
//設置時間持續時間為 2000毫秒

4. RotateAnimation
RotateAnimation類對象定義

private RotateAnimation myAnimation_Rotate;

RotateAnimation類對象構造

RotateAnimation(float fromDegrees, float toDegrees, int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)
//第一個參數fromDegrees為動畫起始時的旋轉角度    
//第二個參數toDegrees為動畫旋轉到的角度   
//第三個參數pivotXType為動畫在X軸相對于物件位置類型  
//第四個參數pivotXValue為動畫相對于物件的X坐標的開始位置
//第五個參數pivotXType為動畫在Y軸相對于物件位置類型   
//第六個參數pivotYValue為動畫相對于物件的Y坐標的開始位置
myAnimation_Rotate = new RotateAnimation(0.0f, +350.0f,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF, 0.5f);

設置動畫持續時間

myAnimation_Rotate.setDuration(3000);
//設置時間持續時間為 3000毫秒

如何Java代碼中使用動畫效果
使用從View父類繼承過來的方法startAnimation()來為View或是子類View等等添加一個動畫效果

public void startAnimation (Animation animation)
view.startAnimation(myAnimation_Alpha);
view.startAnimation(myAnimation_Scale);
view.startAnimation(myAnimation_Translate);
view.startAnimation(myAnimation_Rotate);

?

轉載于:https://www.cnblogs.com/waddell/p/3391624.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/376324.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/376324.shtml
英文地址,請注明出處:http://en.pswp.cn/news/376324.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Jenkins入門指南

新手學習使用Jenkins 安裝好Jenkins后如何運行腳本 1.新建item 2.輸入任務名稱&#xff0c;選擇項目類型&#xff0c;點擊確定 3.填個描述就好了&#xff0c;新手學jenkins&#xff0c;其他都不看&#xff0c;跑起來再說 4.點這個高級&#xff0c;選擇你要運行的腳本所在…

Sublime Text 3 史上最性感的編輯器

↑ ↑ ↑ ↑ ↑ 請看文件夾 ↑ ↑ ↑ ↑ ↑ 下載 / 安裝 windows / MAC OS 官網下載&#xff0c;雙擊安裝&#xff0c;這個都會吧&#xff5e; linux linux下安裝&#xff0c;一種辦法是從官網下載 tar.bz &#xff0c;手動安裝。 這里介紹用 apt-get 自己主動安裝方法&#xf…

[轉]怎么查看和修改 MySQL 的最大連接數?

使用 MySQL 數據庫的站點&#xff0c;當訪問連接數過多時&#xff0c;就會出現 "Too many connections" 的錯誤。出現這種錯誤有兩種情況&#xff0c;一種是網站訪問量實在太大&#xff0c;服務器已經負擔不起&#xff0c;此時就應該考慮負載均衡或者其它減少服務器壓…

對qps、tps、pv、uv的理解

QPS &#xff08;Queries Per Second&#xff09;&#xff1a;每秒查詢數&#xff08;個別地方叫每秒查詢率&#xff1f;每秒查詢率是個奇怪的東西&#xff0c;每小時時速&#xff1f;&#xff09;&#xff0c;表示系統在一秒內處理的查詢次數。 TPS&#xff08;Transactions …

swift入門之TableView

IOS8更新了&#xff0c;oc還將繼續但新增了swift語言&#xff0c;能夠代替oc編寫ios應用&#xff0c;本文將使用swift作為編寫語言&#xff0c;為大家提供step by step的教程。 工具 ios每次更新都須要更新xcode&#xff0c;這次也不例外&#xff0c;但使用xcode6&#xff0c;須…

Training-ActionBar

閱讀&#xff1a;http://developer.android.com/training/basics/actionbar/index.html 對于API11以下的兼容&#xff1a; Update your activity so that it extends ActionBarActivity. For example: public class Main Activit yextends ActionBarActivity{...} In your mani…

Jmeter BeanShell學習(一) - BeanShell取樣器(一)

通過利用BeanShell取樣器設置請求發送的參數。 第一步&#xff1a;添加BeanShell取樣器 第二步&#xff1a;在BeanShell中輸入執行的代碼 log.info("腳本開始執行"); //意思是將字符串輸出到日志消息中 vars.put("username","123163.com");//…

【轉】關于Python腳本開頭兩行的:#!/usr/bin/python和# -*- coding: utf-8 -*-的作用 – 指定文件編碼類型...

原文網址&#xff1a;http://www.crifan.com/python_head_meaning_for_usr_bin_python_coding_utf-8/ #!/usr/bin/python 是用來說明腳本語言是python的 是要用/usr/bin下面的程序&#xff08;工具&#xff09;python&#xff0c;這個解釋器&#xff0c;來解釋python腳本&#…

分布式系統介紹-PNUTS

PNUTS是Yahoo!的分布式數據庫系統&#xff0c;支持地域上分布的大規模并發操作。它根據主鍵的范圍區間或者其哈希值的范圍區間將表拆分為表單元&#xff08;Tablet&#xff09;&#xff0c;多個表單元存儲在一個服務器上。一個表單元控制器根據服務器的負載情況&#xff0c;進行…

Jmeter BeanShell學習(一) - BeanShell取樣器(二)

利用BeanShell取樣器獲取接口返回的JSON格式的結果&#xff0c;并將該結果寫入到文件。 第一步&#xff1a;添加BeanShell取樣器 前面幾個取樣器的內容查看&#xff1a; https://blog.csdn.net/goodnameused/article/details/96985514 第二步&#xff1a;查看返回的結果格式 …

在數據庫中outlet、code、outline為聯合組件。hibarnate插入可如此插入

hibarnate對象的映射文件如下 <id name"outlet" type"string"> <column name"OUTLET" length"10" /> <generator class"assigned" /> </id> <!-- <property name"code" type"…

日怎么沒人告訴我這博客可以改博文界面的顯示寬度的

于是我妥妥的回歸了。 weebly雖然定制功能強大&#xff0c;還能穿越時空發博文&#xff0c;但是太麻煩了&#xff0c;而且用著也不像一個博客。 既然解決了這個問題&#xff0c;那Lofter除了行間距也沒什么缺點了&#xff0c;接著用吧&#xff0c;反正weebly也傳不了大圖&#…

160 - 50 DueList.5

環境&#xff1a; Windows xp sp3 工具&#xff1a; Ollydbg exeinfope 0x00 查殼 可以看出程序有加殼&#xff0c;那么我們下一步就是脫殼了。 0x01 脫殼 看上去沒什么特別的地方&#xff0c;就直接 單步跟蹤法 來脫殼吧 近call F7&#xff0c;遠call F8 來到這里 哈&…

firefox瀏覽器中silverlight無法輸入問題

firefox瀏覽器中silverlight無法輸入問題今天用firefox瀏覽silverlight網頁&#xff0c;想在文本框中輸入內容&#xff0c;卻沒想到silverlight插件意外崩潰了。google一下&#xff0c;發現這是firefox的設置問題&#xff0c;解決方法如下&#xff1a; 1、在Firefox瀏覽器地址欄…

關鍵路徑的概念和算法

AOE網&#xff1a;在一個表示工程的帶權有向圖中&#xff0c;用頂點表示事件&#xff0c;用有向邊表示活動&#xff0c;邊上的權值表示活動的持續時間&#xff0c;稱這樣的有向圖叫做邊表示活動的網&#xff0c;簡稱AOE網。AOE網中沒有入邊的頂點稱為始點&#xff08;或源點&am…

160 - 51 DueList.6

環境&#xff1a; Windows xp sp3 工具&#xff1a; Ollydbg exeinfope 0x00 查殼 發現程序沒有加殼&#xff0c;那么我們可以直接分析了。 0x01 分析 運行程序看一看 看到錯誤信息的字符串后我們可以直接搜索了。 可以看到程序會比較輸入的長度是否為8位&#xff0c;如…

寬帶上行速率和下行速率的區別

本文由廣州寬帶網http://www.ymeibai.com/整理發布&#xff0c;廣州電信寬帶報裝&#xff0c;上廣州寬帶網。 我們一般所說的4M寬帶&#xff0c;6M寬帶&#xff0c;都是指寬帶的下行速率&#xff0c;可以理解為就是下載的速度&#xff0c;平時我們用迅雷、或者網頁下載軟件時&a…

LazyInitializationException--由于session關閉引發的異常

1,頁面中進行person.department.departmentName的讀取 2,Action 中只讀取了person&#xff0c;事務作用在Service的方法中 3,后臺會有org.hibernate.LazyInitializationException出現 因為&#xff1a;Action中Service方法結束之前&#xff0c;session已經關閉了轉載于:https:/…

160 - 52 egis.1

環境&#xff1a;windows xp 工具&#xff1a; 1、OllyDBG 2、exeinfo 3、IDA 0x00 查殼 加了UPX殼&#xff0c;那么就要脫殼了。可以使用單步法來脫殼。 UPX殼還是比較簡單的&#xff0c;開頭pushad&#xff0c;找個popad&#xff0c;然后就是jmp了。 然后就可以用OD來…

玩轉MySQL之Linux下的簡單操作(服務啟動與關閉、啟動與關閉、查看版本)

小弟今天記錄一下在Linux系統下面的MySQL的簡單使用&#xff0c;如下&#xff1a; 服務啟動與關閉 啟動與關閉 查看版本 環境 Linux版本&#xff1a;centeros 6.6&#xff08;下面演示&#xff09;&#xff0c;Ubuntu 12.04&#xff08;參見文章末尾紅色標注字體&#xff09; M…