展会信息港展会大全

android开发之给ActionBar中的按钮添加载入动画(刷新动画)
来源:互联网   发布日期:2015-09-29 10:49:27   浏览:4451次  

导读:经常看到很多应用会在Actionbar上放一个刷新按钮用来刷新页面内容,但是点击后并没有一个刷新的旋转动画,感觉少点什么,那我们就给它加一 个旋转动吧! 首先是菜单布局,有两个菜单,都设置成以Actionbar的 ...

经常看到很多应用会在Actionbar上放一个刷新按钮用来刷新页面内容,但是点击后并没有一个刷新的旋转动画,感觉少点什么,那我们就给它加一 个旋转动吧!

首先是菜单布局,有两个菜单,都设置成以Actionbar的方式显示,其中一个为刷新菜单:

res/menu/main.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item

android:id="@+id/air_traffic"

android:icon="@drawable/ic_action_airtraffic"

android:showAsAction="always">

</item>

<item

android:id="@+id/refresh"

android:icon="@drawable/ic_action_refresh"

android:showAsAction="always">

</item>

</menu>

然后我们需要一个View来显示旋转动画:

res/layout/action_view.xml

<ImageView xmlns:android="http://schemas.android.com/apk/res/android"

style="@android:style/Widget.ActionButton"

android:layout_width="wrap_content"

android:scaleType="centerInside"

android:layout_height="wrap_content" />

然后就是我们的主窗体啦:

src/com/ns/adf/MainActivity.java

package com.ns.abf;

import com.ns.abf.R.anim;

import com.ns.abf.R.drawable;

import android.os.Bundle;

import android.annotation.SuppressLint;

import android.app.Activity;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.view.animation.Animation;

import android.view.animation.AnimationUtils;

import android.widget.ImageView;

public class MainActivity extends Activity {

protected MenuItem refreshItem;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

switch (item.getItemId()) {

case R.id.refresh:

showRefreshAnimation(item);

return true;

default:

return super.onOptionsItemSelected(item);

}

}

@SuppressLint("NewApi")

private void showRefreshAnimation(MenuItem item) {

hideRefreshAnimation();

refreshItem = item;

//这里使用一个ImageView设置成MenuItem的ActionView,这样我们就可以使用这个ImageView显示旋转动画了

ImageView refreshActionView = (ImageView) getLayoutInflater().inflate(R.layout.action_view, null);

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);

}

@SuppressLint("NewApi")

private void hideRefreshAnimation() {

if (refreshItem != null) {

View view = refreshItem.getActionView();

if (view != null) {

view.clearAnimation();

refreshItem.setActionView(null);

}

}

}

}

大功告成,运行查看效果:

赞助本站

人工智能实验室

相关热词: ActionBar 载入动画 android

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港