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

这里写图片描述

一、SeekBar的用处

SeekBar是ProgressBar的扩展,是一个可以拖动的进度条,这样用户就可以通过拖动控制条来改变进度,就好像我们听音乐、看电影的前进与后退就是通过它来实现的。

二、SeekBar的使用

 如果我们想要实现对拖动的控制,就需要对该事件进行监听,Android系统提供了一个监听接口SeekBar.OnSeekBarChangeListener,要实现它的监听功能只要实现其接口即可。
 在SeekBar中我们需要监听的主要有如下三个事件
 数值的改变(onProgressChanged):进度发生改变时调用
 开始拖动(onStartTrackingTouch):开始拖动的时候调用
 停止拖动(onStopTrackingTouch):停止拖动的时候调用 

了解了SeekBar的调用,我们来看下它的相关属性。
android:max ( 设置值的大小 )
android:thumb=”@drawable/” ( 显示的那个可拖动图标,如果没有设置该参数则为系统默认,如果自己需要重新定义,则将自己需要的图标存放在资源目录 /res/drawable下,然后调用即可)
android:thumbOffset (拖动图标的偏量值,可以让拖动图标超过bar的长度)
android:progress ( 设置seekbar当前进度条的默认值,范围0到max之间)
android:secondaryProgress (拖动图标随着当前的播放时间的走动而走动,同时我们也注意到了也有个缓冲看到的进度条,这个属性就是用来设置默认显示的值为多少,范围为0到max)
android:progressDrawable(用于自己定义SeekBar)

三、应用实例

布局:

<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"
    tools:context=".MainActivity" 
    android:orientation="vertical">

    <SeekBar
        android:id="@+id/seekbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:max="100"
        android:progress="30"
       />
    <TextView 
        android:id="@+id/tvdata"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
     <TextView 
        android:id="@+id/tvstate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
</LinearLayout>

MainActivity:

package com.example.myseekbar;

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 mseekbar;
    private TextView mtvdata;
    private TextView mtvstate;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mseekbar=(SeekBar) findViewById(R.id.seekbar);
        mtvdata=(TextView) findViewById(R.id.tvdata);
        mtvstate=(TextView) findViewById(R.id.tvstate);
        //监听器
        mseekbar.setOnSeekBarChangeListener(this);       
    }
   //开始创建时调用
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    @Override
    public void onProgressChanged(SeekBar seekBar, int progress,
            boolean fromUser) {
        mtvstate.setText("开始拖动");
        mtvdata.setText("当前进度数值是:"+progress);

    }

    @Override
    public void onStartTrackingTouch(SeekBar seekBar) {
        mtvstate.setText("开始拖动");

    }

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

}
发布了313 篇原创文章 · 获赞 190 · 访问量 64万+
展开阅读全文

Android 这种进度条怎么实现?

12-10

遇到一个这样的进度条,跟随进度变化,高亮发光。颜色跟随主题颜色变化,所以不能用固定颜色图片之类的 ![图片说明](https://img-ask.csdn.net/upload/201812/10/1544413021_963969.png) 尝试了一下,通过<layer-list>加一层渐变,效果感人 ``` <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@android:id/background" android:height="@dimen/dp_2px"> <shape> <corners android:radius="@dimen/dp_1px" /> <solid android:color="@color/gray" /> </shape> </item> <item android:id="@android:id/progress" android:height="@dimen/dp_5px" android:gravity="center"> <clip> <layer-list> <item> <shape> <corners android:radius="@dimen/dp_2px" /> <gradient android:angle="0" android:endColor="?attr/theme_color" android:startColor="@android:color/transparent" android:type="linear" /> </shape> </item> <item android:bottom="@dimen/dp_2px" android:gravity="center" android:top="@dimen/dp_2px"> <shape> <corners android:radius="@dimen/dp_2px" /> <solid android:color="?attr/theme_color" /> </shape> </item> </layer-list> </clip> </item> </layer-list> ``` ![图片说明](https://img-ask.csdn.net/upload/201812/10/1544419919_212512.png) 使用 elevation也没有效果 ``` android:elevation="@dimen/dp_20px" android:outlineProvider="bounds" android:translationZ="@dimen/dp_20px" ``` 一时间不知道该如果去实现,哪位大神帮忙下 问答

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 精致技术 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览