Android 拖动条(SeekBar)实例 附完整demo项目代码

Android 拖动条(SeekBar)实例 附完整demo项目代码

1、拖动条的事件
实现SeekBar.OnSeekBarChangeListener接口。需要监听三个事件:
数值改变(onProgressChanged)
开始拖动(onStartTrackingTouch)
停止拖动(onStopTrackingTouch)

onStartTrackingTouch开始拖动时触发,与onProgressChanged区别是停止拖动前只触发一次
而onProgressChanged只要在拖动,就会重复触发。

2、拖动条的主要属性和方法
setMax
设置拖动条的数值
setProgress
设置拖动条当前的数值
setSeconddaryProgress
设置第二拖动条的数值,即当前拖动条推荐的数值

代码:

复制代码
 1 package com.zdztools.seekbartest;
 2 
 3 import android.app.Activity;
 4 import android.os.Bundle;
 5 import android.util.Log;
 6 import android.widget.SeekBar;
 7 import android.widget.TextView;
 8 import android.widget.SeekBar.OnSeekBarChangeListener;
 9 
10 public class MainActivity extends Activity {
11     protected static final String TAG = "MainActivity";
12     private SeekBar seek;
13     private TextView myTextView;
14 
15     @Override
16     protected void onCreate(Bundle savedInstanceState) {
17         super.onCreate(savedInstanceState);
18         setContentView(R.layout.activity_main);
19 
20         myTextView = (TextView) findViewById(R.id.myTextView);
21         seek = (SeekBar) findViewById(R.id.mySeekBar);
22         //初始化
23         seek.setProgress(60);
24         seek.setOnSeekBarChangeListener(seekListener);
25         myTextView.setText("当前值 为: -" + 60);
26     }
27     
28     private OnSeekBarChangeListener seekListener = new OnSeekBarChangeListener(){
29         @Override
30         public void onStopTrackingTouch(SeekBar seekBar) {
31             Log.i(TAG,"onStopTrackingTouch");
32         }
33 
34         @Override
35         public void onStartTrackingTouch(SeekBar seekBar) {
36             Log.i(TAG,"onStartTrackingTouch");
37         }
38 
39         @Override
40         public void onProgressChanged(SeekBar seekBar, int progress,
41                 boolean fromUser) {
42             Log.i(TAG,"onProgressChanged");
43             myTextView.setText("当前值 为: -" + progress);
44 
45         }
46     };
47 }
复制代码
复制代码
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin" >

    <TextView
        android:id="@+id/myTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="20dip"
        android:text=""
        android:textSize="16sp"
        android:textStyle="bold" />

    <SeekBar
        android:id="@+id/mySeekBar"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

</LinearLayout>
复制代码

运行效果图:

 

完整项目实例代码:SeekBarTest.zip

本人另外一篇博客:android三档自定义滑动开关,禁止点击功能的实现,用默认的seekbar组件实现

 

posted @   大自然的流风  阅读(16256)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示