给ActionBar中的按钮添加旋转动画(刷新动画)
2013-08-12 18:19
435 查看
经常看到很多应用会在Actionbar上放一个刷新按钮用来刷新页面内容,但是点击后并没有一个刷新的旋转动画,感觉少点什么,那我们就给它加一个旋转动吧!
首先是菜单布局,有两个菜单,都设置成以Actionbar的方式显示,其中一个为刷新菜单:
res/menu/main.xml
res/layout/action_view.xml
src/com/ns/adf/MainActivity.java
大功告成,运行查看效果:
![](http://static.oschina.net/uploads/space/2013/0812/181840_JVE5_134883.gif)
参考:https://github.com/github/gauges-android
首先是菜单布局,有两个菜单,都设置成以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); } } } }
大功告成,运行查看效果:
![](http://static.oschina.net/uploads/space/2013/0812/181840_JVE5_134883.gif)
参考:https://github.com/github/gauges-android
相关文章推荐
- (转)给ActionBar中的按钮添加旋转动画(刷新动画)
- 给ActionBar中的按钮添加旋转动画(刷新动画)
- Android ActionBar中的按钮添加旋转动画
- Android动画(透明度,平移,旋转,拉伸,动态添加按钮)
- 在 ActionBar 添加刷新按钮
- Android ActionBar中添加旋转动画
- 在 ActionBar 添加刷新按钮
- 在 ActionBar 添加刷新按钮
- 使用requestAnimationFrame和Canvas给按钮添加绕边动画
- jquery 3D动画旋转弹出图标菜单按钮
- ExtJs添加刷新等等按钮
- Swift3.0为视图添加旋转动画_CABasicAnimation
- [OpenGL] 制作一个有旋转动画的按钮
- Android旋转刷新动画
- 动画 -- 点击按钮 -- 顺时针旋转一圈
- ActionBar 添加按钮
- iOS 旋转动画添加3D效果
- Android Actionbar 添加返回按钮
- 在ActionBar添加刷新Loading状态
- ActionBar 添加返回按钮