Android AnimationDrawable动画与APP启动引导页面

2023-10-26

Android AnimationDrawable动画与APP启动、加载引导页面(画面)

AnimationDrawable是Android的Frame动画,可以简单的认为此AnimationDrawable能够将一系列资源图片加载成“电影”一样播放。当下,在一些APP中,往往需要在APP切入主题之前加载一些引导页面(宣传海报、装饰画面、赞助商广告等等),这些内容要两个共同特点:
(1)不是APP的重点内容,而仅仅只是像展台一样展览一些画面。
(2)前、当前、后页面基本上无特别需要处理的交互设计(因为只是播放几张或几帧画面而已),然后就跳转进入APP实质内容。
现在就给出一个示例小demo,实现一个简单的样例:一个APP的MainActivity启动后,循环播放3张图片。

(第1步)先在res/drawable目录下事先放置好需要播放的图片资源。如图:


(第2步)在res/anim目录下建立animation-list的xml代码文件,假设这个代码文件就叫做my_animation.xml,如图,


该文件的具体代码内容:

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:drawable="@drawable/p1"
        android:duration="2000"/>
    
    <item
        android:drawable="@drawable/p2"
        android:duration="2000"/>
    
    <item
        android:drawable="@drawable/p3"
        android:duration="2000"/>

</animation-list>


Item的资源图片p1,p2,p3将顺序播放。android:duration的值(毫秒)是该item播放持续的时间,在这个例子中,就是将图片显示一段时间。


(第3步)在Activity加载的布局文件activity_main.xml里面写一个ImageView,设置该ImageView的android:src= 第2步创建好的my_animation.xml。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    
    <Button
        android:id="@+id/play"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/play" />
    
    <Button
        android:id="@+id/stop"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/stop" />
    
     <ImageView
        android:id="@+id/imegaView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:src="@anim/my_animation" />
    
</LinearLayout>

到这里,就完成了设计目的,这个Activity启动后,就会在ImageView里面自带播放动画,当然,可以做的更多,为这个动画添加一些控制按钮(play,stop),控制播放(play)或者停止(stop)。

测试的activity:MainActivity.java:

package zhangphil.animation;

import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;

public class MainActivity extends ActionBarActivity {

	private	AnimationDrawable mAnimationDrawable=null;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		ImageView imageView=(ImageView)findViewById(R.id.imegaView);
		mAnimationDrawable=(AnimationDrawable) imageView.getDrawable();
	
		Button play=(Button)findViewById(R.id.play);
		play.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				mAnimationDrawable.start();
			}
		});
		
		Button stop=(Button)findViewById(R.id.stop);
		stop.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				mAnimationDrawable.stop();
			}
		});
	}
}


转载于:https://my.oschina.net/zhangphil/blog/1602216

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android AnimationDrawable动画与APP启动引导页面 的相关文章

  • Java 中的 XPath 节点集

    我在 eclipse 中有这段代码 NodeSet nodes NodeSet xPath evaluate expression inputSource XPathConstants NODESET 它给我 NodeSet 上的编译时错误
  • 如何使用 FileChannel 将一个文件的内容附加到另一个文件的末尾?

    File a txt好像 ABC File d txt好像 DEF 我正在尝试将 DEF 附加到 ABC 所以a txt好像 ABC DEF 我尝试过的方法总是完全覆盖第一个条目 所以我总是最终得到 DEF 这是我尝试过的两种方法 File
  • 在Windows上安装Java 11 OpenJDK(系统路径问题)

    Java 11 最近发布了 众所周知 这个版本没有安装文件 当然 要在没有安装程序的情况下安装 Java 我将系统设置 PATH 和 JAVA HOME 设置为解压缩 Java 11 的文件夹的地址 根据对类似问题的已接受回复建议 唯一的事
  • ExceptionConverter:java.io.IOException:文档没有页面。我正在使用 iText

    当我执行下面的代码时 File f new File c sample pdf PdfWriter getInstance document new FileOutputStream f document open System out p
  • 在浏览器中点击应用程序时播放框架挂起

    我正在 Play 中运行一个应用程序activator run 也许 5 次中有 3 次 它会挂起 当我去http localhost 9000 它就永远坐在那里旋转 我看到很多promise timed out错误也 我应该去哪里寻找这个
  • 在数据流模板中调用 waitUntilFinish() 后可以运行代码吗?

    我有一个批处理 Apache Beam 作业 它从 GCS 获取文件作为输入 我的目标是根据执行后管道的状态将文件移动到两个 GCS 存储桶之一 如果管道执行成功 则将文件移动到存储桶 A 否则 如果管道在执行过程中出现任何未处理的异常 则
  • Convert.FromBase64String 方法的 Java 等效项

    Java 中是否有相当于Convert FromBase64String http msdn microsoft com en us library system convert frombase64string aspx which 将指
  • 使用替换字符串中多个单词的最有效方法[重复]

    这个问题在这里已经有答案了 此刻我正在做 Example line replaceAll replaceAll cat dog replaceAll football rugby 我觉得那很丑 不确定有更好的方法吗 也许循环遍历哈希图 ED
  • 序列化对象以进行单元测试

    假设在单元测试中我需要一个对象 其中所有 50 个字段都设置了一些值 我不想手动设置所有这些字段 因为这需要时间而且很烦人 不知何故 我需要获得一个实例 其中所有字段都由一些非空值初始化 我有一个想法 如果我要调试一些代码 在某个时候我会得
  • 在具有相同属性名称的不同数据类型上使用 ModelMapper

    我有两节课说Animal AnimalDto我想用ModelMapper将 Entity 转换为 DTO 反之亦然 但是对于具有相似名称的一些属性 这些类应该具有不同的数据类型 我该如何实现这一目标 动物 java public class
  • Java中接口作为方法参数

    前几天去面试 被问到了这样的问题 问 反转链表 给出以下代码 public class ReverseList interface NodeList int getItem NodeList nextNode void reverse No
  • Spring Data 与 Spring Data JPA 与 JdbcTemplate

    我有信心Spring Data and Spring Data JPA指的是相同的 但后来我在 youtube 上观看了一个关于他正在使用JdbcTemplate在那篇教程中 所以我在那里感到困惑 我想澄清一下两者之间有什么区别Spring
  • 归并排序中的递归:两次递归调用

    private void mergesort int low int high line 1 if low lt high line 2 int middle low high 2 line 3 mergesort low middle l
  • 应用程序关闭时的倒计时问题

    我制作了一个 CountDownTimer 代码 我希望 CountDownTimer 在完成时重新启动 即使应用程序已关闭 但它仅在应用程序正在运行或重新启动应用程序时重新启动 因此 如果我在倒计时为 00 10 分钟 秒 时关闭应用程序
  • 如何在 Maven 中显示消息

    如何在 Maven 中显示消息 在ant中 我们确实有 echo 来显示消息 但是在maven中 我该怎么做呢 您可以使用 antrun 插件
  • Keycloak - 自定义 SPI 未出现在列表中

    我为我的 keycloak 服务器制作了一个自定义 SPI 现在我必须在管理控制台上配置它 我将 SPI 添加为模块 并手动安装 因此我将其放在 module package name main 中 并包含 module xml 我还将其放
  • Android JNI C 简单追加函数

    我想制作一个简单的函数 返回两个字符串的值 基本上 java public native String getAppendedString String name c jstring Java com example hellojni He
  • 如何配置eclipse以保持这种代码格式?

    以下代码来自 playframework 2 0 的示例 Display the dashboard public static Result index return ok dashboard render Project findInv
  • 将 JTextArea 内容写入文件

    我在 Java Swing 中有一个 JTextArea 和一个 提交 按钮 需要将textarea的内容写入一个带有换行符的文件中 我得到的输出是这样的 它被写为文件中的一个字符串 try BufferedWriter fileOut n
  • Jackson 将单个项目反序列化到列表中

    我正在尝试使用一项服务 该服务为我提供了一个带有数组字段的实体 id 23233 items name item 1 name item 2 但是 当数组包含单个项目时 将返回该项目本身 而不是包含一个元素的数组 id 43567 item

随机推荐

  • uniapp小程序上传图片裁剪效果demo(整理)

  • 朋友圈--并查集

    LeetCode 朋友圈 班上有 N 名学生 其中有些人是朋友 有些则不是 他们的友谊具有是传递性 如果已知 A 是 B 的朋友 B 是 C 的朋友 那么我们可以认为 A 也是 C 的朋友 所谓的朋友圈 是指所有朋友的集合 给定一个 N N
  • 关于 Pytorch 学习的一些小困惑的理解

    目录 小记 20 2 27 model model cuda 和model model to cuda 是等价的嘛 模型会自动初始化嘛 训练好的网络模型是如何保存的 又是如何再加载的 哪些部分可以移到GPU上运算 关于torch nn mu
  • 【毕业设计】SVM 分类器和深度学习的方法对多种无人机型号进行分类识别【程序+论文】

    利用 SVM 分类器和深度学习的方法对多种无人机型号进行分类识别 但是对于同种型 号无人机不同个体识别率不高 射频指纹 Radio Frequency Distinct Native Attribute RFDNA 的提出为解决这一问题提供
  • RabbitMQ--交换机、队列、消息

    交换机 autoDelete 如果设置为true 唯一的一个交换机或者队列解绑 那么该队列将会被自动删除 交换机类型 faout 经过交换机的消息直接转到所有与这个交换器绑定的队列中 无视rounting key的存在 direct 经过交
  • 国密:SM2公私钥加签验签

    一 工具类 POM中增加hutool
  • jdbc mysql 重连_JDBC实现Mysql自动重连机制的方法详解

    JDBC是一个用于连接和访问各种数据库的应用编程接口 它可以提供Java程序和各种数据库之间的连接服务 以下是成都seo技术频道编辑带来的实现Mysql自动重连机制的JDBC方法的详细说明 日志 使用连接器 J连接属性 自动连接 真 来避免
  • 我的Docker部署笔记

    Centos7下安装Docker 1 root账户登录 查看内核版本 root localhost uname a Linux localhost localdomain 3 10 0 1160 el7 x86 64 1 SMP Mon O
  • var与let的区别【一看就懂的知识】

    今天偶尔翻看了一本书 JavaScript编程精解 在函数这一章节中难免会看到 作用域 这个字眼 之前对于作用域的概念本就不是很敏感 也就匆匆略过了 反过来看时 才明白这是一个比较重要的点 下面借作用域这一概念深入了解一下本文的重点 var
  • 5.QT5中的connect的实现

    在QT4中 解析信号槽是通过将信号槽的名字转化为字符串 然后通过connect解析该字符串 得到信号函数的相对序号和 然后创建信号connectionlist 但是 所有的检查都在运行时 通过解析字符串进行 这意味着 如果信号槽的名称拼写错
  • springcloud之服务配置中心

    springcloud之服务配置中心 SpringCloud Config简介 Config Server基本使用 Config Client基本使用 Config整合Eureka Config配置搜索路径 SpringCloud Conf
  • 2021.11.7总结

    数据结构 将第三章栈与队列知识点看完了 栈是先进后出表 队列是先进先出表 然后发现了书上有很多题目 慕课上面也有很多题目 只是我自己没写而已 下周从第一章开始写题 然后洛谷很久没写题目了 下周 将数据结构书上和课程的题目写完 到第三章 洛谷
  • 开启OLED透明屏代理之路:高质量显示解决方案的商机

    随着科技的不断进步 OLED透明屏作为一种创新的显示技术 正逐渐在各个领域得到广泛应用 作为一名OLED透明屏代理商 你将有机会参与其中 共享这一蓬勃发展的市场 一 介绍OLED透明屏的概念和特点 1 1 什么是OLED透明屏 OLED透明
  • pandas_数据处理分析基本

    一 Pandas基础用法 20210405 fancy lee 1 pandas介绍 Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具 该工具是为了解决数据分析任务而创建的 panda
  • ESP-12F开发环境

    ESP 12F可以使用arduino IDE快速开发 1 首先安装arduino IDE 搜索直接下载即可 2 在文件 gt 首选项 gt 附加开发板管理器网址中添加ESP8266开发板 网址 http arduino esp8266 co
  • PHP curl 传输文件流

    PHP版本5 5以下时可直接使用 拼接要传输的文件的绝对路径即可 params file str replace ABSOLUTE PATH str PHP版本5 5以上时 需要使用curl file create函数 创建一个 CURLF
  • Python中Pickle模块的dump()方法和load()方法

    Python中的Pickle模块实现了基本的数据序列与反序列化 一 dump 方法 pickle dump obj file protocol 注释 序列化对象 将对象obj保存到文件file中去 参数protocol是序列化模式 默认是0
  • docker 使用pytorch在gpu上训练模型

    docker 使用pytorch在gpu上训练模型 安装docker 下载docker image 建立启动容器进入docker虚拟空间 不一定能运行起来 安装docker sudo apt get y install docker io
  • 百度旋转验证码(8-24,js逆向)

    网址 aHR0cHM6Ly96aXl1YW4uYmFpZHUuY29tL2xpbmtzdWJtaXQvdXJs 一 抓包分析 刷新网页 先看第一个包 提交参数是ak和时间戳 ak是定值 返回的参数中 as和tk后面都会用到 然后点击提交链接
  • Android AnimationDrawable动画与APP启动引导页面

    Android AnimationDrawable动画与APP启动 加载引导页面 画面 AnimationDrawable是Android的Frame动画 可以简单的认为此AnimationDrawable能够将一系列资源图片加载成 电影