控件 -- SeekBar

一、概念

在Android开发中,拖动条常常用于对系统某种数值的设置,例如播放视频和音量等都会用到拖动条SeekBar。SeekBar和进度条十分相似,只是拖动条可以通过滑动块的位置来标志数值,并且允许用户拖动滑动块来改变值。

二、使用

1.属性

● style="@android:style/Widget.SeekBar" 指定seekbar的样式;
● android:max="200" 指定seekbar的最大值为200,默认是100;
● android:progress="75"指定seekbar的当前值为75,也可以通过代码设置,如:seekBar.setProgress(75);
● android:thumb 设置seekbar的滑动块样式;
● android:progressDrawable 设置seekbar的进度条的样式。

2.拖动监听

onSeekBarChangeListener

3.样式

style="@android:style/Widget.SeekBar"
style="@android:style/Widget.DeviceDefault.SeekBar"
style="@android:style/Widget.Holo.SeekBar"

4.自定义样式

//Activity
public class MainActivity extends AppCompatActivity {
    private SeekBar seekBar;
    private TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        seekBar = (SeekBar) findViewById(R.id.progress);
        textView = (TextView) findViewById(R.id.text1);
        seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                // 当拖动条的滑块位置发生改变时触发该方法,在这里直接使用参数progress,即当前滑块代表的进度值
                textView.setText("Value:" + Integer.toString(progress));
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
                Log.e("------------", "开始滑动!");
            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                Log.e("------------", "停止滑动!");
            }
        });
    }

}

//activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginTop="10dp">

    <SeekBar
        android:id="@+id/progress"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@+id/text1"
        android:maxHeight="2dp"
        android:minHeight="2dp"
        android:paddingBottom="3dp"
        android:paddingLeft="12dp"
        android:max="200"
        android:paddingRight="12dp"
        android:paddingTop="3dp"
        android:progressDrawable="@drawable/layer_progress"
        android:thumb="@drawable/shape_circle" />

    <TextView
        android:id="@+id/text1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:gravity="left"
        android:padding="6dp"
        android:text="Value:0"
        android:textColor="#16BC5C"
        android:textSize="16dp" />
</RelativeLayout>

//layer_progress.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@android:id/background">
        <shape>
            <corners android:radius="3dp" />
            <solid android:color="#ECF0F1" />
        </shape>
    </item>
    <item android:id="@android:id/secondaryProgress">
        <clip>
            <shape>
                <corners android:radius="3dp" />
                <solid android:color="#C6CACE" />
            </shape>
        </clip>
    </item>
    <item android:id="@android:id/progress">
        <clip>
            <shape>
                <corners android:radius="3dp" />
                <solid android:color="#16BC5C" />
            </shape>
        </clip>
    </item>
</layer-list>

//shape_circle.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <!-- solid表示圆的填充色 -->
    <solid android:color="#16BC5C" />
    <!-- stroke则代表圆的边框线 -->
    <stroke
        android:width="1dp"
        android:color="#16BC5C" />
    <!-- size控制高宽 -->
    <size
        android:height="20dp"
        android:width="20dp" />
</shape>
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,094评论 25 709
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,868评论 0 17
  • 去深圳两天 哥在家把衣服洗了 回来甚是开心 今早赶着上班 随便抓一条工衣套上就出门了 然后一直闻到死老鼠味道 后来...
    不正常生物研究中心阅读 1,603评论 0 1
  • 一味坊读书会第八十五期 人名卡 -人名 >罗纳德.德沃金(Ronald Dwokin)公元1931.12.11-...
    张coco阅读 1,846评论 0 0
  • 眉头间躺着枯竭的河香烟半支已碳化缭乱轻烟成了你的灵魂定格如墙上像框 人流如鲫欢颜似悦甚风光不要粉饰莫用微笑去掩盖你...
    蒋光头jL94430阅读 2,523评论 16 16

友情链接更多精彩内容