android studio上的基本動畫實現(第一篇)

来源:http://www.cnblogs.com/zhangch123/archive/2016/11/19/6079756.html
-Advertisement-
Play Games

hello,各位小伙伴們,在很多小伙伴們剛剛開始學習android的時候,常常會有一些project裡面需要有一些基本動畫的插入,那麼具體是要怎麼實現呢?我們接下一起分析一下在android中的幾種基本動畫。 (這裡我們預設是用個人覺得比eclipse更智能一些的Android Studio來實現。 ...


hello,各位小伙伴們,在很多小伙伴們剛剛開始學習android的時候,常常會有一些project裡面需要有一些基本動畫的插入,那麼具體是要怎麼實現呢?我們接下一起分析一下在android中的幾種基本動畫。

(這裡我們預設是用個人覺得比eclipse更智能一些的Android Studio來實現。ps:方法是一樣的,沒有區別,喜歡常用eclipse的朋友們別見怪哦。)

在我們進行具體學習android動畫前首先,我們要知道:在android中的動畫一般是與事件的操作處理相關的,比如說通過觸發某個事件而產生。好下麵我們正式開始:

第一:首先我們要知道在android中基礎動畫中主要分為四種:

1:Tween Animation.變換動畫

2:Layout Animation 佈局動畫

3:Frame Animation.幀動畫

4:Property Animation 屬性動畫

在本篇中先學習前兩種方法。

第二:動畫學習

:Tween Animation變換動畫:

在變換動畫中分為基本的四種:

1:Alpha:漸變透明度動畫類型

2:Scale:漸變尺寸動畫類型

3:Translate:位置移動動畫類型

4:Rotate:旋轉動畫類型

其中這四種方法所通用的屬性是一樣的,屬性如下

1,Duration:表示動畫持續時間,其單位為毫秒 ,一般在java中實現的是按照比如 button.setDuration(1000);(其中button為一個引用,1000為毫秒,也就是動畫持續時間。)

2,fillAfter:表示動畫轉換在動畫結束後被應用狀態,也就是說比如在Translate中可能動畫運行為一段平移,fillAfter就是說在動畫結束後確定動畫對象所處的位置。其返回值為一個boolean值,為true時表示結束就定在結束的位置,如果為false就說明結束後跳回動畫開始前的位置。

3,fillBefore:動畫轉化在動畫開始前的位置,可以理解與fillAfter相互理解。

4,interpolator:動畫插入器(用於對一個動畫進行一個加速,減速插入器的作用)

5:repeatcount:動畫重覆的次數,對於重覆動畫的定義。

6:repeatmode:決定動畫重覆是順序還是倒序重覆。

7,startoffset:動畫與動畫之間的時間間隔(一般用於兩個或者多個動畫的連續播放,也可以設置監聽器來代替此功能)

那麼在動畫實現這一塊上,除了可以用java來實現,也可以用佈局調用來實現(下文將講)

在java里,有如下幾種類型:

1,AlphaAnimation有參數fromAlpha:起始時的透明度,toAlpha:結束後的透明度用(0.0f到1.0f表示)f表示浮點數。

2,ScaleAniamtion有fromX,toX,和fromY,toY,以及pirotX,priotY等參數,分別表示起始和結束時坐標的大小位置,以及對於x,y坐標開始的位置。

3,TranslateAnimation有參數fromxDelta,fromyDelta為移動前x,y的起始坐標,toxDelta,toyDelta分別為結束時的x,y坐標。

4,RotateAnimation有設置參數fromDegrees起始角度,toDegrees終止角度,以及pirotX,priotY參數。

好,接下來讓我們用一個例子展開講解:

首先用Java語言來實現一個簡單的Alpha動畫,

 

1 Animation zhangch = new AlphaAnimation(0.1f,1.0f);
2 zhangch.setDuration(5000);
3 image.startAnimation(zhangch);

 

第一行中的參數因為用的是浮點數,所以要在每一個數字後面加字母f,這兩個參數的意思是說,第一個指在運行這個動畫時動畫的這個對象是從0.1的透明度開始變成第二個參數的1.0的透明度,1.0也就是正常照片了,0.0就是全部透明。

第二行是是設置動畫的運行時間為2秒,2000毫秒。

第三行是指對象image開始執行動畫。

但是,在android中除了可以用java純代碼來實現外,還可以用res文件下新建佈局文件來調用實現,

1 Animation zhangch = AnimationUtils.loadAnimation(this, R.anim.scale);
2 image.startAnimation(zhangch);

第一行的AnimationUtils是一個系統自帶的工具類,loadAnimation是載入動畫,裡面的參數是指從當前界面調用res裡面的anim文件夾里的scale文件,下圖第一張為res文件設置,第二張為scale裡面的佈局:

 

具體事例如下:

按照UI界面所示執行對上方圖標的動畫演示,

其中continue_btn和continue_btn2為兩個基本動畫的組合,先看一下所需的構造

 

共需要兩個java文件,兩個layout文件,這裡我們只用java代碼來實現動畫而沒有用佈局調用是因為,java代碼的動畫可以更加適應於動態變換和管理,作為一名代碼人應該保證代碼優先選擇。

首先進行layout佈局

然後接著再來兩個relativelayout就可以了,記得設置id名稱。

下麵進行代碼部分:

 

其中這裡需要有一個簡單的講解,對於上圖這個連續動畫的實現:我們這裡用的是一個設置監聽器的過程,在case執行的內容里寫下兩個動畫,start一個動畫並且對這個動畫設置一個Animation

監聽器,系統會自動生成如下三個狀態,我們從字面意義上看出,只要在這個結束狀態的執行命令中加入一句說明,start另一個動畫就可以實現連續的兩個動畫播放,如果有多個的話,可以再多設置。

 

當然還有常用的在一個頁面跳轉另一個頁面時的動畫,如下所示,其中:

overridePendingTransition裡面第一個參數表示第一個activity退出的動畫,第二個參數表示第二activity進入的動畫,這裡用了佈局調用,

其rotate佈局如下:

interpolator為之前講的屬性裡面的動畫插入器。

 

好,這就是基本的第一個基礎動畫的實現,下麵我們說第二個基礎動畫,FrameAnimation

逐幀動畫原理就是將很個圖片對象按一定的速度播放讓人產生好像連續動畫的錯覺。在這裡就用一個例子來講解

在drawable下建立一個xml文件,在xml文件里寫入list的多個對象,並加入確定的值進去,

代碼部分和第三個基礎動畫放到一起,LayoutAnimation

佈局動畫有分setOrder控制順序和LayoutAnimationCotroller佈局控制器

具體看例題java中的route為佈局動畫名:,move為逐幀動畫名。

 

在一個新的Main3Activity中寫下:

 

併在佈局文件中寫好list文件

就可運行。

好全部的代碼包會在下麵分析下載,關於屬性動畫比較複雜,下一講中將專門講解,希望可以幫助到大家,O(∩_∩)O謝謝。

源android文件地址為 https://pan.baidu.com/s/1jHEi9Hs

如有不足之處,歡迎各位批評指正。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 》JavaAPI 文檔註釋可以在:類,常量,方法上聲明 文檔註釋可以被javadoc命令所解析並且根據內容生成手冊 1 package cn.fury.se_day01; 2 /** 3 * 文檔註釋可以在:類,常量,方法上聲明 4 * 文檔註釋可以被javadoc命令所解析並且根據內容生成手冊 5 ...
  • 一、算數運算符和算術表達式 +加 a+b -減 a-b *乘 a*b /除 a/b %取模 a%b **求冪 a**b 二、關係運算符和關係表達式 < ,<=,>,>=,==,!=其中< ,<=,>,>=,的運算符的優先順序大於==,!= 三、邏輯運算符和邏輯表達式 and 與a and b or 或 ...
  • 問題:在 Android 平臺下,顯示 Emoji 文字,無法顯示彩色(皆為黑色),例如 Edit 控制項,即使將 Edit.ControlType = Platform 設為平臺原生控制項,還是沒用(真機測試 Edit.ControlType 設定為 Style 與 Platform 是一樣的,而 i ...
  • 一、命名規則 1.變數名、包名、模塊名通常採用小寫,也可以使用下劃線 2.類名首字母大寫,對象名小寫。類的私有變數、私有方法以兩個下劃線作為首碼 例:class Student: #類名 student = Student(“ddd”) #對象 3.函數名通常採用小寫 例:def compareNu ...
  • 改源代碼大小 1.File→Settings→Editor→Colors&Fonts→Font 2.首先得需要Save as一個Scheme,接下來才可以修改字體,名字可以任意取 改運行字體的大小 ...
  • 本例用來展示 QTimer 的使用,如何定時的更新一個視窗部件。 1 QLCDNumber 類 QLCDNumber 是一種可將數字顯示為類似 LCD 形式的視窗部件,它同 QLabel 一樣,都繼承自 QFrame,而 QFrame 繼承自 QWidget 頭文件 digitalclock.h D ...
  • 文章地址 文章地址 拓展閱讀: RabbitMQ + PHP (一)入門與安裝 RabbitMQ + PHP (二)AMQP拓展安裝 RabbitMQ + PHP (三)案例演示 RabbitMQ + PHP (一)入門與安裝 RabbitMQ + PHP (二)AMQP拓展安裝 RabbitMQ ...
  • 原文地址 以下是消息隊列以下的大綱,本文主要介紹消息隊列概述,消息隊列應用場景和消息中間件示例(電商,日誌系統)。 本次分享大綱 消息隊列概述 消息隊列應用場景 消息中間件示例 JMS消息服務(見第二篇:大型網站架構系列:分散式消息隊列(二)) 常用消息隊列(見第二篇:大型網站架構系列:分散式消息隊 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...