diff --git a/README.md b/README.md index 3a2aac1..087047d 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,93 @@ # WaveformSeekBar SeekBar variant that shows waveform data + +![WaveformSeekBar](https://github.com/alexei-frolo/WaveformSeekBar/blob/master/media/src/waveform_seek_bar.png) + +## Getting started + +### Setting up the dependency + +First of all, include the library in your project. +In Gradle, this looks like: + +```groovy +implementation 'com.github.alexei-frolo:WaveformSeekBar:1.0' +``` + +### WaveformSeekBar example + +This section explains how to use **WaveformSeekBar**. + +First, add the view to xml layout: + +```xml +... + + + +... + +``` + +Then you can set up waveform data and listen to progress changes as shown below: + +```java +... +@Override +protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_waveformseekbar_example); + + final WaveformSeekBar seekBar = findViewById(R.id.waveform_seek_bar); + seekBar.setOnSeekBarChangeListener(new WaveformSeekBar.OnSeekBarChangeListener() { + @Override + public void onProgressInPercentageChanged(WaveformSeekBar seekBar, float percent, boolean fromUser) { + + } + + @Override + public void onStartTrackingTouch(WaveformSeekBar seekBar) { + + } + + @Override + public void onStopTrackingTouch(WaveformSeekBar seekBar) { + Toast.makeText( + WaveformSeekBarExampleActivity.this, + "Tracked: percent=" + seekBar.getProgressPercent(), + Toast.LENGTH_SHORT).show(); + } + }); + seekBar.setWaveform(createWaveform(), true); + + findViewById(R.id.btn_regenerate).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + seekBar.setWaveform(createWaveform(), true); + } + }); +} + +private int[] createWaveform() { + final Random random = new Random(System.currentTimeMillis()); + + final int length = 50 + random.nextInt(50); + final int[] values = new int[length]; + int maxValue = 0; + + for (int i = 0; i < length; i++) { + final int newValue = 5 + random.nextInt(50); + if (newValue > maxValue) { + maxValue = newValue; + } + values[i] = newValue; + } + return values; +} +... +```