效果图:
这里写图片描述

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. Android GPS学习笔记—GpsLP初始化
  2. Android UI架构(四)--SurfaceFlinger的初始化.md
  3. Android 的AT命令协议栈初始化
  4. [转]Android 应用初始化及窗体事件(按键)的分发 [此博文包含图片]
  5. Android 初始化语言(Android init Language翻译)
  6. Android多module初始化application
  7. Android Camera OMXCameraAdapter.cpp初始化分析
  8. Android GSM驱动模块(rild)详细分析(一)基本架构及初始化

随机推荐

  1. android 的相对布局的使用小记
  2. Android(安卓)中 OnTouch事件的研究
  3. android另一种访问包资源方式
  4. [入门三]Android应用开发入门五问
  5. android app的类响应式设计【半月谈投稿
  6. android 动画Animation属性大全(-)
  7. Android(安卓)4.3源码的下载和编译环境的
  8. Android(安卓)RecyclerView 实现瀑布流交
  9. Android谷歌官方的自适应TextView字体大
  10. Android(安卓)启动模拟器是出现“Failed