Android入门(37)——第十四章 使用SeekBar制作可拖动的进度条

原创 2015年07月08日 22:30:42

1.简介:

 

2.主要属性和方法:

 

3. 主要事件:


4. 案例一:

第一步:设置布局文件main:添加一个seekBra控件和两个TextView控件。

<?xml version="1.0" encoding="utf-8"?>
<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:id="@+id/seekBra"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:max="100"
        android:progress="50" />

    <TextView 
        android:id="@+id/tv1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        />
    
    <TextView 
        android:id="@+id/tv2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        />
</LinearLayout>
第二步:设置MainActivity活动文件:

package com.example.seekbar;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;

public class MainActivity extends Activity implements OnSeekBarChangeListener {

	private SeekBar seekBar;
	private TextView tv1;
	private TextView tv2;

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

		tv1 = (TextView) findViewById(R.id.tv1);
		tv2 = (TextView) findViewById(R.id.tv2);
		seekBar = (SeekBar) findViewById(R.id.seekBra);
		seekBar.setOnSeekBarChangeListener(this);
	}

	// 数值改变调用
	@Override
	public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
		// TODO Auto-generated method stub
		tv2.setText("当前数值:" + progress);
		tv1.setText("正在拖动");
	}

	// 开始拖动调用
	@Override
	public void onStartTrackingTouch(SeekBar arg0) {
		// TODO Auto-generated method stub
		tv1.setText("开始拖动");
	}

	// 停止拖动调用
	@Override
	public void onStopTrackingTouch(SeekBar arg0) {
		// TODO Auto-generated method stub
		tv1.setText("停止拖动");
	}

}
效果图:



5. 自定义SeekBar进度条:


案例二:

第一步:首先学会查看默认的进度条的设置:对于第一个属性style,后面现在跟的就是默认的样式,通过ctrl+左键便可以访问样式的定义。

 <SeekBar
        style="@android:style/Widget.SeekBar"
        android:id="@+id/seekBra"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:max="100"
        android:progress="50" />
默认样式定义:其中我们要修改的是progressDrawable和thumb属性:

<style name="Widget.SeekBar">
        <item name="android:indeterminateOnly">false</item>
        <item name="android:progressDrawable">@android:drawable/progress_horizontal</item>
        <item name="android:indeterminateDrawable">@android:drawable/progress_horizontal</item>
        <item name="android:minHeight">20dip</item>
        <item name="android:maxHeight">20dip</item>
        <item name="android:thumb">@android:drawable/seek_thumb</item>
        <item name="android:thumbOffset">8dip</item>
        <item name="android:focusable">true</item>
        <item name="android:mirrorForRtl">true</item>
    </style>
然后继续查看progressDrawable属性后面的值
@android:drawable/progress_horizontal
可以查看具体的设置文件progress_horizontal.xml:这是进度条的默认样式文件。

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2008 The Android Open Source Project

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
-->

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    
    <item android:id="@android:id/background">
        <shape>
            <corners android:radius="5dip" />
            <gradient
                    android:startColor="#ff9d9e9d"
                    android:centerColor="#ff5a5d5a"
                    android:centerY="0.75"
                    android:endColor="#ff747674"
                    android:angle="270"
            />
        </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>
                <corners android:radius="5dip" />
                <gradient
                        android:startColor="#ffffd300"
                        android:centerColor="#ffffb600"
                        android:centerY="0.75"
                        android:endColor="#ffffcb00"
                        android:angle="270"
                />
            </shape>
        </clip>
    </item>
    
</layer-list>
注意点:thumb属性后面的那个文件无法通过ctrl+左键来访问,那么可以去那个什么帮助文档里去寻找,具体寻找方式看视频吧。

注意点二:关于这里这个thumb样式的修改,我们可以用选择器,设置按下和未按下时图案的变化,之前有介绍过的。

然后去main布局文件中修改SeekBar的属性:








版权声明:本文为博主原创文章,未经博主允许不得转载。

Android 可拖动进度条:SeekBar之自定义进度条

目录一、自定义进度条样式 二、自定义滑块样式一、自定义进度条样式1、方式一 我们还可以找到 progress_horizontal.xml的内容,大致如下,我们只需要对该内容进行修改即可以改变...
  • danfengw
  • danfengw
  • 2015年09月07日 08:49
  • 2596

android自定义进度值可拖动的seekbar

最近忙找实习,加上实验室在推新项目,需要学习新知识。所以很长一段时间没去整理了官博客了,github也蛮久没更新,很惭愧。接下来还是要坚持写。今天就简单的写一下我在项目中用到的算自定义seekbar的...
  • u014486880
  • u014486880
  • 2016年04月18日 20:10
  • 5346

Android 可拖动的进度条:SeekBar之简单使用

一、SeekBar的用处SeekBar是ProgressBar的扩展,是一个可以拖动的进度条,这样用户就可以通过拖动控制条来改变进度,就好像我们听音乐、看电影的前进与后退就是通过它来实现的。二、See...
  • danfengw
  • danfengw
  • 2015年09月06日 08:54
  • 7609

Android-SeekBar(拖动进度条)

学习使用SeekBar,设置样式我的学习步骤 在xml中拖出一个SeekBar控件效果图 代码 只想说这不是我想要的风格,然后参考了自定义漂亮的Andro...
  • u014314614
  • u014314614
  • 2015年11月15日 23:39
  • 1240

Android自定义可长按 可点击不可拖动的SeekBar

项目中遇见一个奇怪的需求 就是SeekBar不可点击 ,可长按 和拉着拖拽点拖动。一开始想着很简单嘛。屏蔽吊点击事件,SeekBar自带长按事件,差不多就搞定了,然而是我太天真啊,SeekBar自带的...
  • yangbo437993234
  • yangbo437993234
  • 2016年05月26日 14:12
  • 5995

可以手动拖动的扇形进度条

自定义可拖动扇形进度条
  • bb3413830
  • bb3413830
  • 2017年04月06日 16:43
  • 326

Android自定义可拖动进度条

如题,看效果图: 该自定义组件的优势: 1、使用简单; 2、可随意改变圆点、直线的颜色和大小; 当然,也许你会吐槽,系统不是提供了 seekBar 吗,怎么不用 seekBar。 我想说,...
  • yanjunhui2011
  • yanjunhui2011
  • 2017年02月20日 17:32
  • 685

使用SeekBar制作可拖动的进度条

一、SeekBar介绍SeekBar可以通过滑块的位置来标识数值,而且拖动条允许用户拖动滑块来改变进度值得大小二、SeekBar的主要属性和方法(1)setMax——设置SeekBar的最大数值 (...
  • eyouyou_0
  • eyouyou_0
  • 2016年02月17日 17:24
  • 236

Progressbar进度条和SeekBar拖动条的简单使用

Progressbar是进度条对话框,其展示形式可以是圆形的,展示时是不断的转圈,还有一种是水平的,可以显示出进度,当使用时必须规定其展示样式。   样式: @android:style/Wid...
  • jiuweitianhu_12345
  • jiuweitianhu_12345
  • 2016年11月09日 18:04
  • 1132

自定义双向滑动SeekBar

自定义控件是进阶高级必须掌握的知识点。自定义控件可以做到系统自带的控件做不到的效果。学习自定义控件也可以加深对View的理解。之后会写一系列博客,从图形绘制到控件的交互一步步分析如何做出自定义控件。这...
  • love_dingyu
  • love_dingyu
  • 2016年09月10日 13:49
  • 2414
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android入门(37)——第十四章 使用SeekBar制作可拖动的进度条
举报原因:
原因补充:

(最多只允许输入30个字)