`
niyanshi
  • 浏览: 20158 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

自定义ActionBar的indeterminateProgress样式

 
阅读更多

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的样式如下。

 

<style name="Theme.App" parent="android:style/Theme.Holo.Light.DarkActionBar">
        <item name="android:actionBarStyle">@style/Widget.App.ActionBar</item>
    </style>

    <style name="Widget.App.ActionBar" parent="android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">
        <item name="android:indeterminateProgressStyle">@style/IndeterminateProgress</item>
    </style>

    <style name="IndeterminateProgress" parent="@android:style/Widget.ProgressBar.Small"/>

 

 

 

2. 如果是使用了AnctionBarSherlock来适配2.x系统时,需要将上面的style声明到values-v14中。然后在values中作如下定义。

 

<style name="Theme.App" parent="Theme.Sherlock.Light.DarkActionBar">
        <item name="actionBarStyle">@style/Widget.App.ActionBar</item>
    </style>

    <style name="Widget.App.ActionBar" parent="Widget.Sherlock.Light.ActionBar.Solid.Inverse">
        <item name="background">@drawable/navbar_bg</item>
        <item name="backgroundSplit">@drawable/navbar_bg</item>
        <item name="indeterminateProgressStyle">@style/IndeterminateProgress</item>
    </style>

    <style name="IndeterminateProgress" parent="@style/Widget.Sherlock.ProgressBar">
        <item name="android:indeterminateDrawable">@drawable/progress_small_holo</item>
        <item name="android:minWidth">16dip</item>
        <item name="android:maxWidth">16dip</item>
        <item name="android:minHeight">16dip</item>
        <item name="android:maxHeight">16dip</item>
        <item name="android:gravity">center</item>
    </style>

 注意上面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中找到)

 

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
        <rotate
                android:drawable="@drawable/spinner_16_outer_holo"
                android:fillAfter="true"
                android:fromDegrees="0"
                android:pivotX="50%"
                android:pivotY="50%"
                android:toDegrees="2000"/>
    </item>
    <item>
        <rotate
                android:drawable="@drawable/spinner_16_inner_holo"
                android:fillAfter="true"
                android:fromDegrees="1440"
                android:pivotX="50%"
                android:pivotY="50%"
                android:toDegrees="0"/>
    </item>
</layer-list>

 

 

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

 

 


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也要声明为自定义的类型。

 

  • 大小: 49.2 KB
  • 大小: 44.3 KB
0
3
分享到:
评论

相关推荐

    自定义 actionbar 和 修改actionbar 样式

    创建一个新的主题,并在`&lt;style&gt;`标签下设置`parent`为父主题(如`Theme.AppCompat`),然后修改`&lt;item name="android:actionBarStyle"&gt;@style/MyActionBar&lt;/item&gt;`来指定自定义的ActionBar样式。 2. 定义样式:在同...

    Android自定义ActionBar示例

    然而,系统默认的ActionBar可能无法满足所有设计需求,因此开发者需要学会如何自定义它以实现更加个性化的界面效果。本示例将深入探讨如何在Android应用中实现自定义ActionBar。 首先,了解ActionBar的基本结构和...

    Android自定义ActionBar

    Android自定义ActionBar,常用的样式

    Android 实现自定义ActionBar(仿qq)

    自定义ActionBar的第一步就是创建一个新的主题,这个主题将覆盖默认的ActionBar样式。在res/values/styles.xml文件中,定义一个新的AppTheme,例如: ```xml &lt;!-- 自定义Action Bar的颜色、文字颜色等 --&gt; ...

    自定义ActionBar标题居中显示

    在Android应用开发中,ActionBar是系统提供的一种顶部导航栏,用于展示应用的标识、标题以及操作...通过自定义布局、设置属性以及应用自定义主题,我们可以根据需求灵活地调整ActionBar的行为和样式,提升用户体验。

    Android自定义ActionBar实例

    这里,`bar:type`属性用于指定ActionBar的布局样式,如`normal`、`dashboard`或`empty`。根据不同的类型,我们可以决定显示的元素,如图标、标题以及右侧的操作按钮。同时,还可以通过`bar:title`设置标题文字。 在...

    仿优酷 自定义ActionBar

    仿Youku主页面 自定义ActionBar

    自定义ActionBar样式

    要自定义ActionBar样式,首先需要创建一个主题(Theme)来覆盖默认的样式。在项目的res/values目录下,打开styles.xml文件,然后创建一个新的主题。例如,我们可以创建一个名为`AppTheme.ActionBarCustom`的主题: ...

    自定义ActionBar外观(flex4手机应用)

    在Flex4中,我们可以通过ActionScript 3(AS3)来实现对ActionBar的自定义,以满足特定的UI设计需求。本篇将详细介绍如何在Flex4手机应用中定制ActionBar的外观。 首先,我们需要了解Flex4的基本概念。Flex4是Adobe...

    自定义actionbar的一个比较容易理解的例子

    1. **创建主题**:在`res/values/styles.xml`文件中,定义一个新主题,覆盖默认的ActionBar样式。例如,可以自定义背景颜色、文字颜色等。如下所示: ```xml &lt;item name="android:actionBarStyle"&gt;@style/...

    android自定义actionbar

    在Android应用开发中,自定义ActionBar是一个常见的需求,它能帮助我们打造出具有独特风格的用户界面。ActionBar是Android SDK中的一个组件,通常用于显示应用程序的标识、导航选项以及操作按钮。本资源提供了一个...

    Android开发自定义actionbar

    3. 在Activity中应用自定义Action Bar:在Java代码中,获取ActionBar实例,并设置自定义布局。 ```java @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ...

    android中自定义actionbar

    `actionbarDemo`这个文件很可能是包含了一个完整的示例项目,可以从中学习到如何在实践中应用上述理论知识。下载并运行这个示例,将有助于更好地理解和掌握自定义Action Bar的技巧。在实践中,不断调试和优化,你会...

    自定义ActionBar和日历控件

    1. **设置样式**:可以通过修改主题(Theme)来改变`ActionBar`的颜色、背景等属性。在`res/values/styles.xml`文件中定义一个新的主题,并在`AndroidManifest.xml`中应用到对应的Activity。 2. **添加图标和标题**...

    Android如何创建自定义ActionBar

    本例中主要是如何创建自定义的 ActionBar。 观察上图的,当切换界面时,每个界面的顶部最多只有两个图标,而且有4个界面具有类似特性。所以可以考虑通过自定义控件来创建UI模板。 由于是需要创建出具有重用功能的...

    自定义ActionBar

    4. **样式和主题**:通过修改应用的主题或者在布局中设置属性,可以改变ActionBar的颜色、字体大小和样式。例如,可以在`styles.xml`文件中定义一个自定义主题,将`parent`设置为`Theme.AppCompat`,并修改`...

    安卓自定义控件相关-自定义actionbar源码.rar

    本资源“安卓自定义控件相关-自定义actionbar源码.rar”提供了自定义Action Bar的源码,旨在帮助开发者深入理解Action Bar的工作原理并学习如何根据需求进行定制。 自定义Action Bar主要涉及以下几个方面: 1. **...

    自定义 ActionBar

    1. **样式和主题**:通过修改应用的主题,可以改变ActionBar的颜色、字体、图标等。在`res/values/styles.xml`文件中定义一个自定义主题,然后在AndroidManifest.xml中应用到相应的Activity。 ```xml &lt;!-- ...

    ActionBar自定义布局源码工程

    可以通过修改`&lt;item name="android:actionBarStyle"&gt;`或`&lt;item name="actionBarStyle"&gt;`来指定自定义的ActionBar样式。 在`ActionBarStyle`这个压缩包文件中,很可能包含了自定义ActionBar所需的资源文件和代码示例...

Global site tag (gtag.js) - Google Analytics