案例使用的图片如下:

                          

1.在res/drawable目录下新增一个xml风格文件,seekbar_define_style.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?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/hou"/>
    <!-- 中 -->
    <item
        android:id="@android:id/progress"
        android:drawable="@drawable/qian"/>
    <item
        android:id="@android:id/secondaryProgress"
        android:drawable="@drawable/qian"/>
</layer-list>

2.在res/drawable下定义个seekbar_thumb.xml文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">       
        
    <!-- 按下状态--> 
    <item   
        android:state_focused="true"   
        android:state_pressed="true"   
        android:drawable="@drawable/ic_launcher" />       
    <!-- 普通无焦点状态 -拖动按钮--> 
    <item   
        android:state_focused="false"   
        android:state_pressed="false" 
        android:drawable="@drawable/orbino_icon_pack_006" />             
    <!-- 有焦点状态--> 
    <item   
        android:state_focused="true"   
        android:state_pressed="false"             
        android:drawable="@drawable/ios" />        
    <!-- 有焦点 --> 
    <item   
        android:state_focused="true"             
        android:drawable="@drawable/ios"/>
</selector>

3.在res/layut下定义布局资源文件seekbar_define.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="<a href="http://schemas.android.com/apk/res/android" rel="nofollow">http://schemas.android.com/apk/res/android</a>"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
         android:orientation="vertical"
        >
    <TextView
    android:id="@+id/seekbar_tetview_one"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="SeekBar自定义"
    />
    <TextView
    android:id="@+id/seekbar_tetview_two"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="SeekBar拖动时信息提示"
    />
    <SeekBar
    android:layout_width="321px"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:maxHeight="20px"
    android:minHeight="20px"
    android:paddingLeft="18px"
    android:paddingRight="18px"
    android:max="100"
    android:progressDrawable="@drawable/seekbar_define_style"
    android:thumb="@drawable/seekbar_thumb"
    android:id="@+id/seekBar"/>
 </LinearLayout>
</ScrollView>

4.定义java文件通过 引用布局文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
package com.test;
 
import android.R.integer;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
 
public class SeekBarDemo_DefineDemo extends Activity {
    private SeekBar seekBar;
    private TextView textView_one, textView_two;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.seekbar_define);
 
        seekBar = (SeekBar) findViewById(R.id.seekBar);
 
        textView_one = (TextView) findViewById(R.id.seekbar_tetview_one);
 
        textView_two = (TextView) findViewById(R.id.seekbar_tetview_two);
 
        seekBar.setOnSeekBarChangeListener(seekbarChangeListener);
 
    }
 
    private OnSeekBarChangeListener seekbarChangeListener = new OnSeekBarChangeListener() {
 
        // 停止拖动时执行
        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
            // TODO Auto-generated method stub
            textView_two.setText("停止拖动了!");
 
        }
 
        // 在进度开始改变时执行
        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
            // TODO Auto-generated method stub
            textView_two.setText("进度开始改变");
        }
 
        // 当进度发生改变时执行
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress,
                boolean fromUser) {
            textView_two.setText("正在进行拖动操作,还没有停下来一直再拖动");
            Message message = new Message();
 
            Bundle bundle = new Bundle();// 存放数据
 
            float pro = seekBar.getProgress();
 
            float num = seekBar.getMax();
 
            float result = (pro / num) * 100;
            bundle.putFloat("key", result);
 
            message.setData(bundle);
 
            message.what = 0;
 
            handler.sendMessage(message);
 
        }
    };
 
    /**
     * 用Handler来更新UI
     */
    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            textView_one.setText("当前拖动位置占 :       "
                    + msg.getData().getFloat("key") + "/100");
 
        }
 
    };
 
}
 

最后执行效果:

二:使用颜色显示,和尚面是一样的,只有我们定义颜色资源来替代图片资源文件seekbar_define_color_style.xml:如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?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:paddingTop="3px"
         android:paddingBottom="3px">    
      <shape>    
         <corners android:radius="10dip" />    
         <gradient   
             android:startColor="#ffffffff" 
             android:centerColor="#ff000000"    
             android:endColor="#ff808A87"   
             android:centerY="0.45"    
             android:angle="270"/>    
      </shape>    
   </item>    
       
   <item android:id="@android:id/progress"
            android:paddingTop="3px"
         android:paddingBottom="3px" >    
       <clip>    
          <shape>    
              <corners android:radius="10dip" />    
              <gradient   
                  android:startColor="#ffffffff" 
                  android:centerColor="#ffFFFF00"    
                  android:endColor="#ffAABD00"   
                  android:centerY="0.45"    
                  android:angle="270"/>    
          </shape>    
       </clip>    
   </item>    
 </layer-list>

之后再SeekBar标签使用如下属性进行引入:其他保持不变

1
android:progressDrawable="@drawable/seekbar_define_color_style"

执行效果:

由于SeekBar的属性thumb引入了自定义的seekbar_thumb.xml文件,拖动图标是我们自定义的图片:除去这个属性

1
android:thumb="@drawable/seekbar_thumb"

就回复系统默认状态效果最后效果如下:

我们可以通过颜色值再次休息seekbar_thumb.xml文件,使拖动按钮设置成自定义颜色:

Android SeekBar自定义使用图片和颜色显示的更多相关文章

  1. Android SeekBar 自定义thumb,thumb旋转动画效果

    简介 某些音乐播放或者视频播放的界面上,资源还在加载时,进度条的原点(thumb)会显示一个转圈的效果. 资源加载完成后,又切换回静态效果.这个效果增强了用户体验. 一般来说有美术人员负责设计和切图. ...

  2. Android——SeekBar(拖动条)相关知识总结贴

    Android进度条(ProgressBar)拖动条(SeekBar)星级滑块(RatingBar)的例子 http://www.apkbus.com/android-51326-1-1.html A ...

  3. Android 三档自定义滑动开关,禁止点击功能的实现,用默认的seekbar组件实现

    android三档自定义滑动开关,禁止点击功能的实现,普通开关网上有很多例子,三档滑动开关的则找了整天都没有相关例子,开始用普通开关的源码修改了自己实现了一个类,但效果不如人意,各种边界情况的算法很难 ...

  4. Android实现自定义带文字和图片的Button

    Android实现自定义带文字和图片的Button 在Android开发中经常会需要用到带文字和图片的button,下面来讲解一下常用的实现办法. 一.用系统自带的Button实现 最简单的一种办法就 ...

  5. 自定义漂亮的Android SeekBar样式

    系统自带的SeekBar真是太难看了,不能容忍! 只能自己做了,先来张效果图 第1个Seekbar 背景是颜色,thumb是图片,上代码: <SeekBar android:id="@ ...

  6. Android 自定义圆形图片 CircleImageView

    1.效果预览 1.1.布局中写自定义圆形图片的路径即可 1.2.然后看一看图片效果 1.3.原图是这样的 @mipmap/ic_launcher 2.使用过程 2.1.CircleImageView源 ...

  7. android progressbar 自定义图片匀速旋转

    项目中需要使用圆形进度条进行数据加载的显示,所以需要两个步骤 1:自定义progressbar滚动图片 2:匀速旋转图片 步骤一:自定义progressbar图片 <ProgressBar an ...

  8. Android RatingBar 自定义样式

    Android RatingBar 自定义样式 1.先定义Style: <style name="RadingStyle" parent="@android:sty ...

  9. 【转】Android之自定义Adapter的ListView

    http://www.cnblogs.com/topcoderliu/archive/2011/05/07/2039862.html 在开发中,我们经常使用到ListView这个控件.Android的 ...

随机推荐

  1. Socket 学习入门

    http://www.codeproject.com/Articles/13071/Programming-Windows-TCP-Sockets-in-C-for-the-Begin

  2. C#实现AES加解密方法

    using System; using System.Collections.Generic; using System.Text; using System.Security.Cryptograph ...

  3. Mac OS X【快捷键组合】汇总

    以下是可能会出现在 OS X 菜单中的修饰键符号: ⌘—— () ⌃ ——Control ⌥—— (alt) ⇧——Shift ⇪——Caps Lock fn——功能键就是fn 启动快捷键 按下按键 ...

  4. HDOJ 2546饭卡(01背包问题)

    http://acm.hdu.edu.cn/showproblem.php?pid=2546 Problem Description 电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额.如 ...

  5. WebSite和WebApplication的区别

    1. WebApplication(Web应用程序)和WebSite(网站)的区别:WebSite是为了兼容从ASP转过来的开发人员的习惯而存在的,用起来简单,例如:不需要创建命名控件.C#代码修改以 ...

  6. [转]C程序内存区域分配(5个段作用)

    [转]C程序内存区域分配(5个段作用) 2012-08-10 14:45:32|  分类: C++基础|字号 订阅     参考:http://www.360doc.com/content/11/03 ...

  7. 关于https和数字证书的一些必须知识

    下面这篇文章叫做  HTTPS连接的前几毫秒发生了什么 ,是一篇译文,写得不错,十分有助于理解https. http://blog.jobbole.com/48369/ 下面的链接是百度文库的 数字证 ...

  8. iOS 中的字体预览

    要预览iOS的各种字体的效果,可以访问http://iosfonts.com

  9. POJ 2429 GCD & LCM Inverse (Pollard rho整数分解+dfs枚举)

    题意:给出a和b的gcd和lcm,让你求a和b.按升序输出a和b.若有多组满足条件的a和b,那么输出a+b最小的.思路:lcm=a*b/gcd   lcm/gcd=a/gcd*b/gcd 可知a/gc ...

  10. MyBatis的foreach语句详解

    foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合.foreach元素的属性主要有 item,index,collection,open,separator,close.it ...