Android开发 SeekBar开发记录

前言

  开发记录博客不是讲解使用博客,更多的是各种功能与点子的记录

 

基本使用

  

 <SeekBar
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
      android:max="200"
        android:maxHeight="3dp"
        android:minHeight="3dp"
        android:progressDrawable="@drawable/seekbar_bg"
        android:thumb="@drawable/seekbar_thumb_bg"/>
  • android:max="200" 进度最大值

  • android:progressDrawable="@drawable/seekbar_bg" 设置进度条的背景

  • android:thumb="@drawable/seekbar_thumb_bg" 设置进度条上圆点的背景

  • setProgress(int value) 设置滑块的位置
  • setMax(int value) 设置进度条的最大长度
  • setOnSeekBarChangeListener(OnSeekBarChangeListener l)这个主要是监听进度改变 里面包含3个回调方法 onProgressChanged进度条变化 onStartTrackingTouch(SeekBar seekBar) 监听开始拖动滚动条时的操作 onStopTrackingTouch(SeekBar seekBar) 监听停止拖动滚动条的操作
  • setSecondaryProgress(int secondaryProgress) 设置缓冲的进度

进度条背景xml

seekbar_bg.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>
            <solid android:color="#ff51495e"/>
        </shape>
    </item>

    <item android:id="@android:id/secondaryProgress">
        <clip>
            <shape>
                <solid android:color="#f9062a"/>
            </shape>
        </clip>
    </item>

    <item android:id="@android:id/progress">
        <clip>
            <shape>
                <solid android:color="#2db334"/>
            </shape>
        </clip>
    </item>

</layer-list>

根据属性解释一下3个背景的对应功能,原则上如果你不需要显示预加载的功能,可以将@android:id/secondaryProgress 设置为透明,或者不写

android:id="@android:id/background"       是没有如何拖动或者设置的背景

android:id="@android:id/secondaryProgress"   是次级进度背景,类似你在看视频的时候,视频的进度条会有预加载的进度.

android:id="@android:id/progress"       是主进度背景,就是你看视频的时候当前看到哪里的进度条背景.

进度条的圆点背景

seekbar_thumb_bg.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <!--获取焦点和没有按下的时候-->
    <item android:drawable="@drawable/seekbar_thumb_normal" android:state_focused="true" android:state_pressed="false"/>
    <!--获取焦点但按下的时候-->
    <item android:drawable="@drawable/seekbar_thumb_pressed" android:state_focused="true" android:state_pressed="true"/>
    <!--没有获取焦点按下的时候-->
    <item android:drawable="@drawable/seekbar_thumb_pressed" android:state_focused="false" android:state_pressed="true"/>
    <!--默认的时候-->
    <item android:drawable="@drawable/seekbar_thumb_normal"/>

</selector>

 

点子:将进度条竖立起来实现音量调节控件

效果图:

Android开发 SeekBar开发记录

activity布局

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/color_black_1"
    tools:context=".function.setting.system.view.SetScreenTimeoutActivity">

    <TextView
        android:id="@+id/title"
        android:layout_width="match_parent"
        android:layout_height="76dp"
        android:text="@string/off_screen_time"
        android:textColor="@color/ColorWhite"
        android:textSize="22sp"
        android:gravity="center"
        android:background="@color/black"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"/>

    <ImageView
        android:id="@+id/back"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:src="@mipmap/img_back_arrow"
        android:paddingLeft="20dp"
        app:layout_constraintTop_toTopOf="@id/title"
        app:layout_constraintBottom_toBottomOf="@id/title"
        app:layout_constraintLeft_toLeftOf="parent"/>

    <ImageView
        android:id="@+id/icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="100dp"
        android:src="@drawable/ic_screen_timeout"
        app:layout_constraintTop_toBottomOf="@id/title"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"/>

    <SeekBar
        android:id="@+id/seek_bar"
        android:layout_width="300dp"
        android:layout_height="70dp"
        android:rotationX="0.5"
        android:rotationY="0.5"
        android:rotation="270"
        android:thumb="@null"
        android:layout_marginTop="135dp"
        android:progressDrawable="@drawable/bg_seekbar"
        android:max="6"
        app:layout_constraintTop_toBottomOf="@id/icon"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"/>

    <ImageView
        android:id="@+id/add_icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_add"
        android:layout_marginTop="55dp"
        app:layout_constraintLeft_toLeftOf="@id/seek_bar"
        app:layout_constraintRight_toRightOf="@id/seek_bar"
        app:layout_constraintTop_toBottomOf="@id/icon"/>

    <ImageView
        android:id="@+id/reduce_icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_reduce"
        android:layout_marginTop="195dp"
        app:layout_constraintTop_toBottomOf="@id/add_icon"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"/>

    <TextView
        android:id="@+id/current_select_time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="340dp"
        android:textSize="22sp"
        android:textColor="@color/ColorWhite"
        app:layout_constraintTop_toBottomOf="@id/icon"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"/>

</androidx.constraintlayout.widget.ConstraintLayout>

这样里有一个需要注意的点,就是高度和宽度其实是互换的关系了.

进度背景

bg_seekbar.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 android:shape="rectangle">
            <size android:width="300dp" android:height="70dp"/>
            <solid android:color="#575757"/>
            <corners android:radius="88dp"/>
        </shape>

    </item>

    <item android:id="@android:id/secondaryProgress">
        <clip>
            <shape>
                <solid android:color="#575757"/>
            </shape>
        </clip>
    </item>

    <item android:id="@android:id/progress">
        <clip>
            <shape android:shape="rectangle">
                <size android:width="300dp" android:height="70dp"/>
                <solid android:color="#FFFFFF"/>
                <corners android:radius="88dp"/>
            </shape>
        </clip>
    </item>
</layer-list>

 

上一篇:JS中放大镜


下一篇:Unity开发备忘录000027:无编程做游戏之搭建场景并实现场景跳转