分类:C#、Android、VS2015;

创建日期:2016-02-07

一、简介

滑动条也叫拖动条(用户可拖动改变滑动条的值),比如可让用户调节音量大小、调节屏幕亮度、调节歌曲或视频当前播放的位置、……等。

1、常用方法:

SetMax方法:设置滑动条的最大值

SetProgress方法:设置滑动条的当前值

SetSeconddaryProgress方法:设置滑动条的第2个值,该值一般用灰色背景显示推荐值或者预读取的进度值。比如在电脑上看电影时,用户在滑动条中既能看到可拖放的当前播放位置(当前值),也能看到已经下载并缓存到本机的灰色部分的进度位置(第2个值)。

2、基本用法1:用事件实现(常用)

ProgressChanged事件:当进度值发生改变时引发。

例如:

  1. protected override void OnCreate(Bundle bundle)
  2. {
  3. …..
  4. seekBar1 = FindViewById<SeekBar>(Resource.Id.seekBar1); seekBar1.ProgressChanged += (s, e) =>
    {
  5. if (e.FromUser)
  6. {
  7. textView1.Text = string.Format("当前值为 {0}", e.Progress);
  8. }
  9. };
  10. }

3、基本用法2:用接口实现(仅在需要跟踪用户拖动的事件时才这样用)

这种用法要求实现SeekBar.IOnSeekBarChangeListener接口。此接口要求实现三个事件处理,分别是:

当前值改变时引发(OnProgressChanged)

用户开始拖动时引发(OnStartTrackingTouch)

用户停止拖动时引发(OnStopTrackingTouch)

例如(注意实现的接口):

  1. public class MainActivity : Activity , SeekBar.IOnSeekBarChangeListener
  2. {
  3. protected override void OnCreate(Bundle bundle)
  4. {
  5. …..
  6. seekBar2 = FindViewById<SeekBar>(Resource.Id.seekBar2);
  7. textView2 = FindViewById<TextView>(Resource.Id.textView2);
  8. textView3 = FindViewById<TextView>(Resource.Id.textView3);
  9. seekBar2.SetOnSeekBarChangeListener(this);
  10. }
  11. #region 实现接口
  12. public void OnProgressChanged(SeekBar seekBar, int progress, bool fromUser)
  13. {
  14. if (fromUser)
  15. {
  16. textView2.Text = string.Format("当前值已调整到 {0}", seekBar.Progress);
  17. }
  18. }
  19. public void OnStartTrackingTouch(SeekBar seekBar)
  20. {
  21. textView3.Text = "用户开始拖动滑动条。";
  22. }
  23. public void OnStopTrackingTouch(SeekBar seekBar)
  24. {
  25. textView3.Text = "用户停止了拖动滑动条。";
  26. }
  27. #endregion
  28. }

记住:用接口实现的这3个方法也都有对应的事件。换句话说,也可以全部用第1种办法来实现接口中实现的这3个方法,就看你是不是需要对应的事件了。但是,如果用接口来实现,不论是不是需要,都必须实现接口中声明的方法(真是个很笨的办法)。

二、示例9—Demo09SeekBar

1、运行截图

拖动滑动条观察结果。

2、添加demo09_SeekBar.axml文件

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent">
  6. <!--用法1-->
  7. <SeekBar
  8. android:layout_width="fill_parent"
  9. android:layout_height="wrap_content"
  10. android:id="@+id/seekBar1"
  11. android:max="100"
  12. android:progress="25"
  13. android:secondaryProgress="100"
  14. android:layout_marginTop="30dp" />
  15. <TextView
  16. android:text=""
  17. android:textAppearance="?android:attr/textAppearanceLarge"
  18. android:layout_width="fill_parent"
  19. android:layout_height="wrap_content"
  20. android:id="@+id/textView1"
  21. android:layout_marginTop="20dp" />
  22.  
  23. <!--用法2-->
  24. <SeekBar
  25. android:layout_width="fill_parent"
  26. android:layout_height="wrap_content"
  27. android:id="@+id/seekBar2"
  28. android:max="100"
  29. android:progress="25"
  30. android:secondaryProgress="40"
  31. android:layout_marginTop="50dp" />
  32. <TextView
  33. android:text=""
  34. android:textAppearance="?android:attr/textAppearanceLarge"
  35. android:layout_width="fill_parent"
  36. android:layout_height="wrap_content"
  37. android:id="@+id/textView2"
  38. android:layout_marginTop="20dp" />
  39. <TextView
  40. android:text=""
  41. android:textAppearance="?android:attr/textAppearanceLarge"
  42. android:layout_width="fill_parent"
  43. android:layout_height="wrap_content"
  44. android:id="@+id/textView3"
  45. android:layout_marginTop="20dp" />
  46. </LinearLayout>

3、添加Demo09SeekBar.cs文件

  1. using Android.App;
  2. using Android.OS;
  3. using Android.Widget;
  4. namespace ch05demos.SrcActivity
  5. {
  6. [Activity(Label = "Demo09SeekBar")]
  7. public class Demo09SeekBar : Activity, SeekBar.IOnSeekBarChangeListener
  8. {
  9. //注意:
  10. //用法1(常用)不要求实现SeekBar.IOnSeekBarChangeListener接口
  11. //用法2(不常用)要求必须实现SeekBar.IOnSeekBarChangeListener接口
  12.  
  13. SeekBar seekBar1, seekBar2;
  14. TextView textView1, textView2, textView3;
  15.  
  16. protected override void OnCreate(Bundle savedInstanceState)
  17. {
  18. base.OnCreate(savedInstanceState);
  19. SetContentView(Resource.Layout.demo09_SeekBar);
  20.  
  21. seekBar1 = FindViewById<SeekBar>(Resource.Id.seekBar1);
  22. textView1 = FindViewById<TextView>(Resource.Id.textView1);
  23.  
  24. seekBar2 = FindViewById<SeekBar>(Resource.Id.seekBar2);
  25. textView2 = FindViewById<TextView>(Resource.Id.textView2);
  26. textView3 = FindViewById<TextView>(Resource.Id.textView3);
  27.  
  28. //用法1:(常用)
  29. seekBar1.ProgressChanged += (s, e) => {
  30. if (e.FromUser)
  31. {
  32. textView1.Text = string.Format("当前值为 {0}", e.Progress);
  33. }
  34. };
  35.  
  36. // 用法2:(用接口实现)
  37. seekBar2.SetOnSeekBarChangeListener(this);
  38.  
  39. }
  40.  
  41. #region 用法2需要实现的SeekBar.IOnSeekBarChangeListener接口
  42.  
  43. public void OnProgressChanged(SeekBar seekBar, int progress, bool fromUser)
  44. {
  45. if (fromUser)
  46. {
  47. textView2.Text = string.Format("当前值已调整到 {0}", seekBar.Progress);
  48. }
  49. }
  50.  
  51. public void OnStartTrackingTouch(SeekBar seekBar)
  52. {
  53. textView3.Text = "用户开始拖动滑动条。";
  54. }
  55.  
  56. public void OnStopTrackingTouch(SeekBar seekBar)
  57. {
  58. textView3.Text = "用户停止了拖动滑动条。";
  59. }
  60. #endregion
  61. }
  62. }

好了,这一章的内容就讲到这了。先过一段看看有多少人关注,如果关注本博客的人很少,也就没有继续往下写的必要了。

如果你觉得内容对你有帮助,不要忘了加关注和点赞呵。

【Android】5.8 滑动条(SeekBar)的更多相关文章

  1. Android开发手记(11) 滑动条SeekBar

    安卓滑动条的操作特别简单,通过getProgress()可以获得SeekBar的位置,通过setProgress(int progress)可以设置SeekBar的位置.要想动态获取用户对SeekBa ...

  2. 自定义控件-滑动条SeekBar

    一.效果图 二.实现思路 1.控件继承自View 2.重写两个方法onDraw() 绘制页面和 onTouch() 添加监听 3.onDraw(Canvas ca)中     a.new Canvas ...

  3. Android 自学之拖动条SeekBar

    拖动条(SeekBar)和进度条非常相似,只是进度条采用颜色填充来表明进度完成的程度,而拖动条则通过滑块的位置来标识数值----而且拖动条允许用户拖动滑动块来改变值,因此拖动条通常用于对系统的某种数值 ...

  4. Android自定义Seekbar滑动条,Pop提示跟随滑动按钮一起滑动

    由于项目需要做出此效果,自定义写了一个. 效果图 思路: 原始的seekbar只有滑动条并没有下方的提示文字,所以我们必须要继承Seekbar重写这个控件. 代码: 在values文件夹下新建attr ...

  5. Android模仿三星手机系统滑动条滑动时滑块变大的特效

    使用三星手机的过程中发现三星手机系统自带的滑动条有一个特效.比方调节亮度的滑动条.在滑动滑块的过程中,滑块会变大.功能非常小可是体验却非常好,于是决定做一个这种效果出来.好了废话不多说了,以下開始实现 ...

  6. Android 拖动条/滑动条控件、星级评分控件

    ProgressBar有2个子控件: SeekBar   拖动条控件 RatingBar   星级评分控件 1.拖动条控件 <SeekBar android:layout_width=" ...

  7. 7.Android之评分条RatingBar和拖动条SeekBar学习

    评分条RatingBar和拖动条SeekBar很常见,今天来学习下. (1)RatingBar评分条 如图: <RelativeLayout xmlns:android="http:/ ...

  8. Android GridView 滑动条设置一直显示状态

    模拟GridView控件: <GridView android:id="@+id/picture_grid" android:layout_width="match ...

  9. Android中ViewPager实现滑动条及与Fragment结合的实例教程

    ViewPager类主要被用来实现可滑动的视图功能,这里我们就来共同学习Android中ViewPager实现滑动条及与Fragment结合的实例教程,需要的朋友可以参考下 自主实现滑动指示条先上一个 ...

随机推荐

  1. 修复损坏的 shapefile

    一.SHP文件 Shapefile文件(简称SHP)作为ESRI一种经典的数据格式,被很多其他软件所支持,如CAD.MapGIS等,虽然也有一些限制(如无法进行拓扑分析.字段长度为10个字符等),但其 ...

  2. socket.io对IE8的支持

    默认下载了最新版的socket.io,版本号是1.7.2,对IE8的支持不好,反正在IE8下收发消息都不行.在网上查了很多资料,都解决不了IE8的问题,崩溃. 最后用了一个大家比较认可的版本1.0.6 ...

  3. Python网络编程 - 一个简单的客户端Get请求程序

    import socket target_host = "www.baidu.com" target_port = 80 # create a socket object clie ...

  4. Loadrunner web_reg_find 和web_reg_save_param 比较

    通常web_reg_find用于文本查找,其属性SaveCount是当改文本找到后该参数为1,如果没找到则为0,并且函数不会因为没找到而报错.可以用此参数值用于标志位判断. web_reg_find( ...

  5. eclipse 将javaWeb项目转化成maven项目

      eclipse 将javaWeb项目转化成maven项目 CreateTime--2018年4月18日16:04:18 Author:Marydon 1.首先,maven项目的标准目录 2.web ...

  6. 3、eclipse 查看原始类出现The jar file rt.jar has no source attachment解决方法

    因为rt的source在jdk目录的src.zip文件里,将文件设置为jdk下的src.zip就行了.具体如下 Window>Preferences>Java>Installed J ...

  7. Android 线性布局(LinearLayout)相关官方文档 - 指南部分

    Android 线性布局(LinearLayout)相关官方文档 - 指南部分 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用 ...

  8. Spring配置文件头信息

    代码如下: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http:// ...

  9. HDUOJ---三角形(组合数学)

    http://acm.hdu.edu.cn/showproblem.php?pid=1249 三角形 Time Limit: 2000/1000 MS (Java/Others)    Memory ...

  10. AspxPivotGrid和WebChartControl数据联动处理日志

    AspxPivotGrid具有很好的表格样式体验,WebChartControl也是个很内容丰富的做图控件,我希望实现的功能是这样的, 处理题库统计分析图表,用户点AspxPivotGrid绑定知识点 ...