Android35_Animations使用(三)
標簽: Android Animation AnimationSet Interpolator Frame-By-Frame Animations
一、AnimationSet的具體使用方法
1.AnimationSet是Animation的子類;
2.一個AnimationSet包含了一系列的Animation;
3.針對AnimationSet設置一些Animation的常見屬性(如startOffset,duration等),可以被包含在AnimationSet當中的Animation集成;
例:一個AnimationSet中有兩個Animation,效果疊加
AnimationSet animationSet = new AnimationSet(true);
AlphaAnimation alphaAnimation = new AlphaAnimation(1, 0);
RotateAnimation rotateAnimation = new RotateAnimation(0, 360,
Animation.RELATIVE_TO_SELF,0.5f,
Animation.RELATIVE_TO_SELF,0.5f);
rotateAnimation.setDuration(1000);
animationSet.addAnimation(rotateAnimation);
animationSet.addAnimation(alphaAnimation);
image.startAnimation(animationSet);
二、Interpolator的具體使用方法
Interpolator定義了動畫變化的速率,在Animations框架當中定義了一下幾種Interpolator
AccelerateDecelerateInterpolator:在動畫開始與結束的地方速率改變比較慢,在中間的時候速率快。
AccelerateInterpolator:在動畫開始的地方速率改變比較慢,然后開始加速
CycleInterpolator:動畫循環播放特定的次數,速率改變沿著正弦曲線
DecelerateInterpolator:在動畫開始的地方速率改變比較慢,然后開始減速
LinearInterpolator:動畫以均勻的速率改變
例 在set標簽上:
android:interpolator="@android:anim/accelerate_interpolator"
如果一個set中包含了兩種動畫效果,要想這兩種動畫效果共享一個interpolator,可以在set標簽上添加:
android:shareInterpolator="true"
另以上方法是在xml上處理interpolator,如果是在代碼上設置共享一個interpolator,則可以在AnimationSet設置interpolator,如果不設置共享一個interpolator則可以在alpha等的對象上面設置interpolator:
animationSet.setInterpolator(new AccelerateInterpolator());
或
alphaAnimation.setInterpolator(new AccelerateInterpolator());
三、Frame-By-Frame Animations的使用方法
Frame-By-Frame Animations是一幀一幀的格式顯示動畫效果。類似于電影膠片拍攝的手法。
例子程序:
多張圖片展示一個人行走的動畫。
Main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayout android:orientation="horizontal" android:layout_height="wrap_content" android:layout_width="wrap_content"> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="運動"/> </LinearLayout> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ImageView android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true"/> </LinearLayout> </LinearLayout>
Anim.xml
<?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> <item android:drawable="@drawable/a_01" android:duration="50"/> <item android:drawable="@drawable/a_02" android:duration="50"/> <item android:drawable="@drawable/a_03" android:duration="50"/> <item android:drawable="@drawable/a_04" android:duration="50"/> <item android:drawable="@drawable/a_05" android:duration="50"/> <item android:drawable="@drawable/a_06" android:duration="50"/> </animation-list>
AnimationsActivity.java
package com.android.activity;
import android.app.Activity;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
public class AnimationsActivity extends Activity {
private Button button = null;
private ImageView imageView = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button = (Button)findViewById(R.id.button);
imageView = (ImageView)findViewById(R.id.image);
button.setOnClickListener(new ButtonListener());
}
class ButtonListener implements OnClickListener{
public void onClick(View v) {
imageView.setBackgroundResource(R.anim.anim);
AnimationDrawable animationDrawable = (AnimationDrawable)
imageView.getBackground();
animationDrawable.start();
}
}
}
運行結果:
智能推薦
android學習筆記35:notification
notification應該是android手機獨有的一個特性吧,至少我用過的手機好像其他的系統都沒有這個東西,呵呵,如果其他的手機有的話,麻煩大家說聲。可以簡單的使用notification來顯示一條通知,也可以使用notification來做一些其他的事情,比如打開另外一個Activity。 這個圖片做的有點丑,我看有些博客上的圖片做的很流暢,而且連鼠標點擊的動作都有,我不知道那是怎么做出來的...
Android中使用mvvm(三)
部分內容學自https://www.jianshu.com/p/fc7d53d32096 基于DataBinding與LiveData的MVVM 在MVP模式下,隨著業務邏輯的不斷增加,UI也會變得越來的多樣化,UI改變多樣化勢必會造成View層的接口case變多,View的接口類就會變得異常龐大。MVVM的方式完美的解決了MVP模式的這一痛點,它采用雙向綁定的機制,實現了UI與數據的綁定操作。僅...
【RuoYi-Vue-Plus】學習筆記 35 - OSS 模塊(六)V4.2.0+ 版本三種方式配置使用
文章目錄 前言 參考目錄 準備目錄 方式一:云服務商(以騰訊云為例) 方式二:MinIO + Nginx(Https) 方式三:MinIO(Https) 配置方式一:云服務商(以騰訊云為例) 配置方式二:MinIO + Nginx(Https) 1、安裝 docker-compose 并授權 2、創建編排 yml 文件 3、執行文件 4、Nginx 配置 Https 證書 5、OSS 配置 6、設...
Android IPC機制(三)使用AIDL實現
1、AIDL全稱為:Android Interface definition language 譯為:android接口定義語言 AIDL使用的數據是有限制的,可以使用的有: 基本數據類型(int、long、char、boolean、double等) String 和CharSequence List:只支持ArrayList,并且里面的...
Android | Tangram動態頁面之路(三)使用
本系列文章主要介紹天貓團隊開源的Tangram框架的使用心得和原理,由于Tangram底層基于vlayout,所以也會簡單講解,該系列將按以下大綱進行介紹: 需求背景 Tangram和vlayout介紹 Tangram的使用 vlayout原理 Tangram原理 Tangram二次封裝 本文將對Tangram的簡單使用進行介紹。 Demo代碼 基礎使用 引入依賴: 初始化,主要是傳遞上下文進去,...
猜你喜歡
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...
電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!
Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...
requests實現全自動PPT模板
http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...