Code Monkey home page Code Monkey logo

crystal-range-seekbar's Introduction

Download Android Arsenal Coding Signals

Crystal Range Seekbar

An extended version of seekbar and range seekbar with basic and advanced customization.

alt tag

Usage

Add a dependency to your build.gradle:

dependencies {
    compile 'com.crystal:crystalrangeseekbar:1.1.3'
}

Features

  • Customize with xml using custom handy attributes.
  • Customize in your activity, fragment or dialog.
  • Styling with your own widget.
  • Creating newly widget from activity, fragment or dialog.

Sample usage - Seekbar

alt tag

Default style using xml.

<com.crystal.crystalrangeseekbar.widgets.CrystalSeekbar
    android:id="@+id/rangeSeekbar1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

alt tag

Styling with bubble animation using custom widget BubbleThumbSeekbar.

<com.crystal.crystalrangeseekbar.widgets.BubbleThumbSeekbar
    android:id="@+id/rangeSeekbar2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:corner_radius="10"
    app:min_value="50"
    app:max_value="150"
    app:bar_color="#C69E89"
    app:bar_highlight_color="#A54B17"
    app:left_thumb_color="#775E4F"
    app:left_thumb_color_pressed="#4C2D1A"
    app:data_type="_integer"/>

alt tag

Styling with bubble animation with drawable using custom widget BubbleThumbSeekbar.

<com.crystal.crystalrangeseekbar.widgets.BubbleThumbSeekbar
    android:id="@+id/rangeSeekbar3"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:corner_radius="10"
    app:min_value="0"
    app:max_value="100"
    app:steps="5"
    app:bar_color="#F7BB88"
    app:bar_highlight_color="#E07416"
    app:left_thumb_image="@drawable/thumb"
    app:left_thumb_image_pressed="@drawable/thumb_pressed"
    app:data_type="_integer"/>

alt tag

Right to Left position (rtl)

<com.crystal.crystalrangeseekbar.widgets.CrystalSeekbar
    android:id="@+id/rangeSeekbar7"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:position="right"/>

alt tag

Right to Left position with drawable position update from code (rtl)

<com.crystal.crystalrangeseekbar.widgets.CrystalSeekbar
    android:id="@+id/rangeSeekbar8"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:min_value="100"
    app:max_value="200"
    app:steps="5"
    app:bar_color="#F7BB88"
    app:bar_highlight_color="#E07416"
    app:left_thumb_image="@drawable/thumb"
    app:left_thumb_image_pressed="@drawable/thumb_pressed"
    app:data_type="_integer"/>
// get seekbar from view
final CrystalSeekbar rangeSeekbar = (CrystalSeekbar) rootView.findViewById(R.id.rangeSeekbar8);

// change position left to right
rangeSeekbar.setPosition(CrystalSeekbar.Position.RIGHT).apply();

alt tag

Create new seekbar from code and add to any view.

// get seekbar from view
final CrystalSeekbar seekbar = new CrystalSeekbar(getActivity());

// get min and max text view
final TextView tvMin = (TextView) rootView.findViewById(R.id.textMin5);
final TextView tvMax = (TextView) rootView.findViewById(R.id.textMax5);

// set listener
seekbar.setOnSeekbarChangeListener(new OnSeekbarChangeListener() {
    @Override
    public void valueChanged(Number minValue) {
        tvMin.setText(String.valueOf(minValue));
    }
});

// set final value listener
seekbar.setOnSeekbarFinalValueListener(new OnSeekbarFinalValueListener() {
    @Override
    public void finalValue(Number value) {
        Log.d("CRS=>", String.valueOf(value));
    }
});
        
// get range seekbar container
RelativeLayout container = (RelativeLayout) rootView.findViewById(R.id.contRangeSeekbar5);
container.addView(rangeSeekbar);

alt tag

Styling with create custom widget

public class MySeekbar extends CrystalSeekbar {

    public MySeekbar(Context context) {
        super(context);
    }

    public MySeekbar(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public MySeekbar(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    protected float getMinValue(TypedArray typedArray) {
        return 5f;
    }

    @Override
    protected float getMaxValue(TypedArray typedArray) {
        return 90f;
    }

    @Override
    protected float getMinStartValue(TypedArray typedArray) {
        return 20f;
    }

    @Override
    protected int getBarColor(TypedArray typedArray) {
        return Color.parseColor("#A0E3F7");
    }

    @Override
    protected int getBarHighlightColor(TypedArray typedArray) {
        return Color.parseColor("#53C9ED");
    }

    @Override
    protected int getLeftThumbColor(TypedArray typedArray) {
        return Color.parseColor("#058EB7");
    }

    @Override
    protected int getLeftThumbColorPressed(TypedArray typedArray) {
        return Color.parseColor("#046887");
    }

    @Override
    protected Drawable getLeftDrawable(TypedArray typedArray) {
        return ContextCompat.getDrawable(getContext(), R.drawable.thumb);
    }

    @Override
    protected Drawable getLeftDrawablePressed(TypedArray typedArray) {
        return ContextCompat.getDrawable(getContext(), R.drawable.thumb_pressed);
    }
}

Sample usage - Range Seekbar

alt tag

Default style using xml.

<com.crystal.crystalrangeseekbar.widgets.CrystalRangeSeekbar
    android:id="@+id/rangeSeekbar1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>
// get seekbar from view
final CrystalRangeSeekbar rangeSeekbar = (CrystalRangeSeekbar) rootView.findViewById(R.id.rangeSeekbar1);

// get min and max text view
final TextView tvMin = (TextView) rootView.findViewById(R.id.textMin1);
final TextView tvMax = (TextView) rootView.findViewById(R.id.textMax1);

// set listener
rangeSeekbar.setOnRangeSeekbarChangeListener(new OnRangeSeekbarChangeListener() {
    @Override
    public void valueChanged(Number minValue, Number maxValue) {
        tvMin.setText(String.valueOf(minValue));
        tvMax.setText(String.valueOf(maxValue));
    }
});

// set final value listener
rangeSeekbar.setOnRangeSeekbarFinalValueListener(new OnRangeSeekbarFinalValueListener() {
    @Override
    public void finalValue(Number minValue, Number maxValue) {
        Log.d("CRS=>", String.valueOf(minValue) + " : " + String.valueOf(maxValue));
    }
});

alt tag

Styling with bubble animation with drawable using custom widget BubbleThumbRangeSeekbar.

<com.crystal.crystalrangeseekbar.widgets.BubbleThumbRangeSeekbar
    android:id="@+id/rangeSeekbar5"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:corner_radius="10"
    app:min_value="0"
    app:max_value="100"
    app:steps="5"
    app:bar_color="#F7BB88"
    app:bar_highlight_color="#E07416"
    app:left_thumb_image="@drawable/thumb"
    app:right_thumb_image="@drawable/thumb"
    app:left_thumb_image_pressed="@drawable/thumb_pressed"
    app:right_thumb_image_pressed="@drawable/thumb_pressed"
    app:data_type="_integer"/>

alt tag

Set minimum range (gap).

<com.crystal.crystalrangeseekbar.widgets.CrystalRangeSeekbar
    android:id="@+id/rangeSeekbar3"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:corner_radius="10"
    app:min_value="50"
    app:max_value="100"
    app:gap="20"
    app:bar_color="#8990C4"
    app:bar_highlight_color="#2434AD"
    app:left_thumb_color="#1A246D"
    app:right_thumb_color="#1A246D"
    app:left_thumb_color_pressed="#030B47"
    app:right_thumb_color_pressed="#030B47"
    app:data_type="_integer"/>

alt tag

Set fix range (gap).

<com.crystal.crystalrangeseekbar.widgets.CrystalRangeSeekbar
    android:id="@+id/rangeSeekbar4"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:corner_radius="10"
    app:min_value="0"
    app:max_value="100"
    app:fix_gap="30"
    app:bar_color="#EE88F7"
    app:bar_highlight_color="#D810EA"
    app:left_thumb_color="#8D0D99"
    app:right_thumb_color="#8D0D99"
    app:left_thumb_color_pressed="#56005E"
    app:right_thumb_color_pressed="#56005E"
    app:data_type="_integer"/>

Available attributes

  • corner_radius: corner radius to be used seekbar, default 0f
  • min_value: minimum value of seekbar, default 0
  • max_value: maximum value of seekbar, default 100
  • min_start_value: minimum start value must be equal or greater than min value, default min_value
  • max_start_value: maximum start value must be equal or less than max value, default max_value
  • steps: minimum steps between range, default NO_STEP -1f
  • gap: maintain minimum range between two thumbs, range must be greater >= min value && <= max value, default 0f
  • bar_height: bar height, default determined by thumb size
  • fix_gap: maintain fix range between two thumbs, range must be greater >= min value && <= max value, default NO_FIXED_GAP -1f
  • bar_color_mode color fill mode of inactive bar; can be ColorMode.SOLID or ColorMode.GRADIENT; default is ColorMode.SOLID
  • bar_color inactive bar background color, default Color.GRAY
  • bar_gradient_start inactive bar background gradient start color, default Color.GRAY
  • bar_gradient_end inactive bar background gradient end color, default Color.DKGRAY
  • bar_highlight_color_mode color fill mode of active bar; can be ColorMode.SOLID or ColorMode.GRADIENT; default is ColorMode.SOLID
  • bar_highlight_color active bar background color, default Color.BLACK
  • bar_highlight_gradient_start active bar background gradient start color, default Color.DKGRAY
  • bar_highlight_gradient_end active bar background gradient end color, default Color.BLACK
  • thumb_color default thumb color, default Color.BLACK (only CrystalSeekbar)
  • thumb_color_pressed active thumb color, default Color.DKGRAY (only CrystalSeekbar)
  • thumb_image left drawable, default null (only CrystalSeekbar)
  • thumb_image_pressed active thumb drawable, default null (only CrystalSeekbar)
  • left_thumb_color default left thumb color, default Color.BLACK (only CrystalRangeSeekbar)
  • left_thumb_color_pressed active left thumb color, default Color.DKGRAY (only CrystalRangeSeekbar)
  • left_thumb_image left thumb drawable, default null (only CrystalRangeSeekbar)
  • left_thumb_image_pressed active left thumb drawable, default null (only CrystalRangeSeekbar)
  • right_thumb_color default right thumb color, default Color.BLACK (only CrystalRangeSeekbar)
  • right_thumb_color_pressed active right thumb color, default Color.DKGRAY (only CrystalRangeSeekbar)
  • right_thumb_image right thumb drawable, default null (only CrystalRangeSeekbar)
  • right_thumb_image_pressed active right thumb drawable, default null (only CrystalRangeSeekbar)
  • position can be left or right, default left
  • data_type can be _long or _double or _integer or _float or _short or _byte, default _integer

Changelog

1.1.2 - 24-Aug-2016
  • Bug fixed when update property programmatically.
1.1.1 - 21-Aug-2016
  • Added new feature. OnRangeSeekbarFinalValueListener, OnSeekbarFinalValueListener.
1.0.1 - 9-Aug-2016
  • Bug fixed setMinStartValue and setMaxStartValue programmatically.
1.0.0 - 17-July-2016
  • Add New Project.

LICENSE

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

##Authors

crystal-range-seekbar's People

Contributors

ahmedalkhashab avatar aleksandr1592 avatar bearlysophisticated avatar braisgabin avatar fashioncj avatar hhoang avatar kirvis250 avatar olidroide avatar sousav avatar syedowaisali avatar zoltanbalint avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

crystal-range-seekbar's Issues

Setting min & max start value

When I set both the min and max start values it sets both thumbs to the lowest values that I've defined in setMaxValue() and setMinValue(). However when I set only the min start value or max start value using setMinStartValue() or setMaxStartValue() it works as expected.

Bug found in: CrystalRangeSeekbar.setMinStartValue(float)

When the range is smaller than 100, it went wrong.
Here is the reson:
when update the maxStartValue in method apply(),
// set max start value
if (maxStartValue <= minStartValue || maxStartValue <= minValue) {
maxStartValue = 0;
setNormalizedMaxValue(maxStartValue);
}
else if(maxStartValue >= maxValue){
maxStartValue = maxValue;
setMaxStartValue();
}
else{
setMaxStartValue();
}

minStartValue is not the value that set before any more. so it goes to the wrong condition.

You can reproduce the issue by:

rangeSeekbar.setMinValue(2).setMaxValue(17).setMinStartValue(4).setMaxStartValue(8).apply();

How to set setProgress for Min and Max value in progress bar?

I am using seekbar with two side thumb. I am changing min and max value and viewing result in another activity. Once I returned to that seekbar activity I want to show the last selected min and max value in seekbar. How can I achieve this one? I unable to find setProgress method for Min and Max value respectively.

Click on seekbar to change value without using thumb

Hi,

Many people start using a seekbar without using the thumb, they just click anywhere on the seekbar then move the thumb if necessary.
Currently nothing happens when I click on my crystal seekbar. Is it possible to activate the clicks on the seekbar ?

Unable to specify thumb drawable

Creating a BitmapDrawable and assigning it to a thumb via setLeftThumbDrawable() appears to have no effect. Changing the color programmatically works, but the thumb uses the default dimension and drawable.

Negative numbers crash

I have crash if my maxValue set -15 and min value set to -78.Seekbar step is 0.1.Please tell me if my fix is working.
#28 pull request.

Last version

Please update latest version here
compile 'com.crystal:crystalrangeseekbar:1.1.1'

Start Values

Hi, if I set CrystalRangeSeekbar like this:

    CrystalRangeSeekbar seekbar = new CrystalRangeSeekbar(this);
    seekbar .setDataType(CrystalRangeSeekbar.DataType.FLOAT)
            .setMinValue(5f)
            .setMaxValue(30f)
            .setSteps(0.5f)
            .setMinStartValue(18.5f)
            .setMaxStartValue(23.0f);

it gives me maxStartValue equal to minStartValue, so min and max start values are both 18.5 at the end.

thumb_image from GradientDrawable

Hi!

please add possibility to set GradientDrawable to thumb_image.
for example it is much easier to me draw thumbs as shape drawables, than draw images via gimp

CrystalRangeSeekbar not showing when surrounded by TextViews

When I use CrystalRangeSeekbar using the entire width, it shows normally. But when I try to place 2 TextViews on the left and right of the Seekbar, the Seekbar doesn't show. See code below to replicate:

<RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <TextView
                android:id="@+id/txt_min"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true"
                android:text="MIN" />

            <com.crystal.crystalrangeseekbar.widgets.CrystalRangeSeekbar
                android:id="@+id/temperature_rangeseekbar"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_toEndOf="@+id/txt_max"
                android:layout_toLeftOf="@+id/txt_min"
                android:layout_toRightOf="@+id/txt_max"
                android:layout_toStartOf="@+id/txt_min"
                app:bar_color="#000"
                app:bar_highlight_color="#2434AD"
                app:data_type="_float"
                app:left_thumb_color="#3caf9a"
                app:left_thumb_color_pressed="#349986"
                app:max_value="42.0"
                app:min_value="35.0"
                app:right_thumb_color="#c44949"
                app:right_thumb_color_pressed="#b43a3a" />

            <TextView
                android:id="@+id/txt_max"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentEnd="true"
                android:layout_alignParentRight="true"
                android:text="MÁX" />
</RelativeLayout>

I try to set shape drawable - and ap crashed!

app:left_thumb_image="@drawable/tmp"

/drawable/tmp.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <solid android:color="#bada55"/> <size android:width="20dp" android:height="20dp"/> </shape>

How i can set shape drawable and vector drawable to the thumb?

setMinStartValue and setMaxStartValue do not work properly for CrystalRangeSeekbar

I've seen this issue more than a few times, but I thought I would share my experience with it. It really doesn't seem like this methods work correctly at all, or at least the setMaxStartValue method doesn't work at all.

rsb.setMinStartValue(valOne).apply(); rsb.setMaxStartValue(valTwo).apply();

sets both cursors to min value (0, or whatever that is);

rsb.setMinStartValue(valOne).setMaxStartValue(valTwo).apply();

sets both cursors to valOne

rsb.setMaxStartValue(valTwo).setMinStartValue(valOne).apply();

sets both cursors to valOne

rsb.setMaxStartValue(valOne).setMinStartValue(valTwo).apply();

sets both cursors to valTwo

Change bar value programatically

How to change bar value programatically.. ?
Cant find the setValue method..
all i find just setMinValue, setMinStartValue & setMaxStartValue...

Show button when seekbar is released - onStopTrackingTouch ?

Hi,

I need to show a button and a textview when the seekbar is released by the user. I guess I should override the onStopTrackingTouch with a normal seekbar.
It seems that I cannot do it with the crystal-range-seekbar. So what should I do ?

Thank you,

Thumb size

Hi! Is there a way for changing the thumb size? I want it more small but layout_height dont work :/

Ty

IllegalArgumentException: Number class 'java.lang.Double' is not supported

` volumeSeekbar.setOnSeekbarChangeListener(new OnSeekbarChangeListener() {
@OverRide
public void valueChanged(Number value) {

            int volume = value.intValue();

            audioManager.setStreamVolume(AudioManager.STREAM_MUSIC,
                    (int) volume, 0);


        }
    });

`

Caused by: java.lang.IllegalArgumentException: Number class 'java.lang.Double' is not supported at com.crystal.crystalrangeseekbar.widgets.CrystalSeekbar.formatValue(CrystalSeekbar.java:712) at com.crystal.crystalrangeseekbar.widgets.CrystalSeekbar.getSelectedMinValue(CrystalSeekbar.java:369) at com.crystal.crystalrangeseekbar.widgets.CrystalSeekbar.setOnSeekbarChangeListener(CrystalSeekbar.java:269)

How to get current progress

Hi. I really need to know what is the current value outside the Listener.

from some reason seekbar.getProgress isnt exist.

tyyy

Add method for set thumbs radius

Default size of thumbs is too big (comparing with native elements). But I do not found method for changing radius and forced to override CrystalRangeSeekbar:

public class PatchedCrystalRangeSeekbar extends CrystalRangeSeekbar {
    private final int mThumbsSize = 30;

    // ... override constructors

    @Override
    protected float getThumbWidth() {
        return mThumbsSize;
    }

    @Override
    protected float getThumbHeight() {
        return mThumbsSize;
    }
}

It will be great to create method or style for changing default radius.

set limit to left and right sides

how can I set minimum value and maximum values for the start and the end of the bar, and without being able to over do it, to be fixed, something similar to the gap, but in the start and the end

CrystalRangeSeekbar

Through setGap () method is set up, have no effect Bug and there are many

Some lag in the view while seekbar change happen

Hi,
Recently implement the crystal-range-seekbar in my project inside dialog.
Now everything work fine until we move the left or right icon in order to change the value of min and max.
During the seekbar min and max change operation the seek is not smooth and some lag while moving left or right end of the seekbar.
Providing the code snippet for seekbar config

pricerangebar.setCornerRadius(10f)
.setBarColor(Color.parseColor("#93F9B5"))
.setBarHighlightColor(Color.parseColor("#16E059"))
.setMinValue(0)
.setMaxValue(10000)
.setSteps(100)
.setLeftThumbDrawable(R.mipmap.dicrease)
.setLeftThumbHighlightDrawable(R.mipmap.dicrease)
.setRightThumbDrawable(R.mipmap.increase)
.setRightThumbHighlightDrawable(R.mipmap.increase)
.setDataType(CrystalRangeSeekbar.DataType.INTEGER)
.apply();

pricerangebar.setOnRangeSeekbarChangeListener(new OnRangeSeekbarChangeListener() {
@SuppressLint("SetTextI18n")
@OverRide
public void valueChanged(Number minValue, Number maxValue) {
minproductPrice=minValue.toString();
maxproductPrice=maxValue.toString();
txt_priceminvalue.setText("From "+minValue);
txt_pricemaxvalue.setText("To "+maxValue);
}
});

Is there any more configuration or setting available with seekbar to make it smooth scroll on both left and right end
Please provide some guideline or help to resolve this problem.

Change bar size

Hi ty for this library.
I have some issues but most important is that I can't change the bar or the thumb of the seekbar.
setScrollBarSize not working and all the other options that are relevant.

Please tell me how can I change the size tyyy

corner_radius is using a float format instead of dimension

Would be nice if corner_radius would take a dp value rather than a float value.
I could submit a PR for this change, but it could break backwards compatibility?
If this is something you'd want a PR for, let me know? Otherwise feel free to close this issue.
Thanks!

Drawable xml and bar thickness

Hello!
Thanks for great job!

Is it possible to add drawable xml for thumb and bar thickness?

With it possibility it'll my favourite range bar ;)

setminStartValue not working properly

If I'm trying to use setMinStartValue(1735f).apply(); then seekbar is pointing at position 17.
Its not taking start thumb to exact that point.

Please fix this issue.

NullPointerException at using Bitmaps in thumbs

Have a code

Bitmap b = Bitmap.createBitmap(30, 30, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
Paint p = new Paint();
p.setColor(getResources().getColor(R.color.accent));
c.drawCircle(15, 15, 15, p);

bar.setLeftThumbBitmap(b);
bar.setRightThumbBitmap(b);
bar.apply();

And after try to move thumbs immediatly get exception:

java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.graphics.Bitmap.isRecycled()' on a null object reference
    at android.graphics.Canvas.throwIfCannotDraw(Canvas.java:1269)
    at android.graphics.Canvas.drawBitmap(Canvas.java:1325)
    at com.crystal.crystalrangeseekbar.widgets.CrystalRangeSeekbar.drawRightThumbWithImage(CrystalRangeSeekbar.java:653)
    at com.crystal.crystalrangeseekbar.widgets.CrystalRangeSeekbar.setupRightThumb(CrystalRangeSeekbar.java:641)
    at com.crystal.crystalrangeseekbar.widgets.CrystalRangeSeekbar.onDraw(CrystalRangeSeekbar.java:899)
    at android.view.View.draw(View.java:16178)
    at android.view.View.updateDisplayListIfDirty(View.java:15174)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3593)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3573)
    at android.view.View.updateDisplayListIfDirty(View.java:15134)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3593)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3573)
    at android.view.View.updateDisplayListIfDirty(View.java:15134)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3593)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3573)
    at android.view.View.updateDisplayListIfDirty(View.java:15134)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3593)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3573)
    at android.view.View.updateDisplayListIfDirty(View.java:15134)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3593)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3573)
    at android.view.View.updateDisplayListIfDirty(View.java:15134)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3593)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3573)
    at android.view.View.updateDisplayListIfDirty(View.java:15134)
    at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:3593)
    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3573)
    at android.view.View.updateDisplayListIfDirty(View.java:15134)
    at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:281)
    at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:287)
    at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:322)
    at android.view.ViewRootImpl.draw(ViewRootImpl.java:2615)
    at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2434)
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2067)
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107)
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
    at android.view.Choreographer.doCallbacks(Choreographer.java:670)
    at android.view.Choreographer.doFrame(Choreographer.java:606)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
    at android.os.Handler.handleCallback(Handler.java:739)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:5417)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

So I cant use custom bitmaps to thumbs (but I simply want to replace so huge f*cking thumbs, why do you not implement size changing?!, argh...).

cry

how set left and right seekbar progress ? i didn't find this method.

Seekbar gap

Seekbar doesn't keep it's gap when min and max values set programmatically. But when I set min, max values in xml it's working

Feature request: auto-attract

If used in a short range (1-10 for example), the bar should be visually discrete.
The current values are right but the cursors should be attract by the real values or it ends up with visual range but min=max.

image

padding not honored

When using a padding on CrystalRangeSeekbar, it's not honored and the visual doesn't change.

More control over steps?

Hi,
Is it possible to explicitly set the Steps?
I am doing an age range using your CrystalRangeSeekbar. My min is 18, max 100. I'd like the steps to be;
18, 20, 25, 30....[then in 5s]...95, 100.
Thanks a lot!

layout_width="wrap_content" not honored

I've 2 TextView, one before and one after the bar, the all is in a LinearLayout.
The bar is always covering the width until the end of the screen, the second TextView is never visible.

Workaround:
Depending of your layout strategy, you could achieve something by playing with the weight

        android:layout_width="0dp"
        android:layout_weight="1"

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.