效果图:

java代码

public class SeekBarRelativeLayout extends RelativeLayout {    public SeekBarRelativeLayout(Context context, AttributeSet attrs) {        super(context, attrs);    }    public SeekBarRelativeLayout(Context context, AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);    }    private TextView textView;    private SeekBar seekBar;    private SeekBar.OnSeekBarChangeListener onSeekBarChangeListener;    private int textViewPaddingLeft = 0;    private void setText(String str) {        textView.setText(str);    }    private void setMarginLeftForTextView(int progress) {        if (seekBar != null && textView != null) {            LayoutParams layoutParams = (LayoutParams) textView.getLayoutParams();            int width = seekBar.getWidth() - seekBar.getPaddingLeft() - seekBar.getPaddingRight();            layoutParams.leftMargin = (int) (((float) progress / seekBar.getMax()) * width);            layoutParams.leftMargin += seekBar.getPaddingRight() - textView.getWidth() / 2 + textViewPaddingLeft;            setText(Integer.toString(progress));            textView.setLayoutParams(layoutParams);        }    }    public void setProgress(int process) {        if (seekBar != null) {            seekBar.setProgress(process);        }    }    public void setEnabled(boolean enabled) {        if (seekBar != null) {            seekBar.setEnabled(enabled);        }    }    public void initSeekBar() {        seekBar = (SeekBar) findViewById(R.id.seek_bar_relative_layout_seek_bar);        textView = (TextView) findViewById(R.id.seek_bar_relative_layout_text_view);        textView.setVisibility(INVISIBLE);        textViewPaddingLeft = ((LayoutParams) textView.getLayoutParams()).leftMargin;        if (seekBar != null && textView != null) {            seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {                @Override                public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {                    setMarginLeftForTextView(progress);                    if (onSeekBarChangeListener != null) {                        onSeekBarChangeListener.onProgressChanged(seekBar, progress, fromUser);                    }                }                @Override                public void onStartTrackingTouch(SeekBar seekBar) {                    if (onSeekBarChangeListener != null) {                        onSeekBarChangeListener.onStartTrackingTouch(seekBar);                    }                    textView.setVisibility(VISIBLE);                }                @Override                public void onStopTrackingTouch(SeekBar seekBar) {                    if (onSeekBarChangeListener != null) {                        onSeekBarChangeListener.onStopTrackingTouch(seekBar);                    }                    textView.setVisibility(INVISIBLE);                }            });        }    }    public void setOnSeekBarChangeListener(SeekBar.OnSeekBarChangeListener onSeekBarChangeListener) {        this.onSeekBarChangeListener = onSeekBarChangeListener;    }}

布局文件

<?xml version="1.0" encoding="utf-8"?><SeekBarRelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="44dp"    android:paddingLeft="30dp"    android:paddingRight="30dp">    <TextView        android:id="@id/seek_bar_relative_layout_describe"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginTop="17.5dp"        android:text="强度"        android:textColor="@color/#909896"        android:textSize="13sp" />    <TextView        android:id="@id/seek_bar_relative_layout_text_view"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginLeft="24dp"        android:text="0"        android:textColor="@color/#909896"        android:textSize="13sp" />    <SeekBar        android:id="@id/seek_bar_relative_layout_seek_bar"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_alignParentBottom="true"        android:layout_marginLeft="25dp"        android:background="@null"        android:max="100"        android:maxHeight="3px"        android:minHeight="3px"        android:progress="100"        android:progressDrawable="@drawable/beauty_face_seek_bar"        android:splitTrack="false"        android:thumb="@drawable/beauty_thumb" />SeekBarRelativeLayout>

实例化后,调用initSeekBar();进行初始化

github 源码:

https://github.com/shangriDong/SeekBar.git

更多相关文章

  1. 【Unity和Android相互调用】AndroidJavaProxy的使用(以C#为主导)
  2. Android搜索控件的基本使用方法
  3. android静默安装探讨(申请加精)
  4. Android(安卓)中的 Service 全面总结
  5. Android(安卓)View 的刷新机制
  6. Android(安卓)Binder概述
  7. 基于Qt for Android联想到调用Android(安卓)API
  8. Android是否可以实现静默安装模式
  9. 源码解析Android中View的layout布局过程

随机推荐

  1. Android(安卓)Lint
  2. android oreo_如何限制Android(安卓)Oreo
  3. android 打开文件
  4. Android(安卓)一个apk多个入口
  5. 2011.07.08(2)——— android 背景模糊
  6. android AnimationSet
  7. android打开前置摄像头和后置摄像头
  8. Android(安卓)类菜单栏 以及 透明居中排
  9. Android的动画配置xml文件
  10. android tween动画