Android中加载数据时可以在ActionBar上显示一个无限转动的进度圈,称为IndeterminateProgressBar。可以简单通过以下方式实现。

在Activity的onCreate方法中调用

 

requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); //使用ActionBarSherlock适配2.x系统时Window类应为com.actionbarsherlock.view.Window

 

 

开始加载数据时调用

 

setProgressBarIndeterminateVisibility(true); //使用ActionBarSherlock适配2.x系统时调用setSupportProgressBarIndeterminateVisibility(true);

 

 

数据加载完成时调用

 

setProgressBarIndeterminateVisibility(false); //使用ActionBarSherlock适配2.x系统时调用setSupportProgressBarIndeterminateVisibility(false);

 

 

但是默认的情况下出来的进度圈有点大(见下图)。这时候就需要自定义这个IndeterminateProgressBar的样式。



 

 

 1. 对4.0以上的系统,可以在styles.xml中自定义ActionBar indeterminateProgresss的样式如下。

 

                

 注意上面IndeterminateProgress的定义不同。由于2.x系统中没有Widget.ProgressBar.Small这个Style,我们需要自己实现一个这样的Style。网上不少文章介绍说可以用ActionBarSherlock的@drawable/progress_small_holo作为ActionBar的indeterminateDrawable。但实际上目前最新版的ActionBar中不包含这个drawable。于是我们对v14 style定义中的Widget.ProgressBar.Small进行分析发现,他是由一个自定义的Drawable实现的。于是可以仿照他的实现为2.x系统实现一个小个一点的进度圈。如上的@drawable/progress_small_holo是一个drawable,定义如下(两个drawable图片,可以从sdk的4.0以上版本的resource中找到)

 

                                

 

 

这样便大功告成了(见下图)。看上去是不是比那个大圈更和谐一点?

 

 


3. 上面的例子中values-v14中ActionBar继承自Android4.0原生的主题风格。如果我们同时使用了ActionBarSherlock。并且在optionsMenu中用到了searchView, 由于ActionBarSherlock要求我们在optionsMenu使用searchView时需要使用
com.actionbarsherlock.widget.SearchView。如果v-14的主题继承自原生主题,我们就无法从optionsMenu中得到searchView,因为原生的ActionBar使用的是系统的android.Widget.SearchView。这时我们需要在v-14的style中也将主题从ActionBarSherlock的主题继承。并且indeterminateProgressStyle也要声明为自定义的类型。

 

更多相关文章

  1. Android_ActionBar
  2. 查看系统属性build.prop
  3. Android系统的编译命令
  4. android 音频系统/声卡驱动 codec
  5. Android使用Notification通知栏功能的封装
  6. Android(安卓)8.0系统Bug Only fullscreen opaque activities ca
  7. Android调用系统的库
  8. Android(安卓)P系统设置之默认打开定位开关(默认使用位置服务)
  9. 深入浅出 - Android系统移植与平台开发(二)

随机推荐

  1. android ->在界面上使用URI编程 ----开发
  2. Android中TextView中的文字颜色设置setTe
  3. Android获取输入法高度——输入法与页面
  4. Android(安卓)源码开发系列(二)Android(安
  5. Android(安卓)黑科技保活实现原理揭秘
  6. Android(安卓)界面过度绘制优化tips
  7. android——截屏共享的坑,mmp
  8. RIL层源码分析
  9. Android(安卓)使用Glide 报You cannot st
  10. android 读取 IMEI 和 MEID 的处理