91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在Android中利用View Animation實現一個動畫加載界面

發布時間:2021-03-29 15:30:48 來源:億速云 閱讀:144 作者:Leah 欄目:移動開發

本篇文章給大家分享的是有關怎么在Android中利用View Animation實現一個動畫加載界面,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

實現代碼

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; 
 // 旋轉動畫 
 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); 
  // 動畫運行結束之后,保存結束之后的狀態 
  animationL2R.setFillAfter(true); 
  // 設置重復的次數 
  animationL2R.setRepeatCount(1); 
  //設置重復模式為逆運動 
  animationL2R.setRepeatMode(Animation.REVERSE); 
  // 執行間隔任務,開始間隔是0,每隔DURATION * 2執行一次 
  animationTimer.schedule(new TimerTask() { 
 
   @Override 
   public void run() { 
    handler.sendEmptyMessage(1); 
   } 
  }, 0, DURATION * 2); 
 
 } 
 
 @Override 
 protected void onStop() { 
  super.onStop(); 
  animationTimer.cancel(); 
 } 
 
}

當然,除了這種直接使用代碼的硬編碼方式,哦們還可以使用xml的方式,和硬編碼基本類似,把需要的屬性在xml里面定義好即可,下面的代碼實現。

<?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); 
   
  // 執行間隔任務,開始間隔是0,每隔DURATION * 2執行一次 
  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> 
  <!-- 是否浮現在activity之上 --> 
  <item name="android:windowIsFloating">true</item> 
  <item name="android:windowContentOverlay">@null</item> 
 </style>

以上就是怎么在Android中利用View Animation實現一個動畫加載界面,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

得荣县| 旬阳县| 五原县| 加查县| 平谷区| 四会市| 八宿县| 上思县| 卫辉市| 澜沧| 延川县| 从江县| 衡山县| 蚌埠市| 新竹市| 西乌珠穆沁旗| 甘肃省| 左权县| 南昌县| 双桥区| 崇信县| 上林县| 临沧市| 开阳县| 澄迈县| 河源市| 杭锦后旗| 安仁县| 奉化市| 晋州市| 慈利县| 昌平区| 五大连池市| 阜康市| 靖江市| 保山市| 萝北县| 邹城市| 沽源县| 浑源县| 彰武县|