仿美團loading載入中的動畫
阿新 • • 發佈:2019-01-08
demo原始碼下載:下載
前言
在Android 中是不支援直接使用Gif 圖片關聯播放幀動畫,Android 提供了另外一種解決的辦法,就是使用AnimationDrawable 這一函式使其支援逐幀播放,但是如何把gif
圖片打散開來,成為每一幀的圖片呢?下面介紹兩種比較不錯的軟體,可以幫我們打散圖片。
easygifanimator
想必用過美團客戶端的使用者對美團那個載入小人的動畫印象很深刻,一個可愛的小人在那拼命的跑。這個動畫實現的方法其實很多,今天這裡就用frame動畫來實現一下。
二、佈局檔案
[html] view plain copy print- <RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:paddingBottom="@dimen/activity_vertical_margin"
-
android:paddingLeft="@dimen/activity_horizontal_margin"
- android:paddingRight="@dimen/activity_horizontal_margin"
- android:paddingTop="@dimen/activity_vertical_margin"
- tools:context=".MainActivity">
- <ImageView
- android:id="@+id/imageView"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
-
android:onClick
- android:scaleType="fitCenter"
- android:src="@anim/frame"/>
- </RelativeLayout>
新建一個anim檔案,裡面存放的就是準備frame動畫的圖片,圖片直接可以去美團的安裝包解壓後拿來。 [html] view plain copy print?
- <?xmlversion="1.0"encoding="utf-8"?>
- <animation-listxmlns:android="http://schemas.android.com/apk/res/android"
- android:oneshot="false">
- <itemandroid:drawable="@drawable/progress_loading_image_01"android:duration="50"/>
- <itemandroid:drawable="@drawable/progress_loading_image_02"android:duration="50"/>
- </animation-list>
主函式程式碼:
通過image view的getDrawabel方法 得到一個 AnimationDrawable物件 然後呼叫start方法就可以開啟動畫了。
[java] view plain copy print?- publicclass MainActivity extends Activity {
- private ImageView imageView;
- private AnimationDrawable ad;
- @Override
- protectedvoid onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- imageView = (ImageView) findViewById(R.id.imageView);
- ad = (AnimationDrawable) imageView.getDrawable(); // 獲取圖片內容, 強轉為動畫物件
- }
- publicvoid start(View v) {
- if (ad.isRunning())
- ad.stop();
- ad.start(); // 開始播放
- }
- }