Android 开发过程中部分 Activity 在显示的时候就要求给用户显示一个进度框来改善用户体验,比如:Activity 在启动的时候就去联网请求数据、读取数据库内容等。进度框显示样式如下,采用帧动画,而非 ProgressBar。帧动画的启动方式有四种,代码分别如下:

第一种方式在 Activity 启动时自动运行动画

package cn.sunzn.anim;import android.app.Activity;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.view.ViewTreeObserver.OnPreDrawListener;
import android.widget.ImageView;public class AnimActivity extends Activity {/*** 动画控件*/private ImageView mLoading;private AnimationDrawable mLoadingAinm;public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);init();}/*** 完成初始化*/private void init() {initView();}/*** 初始化视图*/private void initView() {mLoading = (ImageView) findViewById(R.id.loading);mLoading.setBackgroundResource(R.drawable.progressbar_activity_waiting);mLoadingAinm = (AnimationDrawable) mLoading.getBackground();mLoading.getViewTreeObserver().addOnPreDrawListener(listener);}/*** 当一个视图树将要绘制时产生事件,可以添加一个其事件处理函数,注意结尾返回的值*/OnPreDrawListener listener = new OnPreDrawListener() {public boolean onPreDraw() {mLoadingAinm.start();return true;}};}

第二种方式在 Activity 启动时自动运行动画

package cn.sunzn.anim;import android.app.Activity;
import android.graphics.drawable.AnimationDrawable;
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.ImageView;public class AnimActivity extends Activity {/*** 动画控件*/private ImageView mLoading;/*** 数据加载动画*/private AnimationDrawable mLoadingAinm;/*** 异步类执行启动动画*/private RunAnim runAnim;public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);init();}/*** 完成初始化*/private void init() {initView();}/*** 初始化视图*/private void initView() {mLoading = (ImageView) findViewById(R.id.loading);mLoading.setBackgroundResource(R.drawable.progressbar_activity_waiting);mLoadingAinm = (AnimationDrawable) mLoading.getBackground();runAnim = new RunAnim();runAnim.execute("");}/*** 异步类执行动画*/class RunAnim extends AsyncTask<String, String, String> {protected String doInBackground(String... params) {if (!mLoadingAinm.isRunning()) {mLoadingAinm.stop();mLoadingAinm.start();}return "";}}}

第三种方式在 Activity 启动时自动运行动画

package cn.sunzn.anim;import android.app.Activity;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.widget.ImageView;public class AnimActivity extends Activity {/*** 动画控件*/private ImageView mLoading;/*** 数据加载动画*/private AnimationDrawable mLoadingAinm;public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);init();}/*** 完成初始化*/private void init() {initView();}/*** 初始化视图*/private void initView() {mLoading = (ImageView) findViewById(R.id.loading);mLoading.setBackgroundResource(R.drawable.progressbar_activity_waiting);mLoadingAinm = (AnimationDrawable) mLoading.getBackground();mLoading.post(new Runnable() {public void run() {mLoadingAinm.start();}});}}

第四种方式在 Activity 启动时自动运行动画

package cn.sunzn.anim;import android.app.Activity;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.widget.ImageView;public class AnimActivity extends Activity {/*** 动画控件*/private ImageView mLoading;/*** 数据加载动画*/private AnimationDrawable mLoadingAinm;public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);init();}/*** 完成初始化*/private void init() {initView();}/*** 初始化视图*/private void initView() {mLoading = (ImageView) findViewById(R.id.loading);mLoading.setBackgroundResource(R.drawable.progressbar_activity_waiting);mLoadingAinm = (AnimationDrawable) mLoading.getBackground();}/*** 窗体焦点改变时执行动画*/public void onWindowFocusChanged(boolean hasFocus) {mLoadingAinm.start();super.onWindowFocusChanged(hasFocus);}}

转载于:https://www.cnblogs.com/sunzn/archive/2013/05/24/3096760.html

Android 编程下帧动画在 Activity 启动时自动运行的几种方式相关推荐

  1. 如何使WINCE启动时自动运行应用程序

    一.快捷方式 假定Windows CE.NET目标工程为CEPC类型,目录为E:ProjectMyWinCE,并且工程已经Build(或者Rebuild)成功: 假定Windows CE.NET的应用 ...

  2. linux启动时挂载rootfs的几种方式 .

    转载链接:http://blog.csdn.net/zuokong/article/details/9022707 根文件系统(在样例错误消息中名为 rootfs)是 Linux 的最基本的组件.根文 ...

  3. python模拟windows启动,在Windows启动时自动运行Python脚本?

    将Python脚本添加到Windows启动时,基本上表示Python脚本将在Windows启动时运行.这可以通过两步过程来完成- 步骤#1:在Windows启动文件夹中添加或添加脚本 在启动Windo ...

  4. Tomcat启动时自动加载Servlet

    转自:http://zhaoyongpan.blog.51cto.com/2714930/676239 想实现这样的功能: 1.   Tomcat启动时随即启动Servlet; 2.   Servle ...

  5. android 张口逐帧动画,Android中实现一个简单的逐帧动画(附代码下载)

    场景 Android中的逐帧动画,就是由连续的一张张照片组成的动画. 效果 注: 实现 首先准备一组不同表情的照片,放在res/drawable下,然后在此目录下新建动画资源文件fairy.xml 这 ...

  6. win10下安装Ubuntu后,启动时没有win10选项解决方法

    win10下安装Ubuntu后,启动时没有win10选项解决方法 参考文章: (1)win10下安装Ubuntu后,启动时没有win10选项解决方法 (2)https://www.cnblogs.co ...

  7. Android 应用开发 之通过AsyncTask与ThreadPool(线程池)两种方式异步加载大量数据的分析与对比

    Android 应用开发 之通过AsyncTask与ThreadPool(线程池)两种方式异步加载大量数据的分析与对比 标签: AndroidAsyncTaskThreadPool异步加载view 2 ...

  8. 打开excel 自动启动宏_Excel启动时自动打开不需要的文件

    打开excel 自动启动宏 Do unwanted files open automatically when Excel starts? Perhaps something changed in y ...

  9. SpringBoot 启动时的运行方法

    文章目录 为什么我们需要在 spring boot 启动时运行代码? spring boot中启动后不同的运行方式 1.使用CommandLineRunner接口 实现 CommandLineRunn ...

最新文章

  1. 计算机视觉四大基本任务(分类、定位、检测、分割)
  2. mysql数据库二级233_MySQL数据库开发必备常识
  3. 20个jQuery 图片及多媒体画廊插件
  4. 瞬间带你了解如何优化 Mysql 数据库,老板再也不担心客户投诉了
  5. hdu 5783——Divide the Sequence
  6. LeetCode:Permutations, Permutations II(求全排列)
  7. 一篇文章彻底搞懂Android事件分发机制
  8. Context Encoder论文及代码解读
  9. 无线网卡dhcp服务器,ubuntu11.10配置无线网卡dhcp服务器记录(not authoritative for subnet 192.168.1.0问题解决)...
  10. 模板类和友元的总结和实例验证
  11. QtWebApp的使用【在Qt中搭建HTTP服务器】(三)
  12. 矩阵论(补充知识):特征多项式的展开式
  13. 让qt应用程序拥有管理员权限
  14. 力扣周赛 第280场 Java题解
  15. 墨者学院—Webmin未经身份验证的远程代码执行(简单复习)
  16. 就让烟花来代替我对你的祝福叭 ~ 【生日快乐-简单烟花祝福特效】
  17. 【c语言】C语言运动会系统
  18. Flowable流程引擎和各类表说明
  19. palindrome-partitioning
  20. 【美赛学习记录】模型

热门文章

  1. 【quartz】执行一次功能
  2. 服务器站点解密出错,修改域超级管理员密码后站点复制出错。
  3. 商品审核网页界面_商品模块数据库表解析(二)
  4. 深入理解计算机系统学后感,深入理解计算机系统(读书笔记)
  5. 中北大学c语言程序设计作业答案,C语言程序设计
  6. word2vec介绍
  7. jena dataset 增删改查
  8. Python项目打包发布到pypi
  9. 如何判断一家互联网公司要倒闭了?
  10. 免费体验|教你用Python掌握企业级产品开发规范要求的能力!