android SeekBar

作者: CokeNello | 来源:发表于2016-04-20 07:49 被阅读8027次

    概述

    SeekBar,拖动条。主要的要点是自定义的样式,拖动条的值,拖动条值改变的监听器等等。


    1.SeekBar的重要的属性

    style="@android:style/Widget.SeekBar"指定样式
    android:max="200"最大值为200,默认是100
    android:progress="100"指定当前的值为100
    android:thumb设置滑动块的样式
    android:progressDrawable设置进度条的图片


    progress值改变的监听器:

    seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
                @Override
                public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                    textView.setText("Value:"+ Integer.toString( progress ) );
                }
    
                @Override
                public void onStartTrackingTouch(SeekBar seekBar) {
                    Log.e("------------","开始滑动!");
                }
    
                @Override
                public void onStopTrackingTouch(SeekBar seekBar) {
                    Log.e("------------","停止滑动!");
                }
            });
    

    2.先看看系统提供的样式:

    普通版的
    style="@android:style/Widget.SeekBar"

    2016-04-20_072525.png

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

    2016-04-20_072655.png

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

    2016-04-20_072815.png

    Material
    style="@android:style/Widget.Material.SeekBar"

    2016-04-20_073252.png

    3.自定义

    1)滑块的自定义

    <!-- This is the thumb on the seek bar. -->  
    <selector xmlns:android="http://schemas.android.com/apk/res/android">  
       
         <item android:state_pressed="true"  
               android:state_window_focused="true"  
               android:drawable="@drawable/seek_thumb_pressed" />  
       
         <item android:state_focused="true"  
               android:state_window_focused="true"  
               android:drawable="@drawable/seek_thumb_selected" />  
       
         <item android:state_selected="true"  
              android:state_window_focused="true"  
              android:drawable="@drawable/seek_thumb_selected" />  
     
        <item android:drawable="@drawable/seek_thumb_normal" />  
    </selector>  
    

    它定义的是seekbar的滑块样式,内容很简单,大家应该看得懂,分别对应着按下,选中,以及获得焦点时滑块的图片,这个是源码的,大家照葫芦画瓢就好了。

    <?xml version="1.0" encoding="UTF-8"?>  
    <selector xmlns:android="http://schemas.android.com/apk/res/android">  
       <!-- 按下状态 -->  
    <item android:state_pressed="true" android:drawable="@drawable/bg3" />  
       
         <!-- 普通无焦点状态 -->  
         <item android:state_focused="false"    android:state_pressed="false"  
             android:drawable="@drawable/bg4" />  
    </selector>  
    

    2)进度条自定义

    <style name="Widget.Material.SeekBar">
            <item name="indeterminateOnly">false</item>
            <item name="progressDrawable">@drawable/seekbar_track_material</item>
            <item name="indeterminateDrawable">@drawable/seekbar_track_material</item>
            <item name="thumb">@drawable/seekbar_thumb_material_anim</item>
            <item name="splitTrack">true</item>
            <item name="useDisabledAlpha">false</item>
            <item name="focusable">true</item>
            <item name="paddingStart">16dip</item>
            <item name="paddingEnd">16dip</item>
            <item name="mirrorForRtl">true</item>
            <item name="background">@drawable/control_background_32dp_material</item>
        </style>
    

    当然,thumb可以直接使用属性标签:android:thumb去指定,
    这里的style是自定义了很多东西,上面的这个是系统的 Material 效果的风格xml,有

    • progressDrawable 效果,就是进度条的样式
    • indeterminateDrawable 设置绘制不显示进度的进度条的Drawable对象
    • indeterminateOnly 是否不显示进度条,true,不显示
    • thumb 滑动块样式
    • background 背景

    4.Over

    所以呢,xml绘图很重要哈哈,有木有?

    相关文章

      网友评论

      本文标题:android SeekBar

      本文链接:https://www.haomeiwen.com/subject/suyzlttx.html