【Android】SeekBar的使用

说点题外话:之前从GitHub盗代码得了好处,于是啥都想去GitHub上找,下了一个项目以后研究了一个星期没整明白里面的逻辑,后来才发现,我根本不懂SeekBar的使用机制,还没学会走就想飞有点浪,只好老老实实做一个最简单的SeekBar,然后再去拓展。其实一开始也是不知道SeekBar,一直以为那个叫slider,结果一直搜索无果,这也是知识欠缺的硬伤,所以说,知道要做的东西是什么,很关键。

参考资料:http://blog.csdn.net/qq_28057577/article/details/52225870

【Android】SeekBar的使用_第1张图片

activity_main.xml中一个SeekBar和两个TextView


<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >

    <SeekBar
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:max="2"
        android:thumb="@drawable/yellow_mid_img"
        android:maxHeight="8dp"
        android:progress="1"
        android:progressDrawable="@drawable/seek_style"
        android:id="@+id/id_seek_bar"
        />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/id_text"
        android:layout_gravity="center"
        android:layout_marginTop="100dp"
        android:textSize="30sp"
        android:textColor="#d65466"
        />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/id_text2"
        android:layout_gravity="center"
        android:layout_marginTop="100dp"
        android:textSize="30sp"
        android:textColor="#febf22"
        />

LinearLayout>

其中图yellow_mid_img.png
这里写图片描述
以及seek_style.xml,用于条条背景颜色,灰色到黄色的变化


<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:id="@android:id/background">
        <shape>

            <solid android:color="#febf22"/>
        shape>
    item>

    <item android:id="@android:id/secondaryProgress">
        <clip>
            <shape>
                <corners android:radius="5dip" />
                <gradient
                    android:startColor="#80ffd300"
                    android:centerColor="#80ffb600"
                    android:centerY="0.75"
                    android:endColor="#a0ffcb00"
                    android:angle="270"
                    />
            shape>
        clip>
    item>

    <item android:id="@android:id/progress">
        <clip>
            <shape>

                <solid android:color="#999"/>
            shape>
        clip>
    item>
layer-list>

这样其实就可以在活动中显示了,不用写任何代码,也可以左右滑动

在代码中用它
两个文字用来提示当前的状态。是按下了还是松开,按钮处于哪个位置
代码还是延续以前的习惯,用init函数方便调试

public class MainActivity extends Activity implements SeekBar.OnSeekBarChangeListener{

    private SeekBar mSeekBar;
    private TextView mTextView,mTextView2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        initView();
        initData();
        initEvent();
    }

    private void initView(){
        mSeekBar=findViewById(R.id.id_seek_bar);
        mTextView=findViewById(R.id.id_text);
        mTextView2=findViewById(R.id.id_text2);

    }
    private void initData(){
        mTextView.setText("松开seekBar");
        mTextView2.setText("中温");
    }
    private void initEvent(){
        mSeekBar.setOnSeekBarChangeListener(this);
    }

}

可以看到我在Activity后面implements点击事件,这是我的习惯,也可以直接用匿名类,看个人喜欢

public class MainActivity extends Activity implements SeekBar.OnSeekBarChangeListener{

    @Override
    public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
        switch (i){
            case 0:
                mTextView2.setText("低温");
                Drawable drawable=getResources().getDrawable(R.drawable.green_low_img);
                seekBar.setThumb(drawable);
                break;
            case 1:
                mTextView2.setText("中温");
                Drawable drawable1=getResources().getDrawable(R.drawable.yellow_mid_img);
                seekBar.setThumb(drawable1);
                break;
            case 2:
                mTextView2.setText("高温");
                Drawable drawable2=getResources().getDrawable(R.drawable.red_high_img);
                seekBar.setThumb(drawable2);
        }
    }

    @Override
    public void onStartTrackingTouch(SeekBar seekBar) {
        mTextView.setText("按下seekBar");

    }

    @Override
    public void onStopTrackingTouch(SeekBar seekBar) {
        mTextView.setText("松开seekBar");

    }

这里写图片描述 这里写图片描述
这样就可以根据滑动修改文字和滑动块的颜色。

你可能感兴趣的:(【Android】SeekBar的使用)