• 【Android】5.8 滑动条(SeekBar)


    分类: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、运行截图

    拖动滑动条观察结果。

    image

    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
        }
    }

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

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

  • 相关阅读:
    第十三周编程总结
    第十二周总结
    第十一周课程总结
    第十周编程总结
    第七次实验报告及编程总结
    第六次实验报告及学习总结
    课程总结
    第十四周课程总结&实验报告
    第十三周课程总结
    第十二周总结
  • 原文地址:https://www.cnblogs.com/rainmj/p/5184561.html
Copyright © 2020-2023  润新知