`

Android中自定义SeekBar的背景颜色,进度条颜色,以及滑块的图片

阅读更多

在Android中的控件种类已经足够我们使用,但是有时候大家需要根据美工的设计来改变一些控件的颜色,式样,以及背景图片
最近正好有这方面的需要,用了很久时间,找到了改变基本颜色以及图片的方法
下面以SeekBar为例,为大家描述一下我的做法

首先在layout文件夹中的main.xml内容如下

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" android:layout_width="fill_parent"
	android:layout_height="fill_parent">

	<SeekBar android:id="@+id/seek" android:layout_width="300px"
		android:layout_height="wrap_content" android:max="100"
		android:progress="50" android:progressDrawable="@drawable/seekbar_img"
		android:thumb="@drawable/thumb" />
</LinearLayout>
 


很简单,只有一个SeekBar控件,注意它的 android:progressDrawable="@drawable/seekbar_img" 以及 android:thumb="@drawable/thumb" 它们分别对应的是 进度条的图片以及拖动滑块的图片,这里的图片也可以是我们自定义的drawable中的xml文件,可以理解成这两个属性应该如何显示的意思,而@drawable/seekbar_img和@drawable/thumb它们分别对应着 drawable 文件夹中的文件seekbar_img.xml和thumb.xml,它们表示着如何去显示进度条与滑块

当初我想的是在网上找SeekBar的原始样式文件是如何定义,这样就可以照搬代码,修改一些我需要的图片以及颜色和大小就行了,于是就开始搜索,这里要用到的是Android的系统源码,具体下载办法网上很多,需要用到cygwin,大家可以参考 http://tech.it168.com/a2009/0529/579/000000579026.shtml



下好源代以后,可以在 C:\cygwin\home\android\frameworks\base\core\res\res\drawable 这个路径下找到很多图片与android的原始控件样式(即xml文件)
找一下,哈哈,好东西可不少,以后要改样式全靠它们了
我们可以在这是里面找到seek_thumb.xml,内容如下

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2008 The Android Open Source Project

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
-->

<!-- This is the thumb on the seek bar. -->
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true"
          android:state_window_focused="true"
          android:drawable="@drawable/seek_thumb_pressed" />

    <item android:state_focused="true"
          android:state_window_focused="true"
          android:drawable="@drawable/seek_thumb_selected" />

    <item android:state_selected="true"
          android:state_window_focused="true"
          android:drawable="@drawable/seek_thumb_selected" />

    <item android:drawable="@drawable/seek_thumb_normal" />

</selector>

 

它定义的是seekbar的滑块样式,内容很简单,大家应该看得懂,分别对应着按下,选中,以及获得焦点时滑块的图片


另外,我们还可以找到 progress_horizontal.xml,内容如下

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2008 The Android Open Source Project

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
-->

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    
    <item android:id="@android:id/background">
        <shape>
            <corners android:radius="5dip" />
            <gradient
                    android:startColor="#ff9d9e9d"
                    android:centerColor="#ff5a5d5a"
                    android:centerY="0.75"
                    android:endColor="#ff747674"
                    android:angle="270"
            />
        </shape>
    </item>
    
    <item android:id="@android:id/secondaryProgress">
        <clip>
            <shape>
                <corners android:radius="5dip" />
                <gradient
                        android:startColor="#80ffd300"
                        android:centerColor="#80ffb600"
                        android:centerY="0.75"
                        android:endColor="#a0ffcb00"
                        android:angle="270"
                />
            </shape>
        </clip>
    </item>
    
    <item android:id="@android:id/progress">
        <clip>
            <shape>
                <corners android:radius="5dip" />
                <gradient
                        android:startColor="#ffffd300"
                        android:centerColor="#ffffb600"
                        android:centerY="0.75"
                        android:endColor="#ffffcb00"
                        android:angle="270"
                />
            </shape>
        </clip>
    </item>
    
</layer-list>

 



有了这两个文件的源代码,我们就可以依样画葫芦了
首先在自己的工程下drawable文件夹中建立seek_bar.xml文件与thumb.xml文件
我写的两个文件内容如下
seekbar_img.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
	<!-- 背景图 -->
	<item android:id="@+android:id/background" android:drawable="@drawable/bg" />
	<!--全部能量图  -->
	<item android:id="@+android:id/SecondaryProgress"
		android:drawable="@drawable/bg" />
	<!-- 进和能量图 -->
	<item android:id="@+android:id/progress" android:drawable="@drawable/bg2" />
</layer-list>

 

thumb.xml

<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
	<!-- 按下状态 -->
	<item android:state_pressed="true" android:drawable="@drawable/bg3" />

	<!-- 普通无焦点状态 -->
	<item android:state_focused="false" android:state_pressed="false"
		android:drawable="@drawable/bg4" />
</selector> 
 

这时运行程序,我的截图如下,丑了点,但是目的达到了

 

 

 

 

 

 

 

 

 

 

 

 

 

 

这是根据自己要求修改样式比较简单的做法
下面是这个工程的源代码

分享到:
评论
2 楼 qjlhlh 2013-06-24  
按照背景,secondProgress,Progress三个,应该有三种颜色啊~
1 楼 a379933101 2012-08-13  
lz好人啦,

相关推荐

    android 自定义Seekbar,包括图片,背景颜色

    本教程将详细介绍如何在Android中自定义Seekbar,包括设置自定义图片和背景颜色。 首先,我们需要创建一个新的XML布局文件来定义自定义Seekbar。这个文件通常会放在res/layout目录下,例如命名为`custom_seekbar....

    Android自定义SeekBar滑动条

    本篇文章将深入探讨如何在Android中自定义SeekBar,以满足更个性化的视觉效果和交互需求。 1. **自定义SeekBar的基本步骤** - 创建一个新的XML布局文件,在其中定义SeekBar,可以设置基本属性如id、width、height...

    自定义SeekBar(图片背景,图片进度)

    总的来说,自定义SeekBar主要是通过继承系统SeekBar,设置自定义属性,以及重写关键方法来实现的。通过这种方式,我们可以自由地设计SeekBar的外观,使其更好地融入到应用程序的UI设计中。在这个例子中,我们使用了...

    自定义SeekBar, 能改变尺寸、颜色、滑块图片、刻度图片、刻度文字和气泡指示器,当滑动时显示带有进度的气泡指示器

    本篇文章将详细探讨如何根据提供的标题和描述,自定义一个功能丰富的SeekBar,以实现改变尺寸、颜色、滑块图片、刻度图片、刻度文字以及气泡指示器的功能。 首先,我们需要创建一个新的自定义SeekBar类,继承自...

    Android自定义SeekBar滑动显示数字

    先来上个效果图: 当滑动时:数值显示,滑动停止时显示数字,使用FrameLayout结合SeekBar。 首先我们看看。 Layout: &lt;?xml version=1.0 encoding=utf-... android:id=@+id/wrapper_seekbar_indicator android:la

    自定义SeekBar,可水平或者竖直

    在自定义SeekBar的过程中,我们可以创建一个自定义属性集(attr.xml)来设置一些可配置的参数,如方向(水平或竖直)、背景图片、颜色等。这样,我们可以通过XML布局文件轻松地为每个实例设置不同的样式。例如,可以...

    SeekBar 自定义View 进度条

    本文将深入探讨如何自定义 SeekBar 视图以及在实际开发中的应用技巧。 一、SeekBar 基础知识 SeekBar 是 Android SDK 中的一个 ProgressBar 的子类,它提供了一个可拖动的滑块来显示进度。默认情况下,SeekBar 有...

    android自定义SeekBar,拖动时可弹出跟随窗口显示进度

    在Android开发中,SeekBar是一个非常常见的控件,用于让用户通过滑动来选择一个介于最小值和最大值之间...通过研究和实践这个例子,你可以更好地掌握Android自定义视图的技巧,以及如何通过PopupWindow来增强UI交互性。

    Android自定义SeekBar样式

    -- 背景颜色或形状 --&gt; &lt;item android:id="@android:id/secondaryProgress"&gt; &lt;!-- 中间进度的颜色或形状 --&gt; &lt;item android:id="@android:id/progress"&gt; &lt;!-- 当前进度的颜色或形状 --&gt; ``` 最后,将...

    自定义 SeekBar

    本篇文章将深入探讨如何在 Android 中自定义 SeekBar,包括改变其颜色、大小、滑块形状以及添加自定义的进度指示器等。 一、自定义 SeekBar 的 XML 属性 1. **改变主题**: 在 Android 的 styles.xml 文件中,你...

    自定义seekbar颜色和背景

    在Android开发中,SeekBar是一种常用的进度条控件,它允许用户通过拖动滑块来改变数值或选择一个范围。自定义SeekBar的颜色和背景可以让应用程序界面更具个性化和专业感。下面将详细介绍如何在Android中实现这个功能...

    Android自定义seekbar源码.zip

    本文将详细解析"Android自定义seekbar源码.zip"中提供的源码,探讨如何自定义SeekBar以满足特定需求。 首先,我们要明白 SeekBar 的基本结构。在Android的SDK中,SeekBar继承自ProgressBar,它有两个主要的属性:...

    安卓UI设计:自定义SeekBar拖动条例子

    以下将详细讲解如何在Android中自定义SeekBar,以实现"安卓UI设计:自定制SeekBar拖动条"。 1. **自定义SeekBar的基本步骤** - 创建资源文件:首先,你需要创建XML资源文件,包括颜色、形状和绘制对象等。例如,...

    三种方式自定义SeekBar样式

    - `android:progressDrawable`:设置进度条的背景图,通常用一个自定义的九宫格图片。 - `android:indeterminateDrawable`:设置不确定状态(即进度条滚动时)的动画图。 - `android:thumb`:设置滑块的图标,...

    android自定义ProgressView长条渐变色的进度条,实现渐变色的效果

    android自定义ProgressView长条渐变色的进度条,实现渐变色的效果,不适用一张图片实现! 具体思路:http://blog.csdn.net/springsky_/article/details/17954765

    Android使用VideoView+MediaController自定义seekbar和全屏切换功能

    例如,我们可以设置渐变色的进度条背景,以及个性化的滑块图片。 **全屏切换功能** 实现全屏切换功能通常有两种方式:一种是将VideoView的宽高设置为屏幕尺寸,另一种是将VideoView添加到一个新的全屏布局中。首先...

    android自定义seekbar源码.rar

    "android自定义seekbar源码.rar"这个压缩包提供了一个自定义SeekBar的示例源代码,帮助我们了解如何在Android中定制自己的SeekBar。 首先,自定义SeekBar通常涉及到以下几个方面: 1. **改变样式**:可以通过修改...

    自定义SeekBar,手势滑动条

    开发者可能通过重写onDraw()方法,利用Canvas来绘制个性化的滑块形状、颜色、大小以及进度条的动画效果。 3. **动态反馈**:为了提高用户体验,自定义SeekBar可能加入了实时的视觉反馈,比如在用户滑动时,滑块和...

Global site tag (gtag.js) - Google Analytics