(转)给ActionBar中的按钮添加旋转动画(刷新动画)

   转自:http://my.oschina.net/fanxiao/blog/152175                  

                        给ActionBar中的按钮添加旋转动画(刷新动画)

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

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

    res/menu/main.xml


01 <menu xmlns:android="http://schemas.android.com/apk/res/android" >
02  
03     <item
04         android:id="@+id/air_traffic"
05         android:icon="@drawable/ic_action_airtraffic"
06         android:showAsAction="always">
07     </item>
08     <item
09         android:id="@+id/refresh"
10         android:icon="@drawable/ic_action_refresh"
11         android:showAsAction="always">
12     </item>
13  
14 </menu>
    然后我们需要一个View来显示旋转动画:


    res/layout/action_view.xml


1 <ImageView xmlns:android="http://schemas.android.com/apk/res/android"
2   style="@android:style/Widget.ActionButton"
3   android:layout_width="wrap_content"
4   android:scaleType="centerInside"
5   android:layout_height="wrap_content" />
    然后就是我们的主窗体啦:


    src/com/ns/adf/MainActivity.java

01 package com.ns.abf;
02  
03 import com.ns.abf.R.anim;
04 import com.ns.abf.R.drawable;
05  
06 import android.os.Bundle;
07 import android.annotation.SuppressLint;
08 import android.app.Activity;
09 import android.view.Menu;
10 import android.view.MenuItem;
11 import android.view.View;
12 import android.view.animation.Animation;
13 import android.view.animation.AnimationUtils;
14 import android.widget.ImageView;
15  
16 public class MainActivity extends Activity {
17  
18     protected MenuItem refreshItem;
19  
20     @Override
21     protected void onCreate(Bundle savedInstanceState) {
22         super.onCreate(savedInstanceState);
23         setContentView(R.layout.activity_main);
24     }
25  
26     @Override
27     public boolean onCreateOptionsMenu(Menu menu) {
28         // Inflate the menu; this adds items to the action bar if it is present.
29         getMenuInflater().inflate(R.menu.main, menu);
30         return true;
31     }
32  
33     @Override
34     public boolean onOptionsItemSelected(MenuItem item) {
35         switch (item.getItemId()) {
36         case R.id.refresh:
37             showRefreshAnimation(item);
38             return true;
39         default:
40             return super.onOptionsItemSelected(item);
41         }
42     }
43  
44     @SuppressLint("NewApi")
45     private void showRefreshAnimation(MenuItem item) {
46         hideRefreshAnimation();
47  
48         refreshItem = item;
49  
50         //这里使用一个ImageView设置成MenuItem的ActionView,这样我们就可以使用这个ImageView显示旋转动画了
51         ImageView refreshActionView = (ImageView) getLayoutInflater().inflate(R.layout.action_view, null);
52         refreshActionView.setImageResource(drawable.ic_action_refresh);
53         refreshItem.setActionView(refreshActionView);
54          
55         //显示刷新动画
56         Animation animation = AnimationUtils.loadAnimation(this, anim.refresh);
57         animation.setRepeatMode(Animation.RESTART);
58         animation.setRepeatCount(Animation.INFINITE);
59         refreshActionView.startAnimation(animation);
60     }
61  
62     @SuppressLint("NewApi")
63     private void hideRefreshAnimation() {
64         if (refreshItem != null) {
65             View view = refreshItem.getActionView();
66             if (view != null) {
67                 view.clearAnimation();
68                 refreshItem.setActionView(null);
69             }
70         }
71     }
72  
73 }


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

    参考:https://github.com/github/gauges-android


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值