SeekBar控件的使用(Android设置可以拖动的进度条)

本文介绍了Android中SeekBar控件的使用,它允许用户手动拖动来调整进度。相较于ProgressBar,SeekBar提供了开始拖动、拖动中和拖动结束三种状态的监听,便于在不同状态下执行相应操作。通过布局文件配置和代码实现,可以创建并控制一个可交互的进度条。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SeekBar和ProgressBar同样都是进度条控件,但是SeekBar可以人为拖动改变控件进度。他的布局文件设置和ProgressBar差不多,但是activity操作有所不同。他可以监听开始拖动,拖动时,拖动停止三种状态,可以在这三种情况下设置操作。代码如下:

package cn.edu.qtech.csc.lcb.seekbardemo;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.SeekBar;
import android.widget.TextView;

public class MainActivity extends Activity {

    //控件对象
    private SeekBar testSeekBar;
    private TextView textView;

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

        //根据ID值取得SeekBar对象和TextView对象
        testSeekBar = (SeekBar)findViewById(R.id.seekbar);
        textView = (TextView)findViewById(R.id.info);

        testSeekBar.setMax(100); //设置进度条的最大值是100
        testSeekBar.setProgress(30); //设置初始位置

        //为SeekBar设置监听器,必须重写下列3个方法
        testSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener(){
            //在进度开始改变时执行
            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
                int i= seekBar.getProgress(); //获取进度条的进度值
                textView.setText("Start value is "+i); //在TextView上显示进度
            }

            //当进度发生改变时执行
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress,
                                          boolean fromUser) {
                if(fromUser) //判断是谁修改的进度值?
                    textView.setText("Current value is "+progress+"   --from user!");
                else
                    textView.setText("Current value is "+progress+"   --from program!");
            }

            //在停止拖动时执行
            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                int i= seekBar.getProgress();  //获取进度条的进度值
                textView.setText("ok, the final value is "+i);
            }
        });

        //程序设置方式改变进度值处理
        ((Button)findViewById(R.id.test)).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (testSeekBar.getProgress()<testSeekBar.getMax())
                    testSeekBar.setProgress(testSeekBar.getProgress()+10);//进度值未满则进度增长10
                else
                    testSeekBar.setProgress(0); //若进度条满则重新计数
            }
        });
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值