先来上个效果图:
当滑动时:数值显示,滑动停止时显示数字,使用FrameLayout结合Seekbar。
首先我们看看。
Layout:
<?xml version="1.0" enCoding="utf-8"?><merge xmlns:androID="http://schemas.androID.com/apk/res/androID" xmlns:tools="http://schemas.androID.com/tools"> <relativeLayout androID:ID="@+ID/wrapper_seekbar_indicator" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content"> <ImageVIEw androID:ID="@+ID/img_seekbar_indicator" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_alignParenttop="true" /> <TextVIEw androID:ID="@+ID/txt_seekbar_indicated_progress" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:gravity="center" androID:textcolor="#333333" androID:textSize="@dimen/space_12" tools:text="100" /> </relativeLayout> <relativeLayout androID:ID="@+ID/wrapper_seekbar" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content"> <Seekbar androID:ID="@+ID/seekbar" androID:layout_wIDth="match_parent" androID:layout_height="wrap_content" /> </relativeLayout></merge>
需要自定义可再上面修改图片问题颜色等,或者自己封装起来。
初始化函数。
private voID init(Context context,AttributeSet attrs,int defStyle) { VIEw vIEw = LayoutInflater.from(context).inflate( R.layout.vIEw_seekbar_indicated,this); bindVIEws(vIEw); if (attrs != null) setAttributes(context,attrs,defStyle); mSeekbar.setonSeekbarchangelistener(this); mTextVIEwProgress.setText(String.valueOf(mSeekbar.getProgress())); getVIEwTreeObserver().addOnGlobalLayoutListener( new VIEwTreeObserver.OnGlobalLayoutListener() { @TargetAPI(Build.VERSION_CODES.JELLY_BEAN) @OverrIDe public voID onGlobalLayout() { mMeasureDWIDth = mSeekbar.getWIDth() - mSeekbar.getpaddingleft() - mSeekbar.getpaddingRight(); mSeekbar.setpadding( mSeekbar.getpaddingleft(),mSeekbar.getpaddingtop() + mWrapperIndicator.getHeight(),mSeekbar.getpaddingRight(),mSeekbar.getpaddingBottom()); setIndicator(); getVIEwTreeObserver() .removeOnGlobalLayoutListener(this); } }); // mWrapperIndicator.setVisibility(VIEw.GONE); }
主要是根据是否有改变,和触摸进行判断字和图片的显示。
@OverrIDe public voID onProgressChanged(Seekbar seekbar,int progress,boolean fromUser) { setIndicator(); if (mOnSeekbarchangelistener != null) mOnSeekbarchangelistener.onProgressChanged(seekbar,progress,fromUser); } @OverrIDe public voID onStartTrackingtouch(Seekbar seekbar) { if (mOnSeekbarchangelistener != null) { mOnSeekbarchangelistener.onStartTrackingtouch(seekbar); mWrapperIndicator.setVisibility(VIEw.VISIBLE); } } @OverrIDe public voID onStopTrackingtouch(Seekbar seekbar) { if (mOnSeekbarchangelistener != null) { mOnSeekbarchangelistener.onStopTrackingtouch(seekbar); mWrapperIndicator.setVisibility(VIEw.GONE); } }
废话也不多说,原理很简单。
工程地址:
https://github.com/xiaoli1993/SeekBarIndicated/tree/47ffcc890fb9c7000bb20d9b248620564c2c8122
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。
总结以上是内存溢出为你收集整理的Android自定义SeekBar滑动显示数字全部内容,希望文章能够帮你解决Android自定义SeekBar滑动显示数字所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)