安卓自定义seekbar数值_自定义SeekBar滑动显示数字

先来上个效果图:

2016092001.gif

当滑动时:数值显示,滑动停止时显示数字。

使用FrameLayout结合SeekBar。

首先我们看看。Layout:

xmlns:tools="http://schemas.android.com/tools">

android:id="@+id/wrapper_seekbar_indicator"

android:layout_width="wrap_content"

android:layout_height="wrap_content">

android:id="@+id/img_seekbar_indicator"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentTop="true" />

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" />

android:id="@+id/wrapper_seekbar"

android:layout_width="wrap_content"

android:layout_height="wrap_content">

android:id="@+id/seekbar"

style="@style/Widget.SeekBar.Normal"

android:layout_width="match_parent"

android:layout_height="wrap_content" />

需要自定义可再上面修改图片问题颜色等,或者自己封装起来。

初始化函数。

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);

}

}

废话也不多说,原理很简单。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值