分类:C#、Android、VS2015;

创建日期:2016-02-07

一、简介

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

1、常用方法:

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

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

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

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

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

例如:

protected override void OnCreate(Bundle bundle)
{
…..
seekBar1 = FindViewById<SeekBar>(Resource.Id.seekBar1); seekBar1.ProgressChanged += (s, e) =>
{
if (e.FromUser)
{
textView1.Text = string.Format("当前值为 {0}", e.Progress);
}
};
}

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

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

当前值改变时引发(OnProgressChanged)

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

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

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

public class MainActivity : Activity , SeekBar.IOnSeekBarChangeListener
{
protected override void OnCreate(Bundle bundle)
{
…..
seekBar2 = FindViewById<SeekBar>(Resource.Id.seekBar2);
textView2 = FindViewById<TextView>(Resource.Id.textView2);
textView3 = FindViewById<TextView>(Resource.Id.textView3);
seekBar2.SetOnSeekBarChangeListener(this);
}
#region 实现接口
public void OnProgressChanged(SeekBar seekBar, int progress, bool fromUser)
{
if (fromUser)
{
textView2.Text = string.Format("当前值已调整到 {0}", seekBar.Progress);
}
}
public void OnStartTrackingTouch(SeekBar seekBar)
{
textView3.Text = "用户开始拖动滑动条。";
}
public void OnStopTrackingTouch(SeekBar seekBar)
{
textView3.Text = "用户停止了拖动滑动条。";
}
#endregion
}

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

二、示例9—Demo09SeekBar

1、运行截图

拖动滑动条观察结果。

2、添加demo09_SeekBar.axml文件

<?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">
<!--用法1-->
<SeekBar
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/seekBar1"
android:max="100"
android:progress="25"
android:secondaryProgress="100"
android:layout_marginTop="30dp" />
<TextView
android:text=""
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/textView1"
android:layout_marginTop="20dp" /> <!--用法2-->
<SeekBar
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/seekBar2"
android:max="100"
android:progress="25"
android:secondaryProgress="40"
android:layout_marginTop="50dp" />
<TextView
android:text=""
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/textView2"
android:layout_marginTop="20dp" />
<TextView
android:text=""
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/textView3"
android:layout_marginTop="20dp" />
</LinearLayout>

3、添加Demo09SeekBar.cs文件

using Android.App;
using Android.OS;
using Android.Widget;
namespace ch05demos.SrcActivity
{
[Activity(Label = "Demo09SeekBar")]
public class Demo09SeekBar : Activity, SeekBar.IOnSeekBarChangeListener
{
//注意:
//用法1(常用)不要求实现SeekBar.IOnSeekBarChangeListener接口
//用法2(不常用)要求必须实现SeekBar.IOnSeekBarChangeListener接口 SeekBar seekBar1, seekBar2;
TextView textView1, textView2, textView3; protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.demo09_SeekBar); seekBar1 = FindViewById<SeekBar>(Resource.Id.seekBar1);
textView1 = FindViewById<TextView>(Resource.Id.textView1); seekBar2 = FindViewById<SeekBar>(Resource.Id.seekBar2);
textView2 = FindViewById<TextView>(Resource.Id.textView2);
textView3 = FindViewById<TextView>(Resource.Id.textView3); //用法1:(常用)
seekBar1.ProgressChanged += (s, e) => {
if (e.FromUser)
{
textView1.Text = string.Format("当前值为 {0}", e.Progress);
}
}; // 用法2:(用接口实现)
seekBar2.SetOnSeekBarChangeListener(this); } #region 用法2需要实现的SeekBar.IOnSeekBarChangeListener接口 public void OnProgressChanged(SeekBar seekBar, int progress, bool fromUser)
{
if (fromUser)
{
textView2.Text = string.Format("当前值已调整到 {0}", seekBar.Progress);
}
} public void OnStartTrackingTouch(SeekBar seekBar)
{
textView3.Text = "用户开始拖动滑动条。";
} public void OnStopTrackingTouch(SeekBar seekBar)
{
textView3.Text = "用户停止了拖动滑动条。";
}
#endregion
}
}

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

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

【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. Wndows 主进程(Rundll32)已停止工作

        打开电脑,出现"windows 主进程(Rundll32)已停止工作",百度了一下,是文件损坏了.     下载一个新的文件,替换即可,若遇到权限问题,使用魔方工具中的设置 ...

  2. Appium Python 四:怎样获取APP的Package以及Activity

    看到一篇很好的博客:[Android测试][随笔]获得App的包名和启动页Activity 除了博客上的方法,我还找到两种方法: 方法一:aapt 前提需要使用SDK Manager.exe 下载 A ...

  3. c++构造函数具体解释

    一.Default constructor 1.       对于class X ,假设没有不论什么user-declared constructor,那么编译器生成的default construc ...

  4. 算法笔记_179:历届试题 数字游戏(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 栋栋正在和同学们玩一个数字游戏. 游戏的规则是这样的:栋栋和同学们一共n个人围坐在一圈.栋栋首先说出数字1.接下来,坐在栋栋左手边的同学要 ...

  5. My Magic Android Tour —— 处女作

    近期考试什么的都已经结束了,闲在家也没什么事做,就想着学点什么,于是便选择了学一下Android开发.一直在使用Android手机.要是自己能为自己的手机开发一个APP就好了. 好了,也不扯些废话了, ...

  6. EXCEPTION-El表达式

      CreateTime-- Author:Marydon 声明:异常类文章主要是记录了我遇到的异常信息及解决方案,解决方案大部分都是百度解决的,(这里只是针对我遇到的做个汇总),特此声明! stud ...

  7. 创建Maven项目后,发现目录里面只有src/main/resources

    创建Maven项目: 创建文件后,发现目录只有一个:缺少了src/main/java 和 src/test/java 百度后发现这个有效果,在本环境中只处理了第三步就可以了: 1.eclipse-&g ...

  8. Linux(CentOS)的server安装及配置图解(图文)

    CentOS,据说这个如今在server上装机量非常大. 安装的分区划分 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdXBpMnU=/font/5a6L ...

  9. 【cookie】cookie和session的终极区别

    如果浏览器使用的是 cookie,那么所有的数据都保存在浏览器端,比如你登录以后,服务器设置了 cookie用户名(username),那么,当你再次请求服务器的时候,浏览器会将username一块发 ...

  10. 【laravel5.4】发送alisms短信和163邮箱

    public function test() { $res=ClientSource::all(); //dd($res); echo "<br>"; /* 发送短信[ ...