案例使用的图片如下:

                          

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. svn命令在linux下的使用

    svn命令在linux下的使用 SVN软件版本管理 三 12th, 2008 转载本站文章请注明,转载自:扶凯[[url]http://www.php-oa.com[/url]] 本文链接: [url ...

  2. bat programming is easy and powerful

    用linux的角度来思考windows,习惯了linux的shell后, 再来看windows的bat编程,就简单多了,简直就是理所当然 实际上windows的cmd命令行和linux的shell命令 ...

  3. vs 2012 InstallShield Limited Edition Project 打包windows服务解析

    最近项目从vs2005 升级到vs2010后,发现新的vs2010 不再带有原来的安装工程项目,导致以前的安装包不可以使用,查找资料后发现微软从vs2010 版本后不再提供自带的安装工程,尝试着利用  ...

  4. CKEditor使用笔记

    相关资源 1. 首页地址:http://ckeditor.com/ 2. 下载地址:http://ckeditor.com/download 3. SDK地址:http://sdk.ckeditor. ...

  5. FineUI第六天---表单控件

    表单控件 所有表单控件都有的属性有: ShowLabel:是否显示标签(默认值:true). ShowEmptyLabel:是否显示空白的标签(默认值:false). Label:标签文本(默认值:& ...

  6. [Effective JavaScript 笔记]第46条:使用数组而不要使用字典来存储有序集合

    对象属性无序性 js对象是一个无序属性集合. var obj={}; obj.a=10; obj.b=30; 属性a和属性b并没有谁前谁后之说.for...in循环,先输出哪个属性都有可能.获取和设置 ...

  7. Linux文件与目录常用命令

    目录常用命令: cd:切换目录 pwd:显示当前目录 mkdir:新建一个目录 rmdir:删除一个空的目录 ## cd 命令几种常用方法: cd ~username 切换到用户username的主文 ...

  8. django admin 扩展

    添加自定义动作: 例子,添加一个方法,批量更新文章,代码如下: from django.contrib import admin from myapp.models import Article de ...

  9. ubuntu14.04安装OpenVirteX

    官网链接: http://ovx.onlab.us/getting-started/installation/ step1: System requirements: Recommended 4 Co ...

  10. 【OpenStack】OpenStack系列17之OpenStack私有云设计二