本篇文章給大家分享的是有關(guān)怎么在Android中利用View Animation實現(xiàn)一個動畫加載界面,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
創(chuàng)新互聯(lián)專注于環(huán)江網(wǎng)站建設(shè)服務及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供環(huán)江營銷型網(wǎng)站建設(shè),環(huán)江網(wǎng)站制作、環(huán)江網(wǎng)頁設(shè)計、環(huán)江網(wǎng)站官網(wǎng)定制、小程序開發(fā)服務,打造環(huán)江網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供環(huán)江網(wǎng)站排名全網(wǎng)營銷落地服務。
實現(xiàn)代碼
package com.example.animationloading; import java.util.Timer; import java.util.TimerTask; import android.annotation.SuppressLint; import android.app.Dialog; import android.content.Context; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.animation.Animation; import android.view.animation.RotateAnimation; import android.widget.ImageView; public class LoadingDialog extends Dialog { protected static final String TAG = "LoadingDialog"; // 動畫間隔 private static final int DURATION = 800; // 前景圖片 private ImageView img_front; // 定時器,用來不斷的播放動畫 private Timer animationTimer; // 旋轉(zhuǎn)動畫 private RotateAnimation animationL2R; @SuppressLint("HandlerLeak") private Handler handler = new Handler() { public void handleMessage(Message msg) { img_front.setAnimation(animationL2R); animationL2R.start(); }; }; public LoadingDialog(Context context) { super(context, R.style.dialog); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.dialog_loading); img_front = (ImageView) findViewById(R.id.img_front); animationTimer = new Timer(); // 從左到右的旋轉(zhuǎn)動畫,設(shè)置旋轉(zhuǎn)角度和旋轉(zhuǎn)中心 animationL2R = new RotateAnimation(0f, -90f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); // 設(shè)置動畫的運行時長 animationL2R.setDuration(DURATION); // 動畫運行結(jié)束之后,保存結(jié)束之后的狀態(tài) animationL2R.setFillAfter(true); // 設(shè)置重復的次數(shù) animationL2R.setRepeatCount(1); //設(shè)置重復模式為逆運動 animationL2R.setRepeatMode(Animation.REVERSE); // 執(zhí)行間隔任務,開始間隔是0,每隔DURATION * 2執(zhí)行一次 animationTimer.schedule(new TimerTask() { @Override public void run() { handler.sendEmptyMessage(1); } }, 0, DURATION * 2); } @Override protected void onStop() { super.onStop(); animationTimer.cancel(); } }
當然,除了這種直接使用代碼的硬編碼方式,哦們還可以使用xml的方式,和硬編碼基本類似,把需要的屬性在xml里面定義好即可,下面的代碼實現(xiàn)。
如果使用這種方式,那么,上面的代碼就要變成下面這種了。
package com.example.animationloading; import java.util.Timer; import java.util.TimerTask; import android.annotation.SuppressLint; import android.app.Dialog; import android.content.Context; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.ImageView; /** * * @ClassName: com.example.animationloading.LoadingDialog * @Description: 動畫加載Dialog * @author zhaokaiqiang * @date 2014-10-27 下午4:42:52 * */ public class LoadingDialog extends Dialog { protected static final String TAG = "LoadingDialog"; // 動畫間隔 private static final int DURATION = 800; // 前景圖片 private ImageView img_front; // 定時器,用來不斷的播放動畫 private Timer animationTimer; private Animation animation; private Context context; @SuppressLint("HandlerLeak") private Handler handler = new Handler() { public void handleMessage(Message msg) { img_front.setAnimation(animation); animation.start(); }; }; public LoadingDialog(Context context) { super(context, R.style.dialog); this.context = context; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.dialog_loading); img_front = (ImageView) findViewById(R.id.img_front); animationTimer = new Timer(); animation = AnimationUtils.loadAnimation(context, R.anim.anim_load_dialog); // 執(zhí)行間隔任務,開始間隔是0,每隔DURATION * 2執(zhí)行一次 animationTimer.schedule(new TimerTask() { @Override public void run() { handler.sendEmptyMessage(1); } }, 0, DURATION * 2); } @Override protected void onStop() { super.onStop(); animationTimer.cancel(); } }
下面是dialog的樣式
以上就是怎么在Android中利用View Animation實現(xiàn)一個動畫加載界面,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降摹OM隳芡ㄟ^這篇文章學到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。