欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android使用View Animation實現(xiàn)動畫加載界面

 更新時間:2018年04月18日 17:22:04   作者:趙凱強  
這篇文章主要為大家詳細介紹了Android使用View Animation實現(xiàn)動畫加載界面的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下

之前分別介紹了View Animation和Drawable Animation,學了就要用啊,今天給大家一個使用View Animation實現(xiàn)動畫加載界面的實現(xiàn)。

首先先看一下實現(xiàn)效果。

下面是實現(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; 
 
/** 
 * 
* @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 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(); 
 
  // 從左到右的旋轉動畫,設置旋轉角度和旋轉中心 
  animationL2R = new RotateAnimation(0f, -90f, 
    Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 
    0.5f); 
  // 設置動畫的運行時長 
  animationL2R.setDuration(DURATION); 
  // 動畫運行結束之后,保存結束之后的狀態(tài) 
  animationL2R.setFillAfter(true); 
  // 設置重復的次數(shù) 
  animationL2R.setRepeatCount(1); 
  //設置重復模式為逆運動 
  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)。

<?xml version="1.0" encoding="utf-8"?> 
<rotate xmlns:android="http://schemas.android.com/apk/res/android" 
 android:duration="800" 
 android:fillAfter="true" 
 android:fromDegrees="0" 
 android:pivotX="50%" 
 android:pivotY="50%" 
 android:repeatCount="1" 
 android:repeatMode="reverse" 
 android:toDegrees="-90" > 
 
</rotate> 

如果使用這種方式,那么,上面的代碼就要變成下面這種了。

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的樣式

<style name="dialog" parent="android:style/Theme.Dialog"> 
 
  <!-- 背景顏色及透明程度 --> 
  <item name="android:windowBackground">@android:color/transparent</item> 
  <item name="android:windowFrame">@null</item> 
  <item name="android:windowNoTitle">true</item> 
  <!-- 是否浮現(xiàn)在activity之上 --> 
  <item name="android:windowIsFloating">true</item> 
  <item name="android:windowContentOverlay">@null</item> 
 </style>

下載:項目地址

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

最新評論