Android自定义SeekBar实现滑动验证且不可点击的示例

  介绍

小编给大家分享一下安卓自定义SeekBar实现滑动验证且不可点击的示例,希望大家阅读完这篇文章之后都有所收获、下面让我们一起去探讨吧!

最近公司因为短信接口被盗刷的比较严重,需要做一个类似于淘宝的滑动验证,用于特定环境,以增加一层保障。拿到需求首先想到的是自定义ViewGroup来实现,里面放一个SeekBar和TextView即可。但是有更简单的方法,直接在布局中放入SeekBar和TextView,不就好了吗?用最简单快捷的方法实现需求,才是硬道理。

值得一提的是,SeekBar默认情况下是支持点击事件的,也就是说,用户可以直接点击进度条以实现滑动验证这是不允许的,因此,自定义SeekBar,屏蔽点击事件。下面我们先从SeekBar + textxiew实现滑动验证效果开始,最后实现SeekBar点击事件的屏蔽。

滑动验证实现:

先上一张效果图:

 Android自定义SeekBar实现滑动验证且不可点击的示例

不太美观,UI还没设计,只是个演示。

<强> 1,布局

& lt;使用   ,,android: layout_width=癿atch_parent"   ,,android: layout_height=皐rap_content"   ,,android:背景=癅color/white"   ,,android:填充=?0 dp"比;      & lt; com.dmlc.app.android.widget.NoClickSeekbar   ,,android: id=癅 + id/sb_bar"   ,,android: layout_width=癿atch_parent"   ,,android: layout_height=皐rap_content"   ,,android: max=?00”;   ,,android:进步=?”;   ,,android: progressDrawable=癅drawable/style_seekbar_verify"   ,,android:拇指=癅drawable/style_seekbar_thumb"   ,,android: thumbOffset=? dp",/比;      & lt; TextView   ,,android: id=癅 + id/sb_tv"   ,,android: layout_width=癿atch_parent"   ,,android: layout_height=皐rap_content"   ,,android: layout_centerInParent=皌rue"   ,,android:重力=癱enter"   ,,android:文本=扒氚醋』?拖动到最右边“;   输入textColor=,, android:“# 888888“;   ,,android: textSize=?4 dp",/比;   & lt;/RelativeLayout>

其中,android: progressDrawable用于定义滑动条背景,android:拇指定义滑块样式。

滑动条背景:

& lt; ? xml  version=?.0“,编码=皍tf-8" ?比;   & lt; layer-list  xmlns: android=癶ttp://schemas.android.com/apk/res/android"比;   ,& lt; !——seekBar背景——比;   ,& lt; item  android: id=癅android: id/background"比;   ,& lt; !——形状——比;   ,& lt; shape  android:形状=皉ectangle"比;   & lt;才能!——大小——比;   & lt;才能size  android:身高=?0 dp",/比;   & lt;才能!——圆角——比;   & lt;才能corners  android:半径=? dp",/比;   & lt;才能!——背景——比;   & lt;才能solid  android:颜色=? E7EAE9",/比;   & lt;才能!——边框——比;   & lt;才能中风   android:才能宽度=? dp"   android才能:颜色=? C3C5C4",/比;   ,& lt;/shape>   ,& lt;/item>   ,& lt; !——seekBar的进度条——比;   ,& lt; item  android: id=癅android: id/progress"比;   ,& lt; clip>   & lt;才能shape>   & lt;才能corners  android:半径=? dp",/比;   & lt;才能solid  android:颜色=? 7 ac23c",/比;   & lt;才能中风   ,,android:宽度=? dp"   ,,android:颜色=? C3C5C4",/比;   & lt;才能/shape>   ,& lt;/clip>   ,& lt;/item>      & lt;/layer-list>

滑块样式:

& lt; ? xml  version=?.0“,编码=皍tf-8" ?比;   & lt;选择器   ,xmlns: android=癶ttp://schemas.android.com/apk/res/android"比;   ,& lt; item  android: state_focused=皌rue", android: state_pressed=癴alse", android:可拉的=癅drawable/seekbar_thumb_normal",/比;   ,& lt; item  android: state_focused=皌rue", android: state_pressed=皌rue", android:可拉的=癅drawable/seekbar_thumb_pressed",/比;   ,& lt; item  android: state_focused=癴alse", android: state_pressed=皌rue", android:可拉的=癅drawable/seekbar_thumb_pressed",/比;   ,& lt; item  android:可拉的=癅drawable/seekbar_thumb_normal",/比;   & lt;/selector>

<强> 2,自定义seekbar

重写setOnSeekBarChangeListener,监听seekbar。
简单介绍下几个回调方法的作用:

<李>

onProgressChanged:当进展进度改变时调用;

<李>

onStartTrackingTouch:开始滑动时调用;

<李>

onStopTrackingTouch:滑动结束时调用;

public  class  NoClickSeekbar  extends  seekbar {   ,private  int  oldsign =, 0;   ,private  int  mTemp =, 10;//点击最大值,超过这个值则不响应   ,private  int  mStep =, 0;   ,OnNoClickSeekBarChangeListener  mOnSeekBarChangeListener;      ,public  NoClickSeekbar (Context 上下文),{   ,这(上下文,null);   ,}      null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

Android自定义SeekBar实现滑动验证且不可点击的示例