Android ActionBar中添加旋转动画

经常看到很多应用会在ActionBar上放一个刷新按钮用来刷新页面内容。

当点击这个按钮时,按钮不断旋转,同时访问网络去刷新内容,刷新完成后,动画停止。

主要实现逻辑如下:

//这里使用一个ImageView设置成MenuItem的ActionView,这样我们就可以使用这个ImageView显示旋转动画了
ImageView refreshActionView = new ImageView(this);
refreshActionView.setImageResource(drawable.ic_action_refresh);
refreshItem.setActionView(refreshActionView);

//显示刷新动画
Animation animation = AnimationUtils.loadAnimation(this, anim.refresh);
animation.setRepeatMode(Animation.RESTART); //设置动画从头开始
animation.setRepeatCount(Animation.INFINITE);
refreshActionView.startAnimation(animation);

事实证明,按照上面的写法,动画只会执行一次就停止。后来在网上查资料,

必须将setRepeatMode和setRepeatCount这两个方法写在xml中,不能通过代码来直接设置。如下:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <rotate
        android:interpolator="@android:anim/linear_interpolator"
        android:duration="2000"
        android:fromDegrees="0"
        android:toDegrees="360"
        android:pivotX="50%"
        android:pivotY="50%"
        android:repeatMode="restart"
        android:repeatCount="infinite"
        />
</set>

按照上面的写法,动画能够循环执行,但是每次动画之间会有短暂的停顿,体验很不好。

这个设置一下intepolator就行,这个是用来修饰动画效果,定义动画的变化率,

可以使存在的动画效果accelerated(加速),decelerated(减速),repeated(重复),bounced(弹跳)等。

但是我上面已经设置了,为什么仍然不起作用?原来,需要将这个属性放在set里才行,即:

<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/linear_interpolator">
    <rotate
        android:duration="2000"
        android:fromDegrees="0"
        android:toDegrees="360"
        android:pivotX="50%"
        android:pivotY="50%"
        android:repeatMode="restart"
        android:repeatCount="infinite"
        />
</set>

这样就没问题了。

时间: 2024-12-15 20:00:17

Android ActionBar中添加旋转动画的相关文章

Android ActionBar中的下拉菜单

在ActionBar中添加下拉菜单,主要有一下几个关键步骤: 1. 生成一个SpinnerAdapter,设置ActionBar的下拉菜单的菜单项 2. 实现ActionBar.OnNavigationListener接口,当点击ActionBar的菜单项是进行相应的操作 3. 调用setNavigationMode()方法将ActionBar的操作模型设置为ActionBar.NAVIGATION_MODE_LIST. 注意:这个步骤应该在Activity的onCreate()回调函数时执行

Android系统中添加一个产品----图文详解

本文本着开源的精神介绍如何向一个Android系统中添加一个产品的整个过程,按照以下过程笔者有理由相信每个将要从事本行业的人都可以完成,其实添加一个产品并不难,难的是对其相关硬件的修改,好了废话不多说. 首先我们要创建一个属于自己产品的目录,这里以WY_device为例,以WY作为产品的名字. 首先从已经存在的产品中拷贝一个以产品的名字为名的.mk文件,修改为自己的.mk文件,在这里为WY.mk 对其进行如下的修改: 然后添加AndroidProducts.mk  这是添加产品的配置文件名路径,

在Android Studio中添加assets目录

在Android Studio中添加assets目录,目录的位置在 XXX\src\main\assets XXX代表你的项目的路径,assets放在src\main目录下. 这个位置可以通过XXX.iml  XXX代表自己的项目名,其中有设置assets的目录,设置如下 <option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" /> 结果如图所示: 参考:http://blo

Android ActionBar中的按钮添加旋转动画

将Menu菜单项显示在ActionBar上,这里显示一个刷新按钮,模拟在刷新动作时的添加刷新动画 菜单布局 menu.xml <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/action_stop" android:orderInCategory="100" android:showAsAction

Android开发中activity切换动画的实现

(1)我们在MainAcitvity中定义两个textview,用于点击触发切换Activity事件,下面是布局文件代码. <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/top_bg" android:orientation="horizonta

在Android应用中添加React Native支持

用android studio创建一个基本的android hello world程序 在项目根目录中通过npm向导生成package.json文件,在cmd中输入命令:npm init 在package.json文件中添加启动脚本"start": "node node_modules/react-native/local-cli/cli.js start" 添加react-native npm依赖,在命令行输入npm install react react-nat

向Android系统中添加模块及产品流程

 添加Android模块  一.基础知识: (1)在Android系统中,编译都是以模块(而不是文件)作为单位的,每个模块都有一个唯一的名称: (2)为了将模块编译到Android系统中,每个模块都需要一个专门的Make文件,也即是"Android.mk"文件: 二.实现hello.c 模块的编写  1. 如在 hardware/test目录下,编写hello.c 2. 在hardw/test目录下,编写Android.mk Android.mk编写的步骤: (1)设置当前模块的编译路

Android应用中添加Log4j的示例

1.新建Android项目 Project: AndroidLog4j Package:cn.darkranger.log Activity:MainActivity 2.在libs中添加log4j-1.2.17.jar包 3.添加android-logging-log4j-1.0.3.jar 我看了一下,这里面只有两个类,我就用反编译工具反编译成了java文件,写入代码中了 LogCatAppender.java(主要作用是将log在控制台的输出转化为Android中的LogCat输出) pa

如何在Android Gradle中添加原生so文件依赖

@author ASCE1885的 Github 简书 微博 CSDN 原文链接 背景 几个月前,基于Google的LevelDB,我为Android平台写了一个名为SnappyDB的键值数据库(NoSQL). 由于它使用到了原生C++代码,因此最终生成的文件除了Jars包还有so文件. 通过Maven仓库发布我们的函数库没有什么问题(只要你通过繁琐的发布流程),maven-android-plugin可以帮助我们包含共享库.Maven依赖规则使得我们可以指定想要获取的ABI(不同的CPU架构)