Android 使用View Animation实现动画加载界面
来源:互联网 发布:erp软件实施顾问 编辑:程序博客网 时间:2024/05/14 14:55
转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992
今天给大家一个使用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;
- /**
- *
- * @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);
- // 动画运行结束之后,保存结束之后的状态
- 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>
github的项目地址:https://github.com/ZhaoKaiQiang/LoadingDialog
0 0
- 【Android界面实现】使用View Animation实现动画加载界面
- android 使用View Animation实现动画加载界面
- android 使用View Animation实现动画加载界面
- Android 使用View Animation实现动画加载界面
- 使用View Animation实现动画加载界面
- 使用View Animation实现动画加载界面
- 【Android界面实现】View Animation 使用介绍
- android动画 -- view Animation
- Android:View Animation 动画
- Android animation-list 实现加载动画效果
- Android下Animation动画的使用 及 Volley加载图片动画实现
- Android视图动画---View Animation
- Android视图动画(View Animation)
- Android动画之View Animation
- Android-View Animation(视图动画)
- Android 动画(1) View Animation
- 【Android界面实现】Drawable Animation 使用介绍
- android,动画切换界面 animation
- Visual Studio里的ASCII编码和unicode编码
- MeasureSpec的三种模式的意思
- 【python】杂笔记
- 字符串匹配之KMP算法
- TOJ 1473.Moving Tables
- Android 使用View Animation实现动画加载界面
- javascript变量声明提升(hoisting)
- JAVAWEB Dao模式之增删改和查询通用方法
- Treap模板(支持Merge/Split)
- (二十一)、常用类:Object类
- Oracle数据库安装与配置
- git 操作中的情况
- java编程300例:8.简单用嵌套输出九九乘法表
- 5-1 顺序存储的二叉树的最近的公共祖先问题