Skip to content

Commit

Permalink
#14 Add:
Browse files Browse the repository at this point in the history
colorSeekBar.setAlphaMaxPosition(int max);
colorSeekBar.setAlphaMinPosition(int min);
  • Loading branch information
rtugeek committed Jun 3, 2017
1 parent 0d8368f commit 3263911
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 13 deletions.
2 changes: 1 addition & 1 deletion .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Expand Up @@ -38,6 +38,8 @@ protected void onCreate(Bundle savedInstanceState) {
// mColorSeekBar.setBarHeight(5);
// mColorSeekBar.setColor(0xffffff);
// mColorSeekBar.setColorBarPosition(30);
// mColorSeekBar.setAlphaMaxPosition(250);
// mColorSeekBar.setAlphaMinPosition(70);
mColorSeekBar.setMaxPosition(100);
mColorSeekBar.setShowAlphaBar(true);
mColorSeekBar.setThumbHeight(30);
Expand All @@ -49,7 +51,6 @@ public void done() {
Log.i(TAG,"done!");
}
});

mColorSeekBar.setOnColorChangeListener(new ColorSeekBar.OnColorChangeListener() {
@Override
public void onColorChangeListener(int colorBarPosition, int alphaBarPosition, int color) {
Expand Down
2 changes: 1 addition & 1 deletion colorseekbar/build.gradle
Expand Up @@ -7,7 +7,7 @@ android {
minSdkVersion 9
targetSdkVersion 23
versionCode 3
versionName "1.4.2"
versionName "1.4.3"
}
buildTypes {
release {
Expand Down
Expand Up @@ -53,6 +53,8 @@ public class ColorSeekBar extends View {
private int mPaddingSize;
private int mViewWidth;
private int mViewHeight;
private int mAlphaMinPosition = 0;
private int mAlphaMaxPosition = 255;
private List<Integer> mColors = new ArrayList<>();
private int mColorsToInvoke = -1;
private boolean mInit = false;
Expand Down Expand Up @@ -127,7 +129,7 @@ protected void applyStyle(Context context, AttributeSet attrs, int defStyleAttr,
int colorsId = a.getResourceId(R.styleable.ColorSeekBar_colorSeeds, 0);
mMaxPosition = a.getInteger(R.styleable.ColorSeekBar_maxPosition, 100);
mColorBarPosition = a.getInteger(R.styleable.ColorSeekBar_colorBarPosition, 0);
mAlphaBarPosition = a.getInteger(R.styleable.ColorSeekBar_alphaBarPosition, 0);
mAlphaBarPosition = a.getInteger(R.styleable.ColorSeekBar_alphaBarPosition, mAlphaMinPosition);
mIsVertical = a.getBoolean(R.styleable.ColorSeekBar_isVertical, false);
mIsShowAlphaBar = a.getBoolean(R.styleable.ColorSeekBar_showAlphaBar, false);
mBackgroundColor = a.getColor(R.styleable.ColorSeekBar_bgColor, Color.TRANSPARENT);
Expand Down Expand Up @@ -231,9 +233,10 @@ protected void onDraw(Canvas canvas) {
Paint colorPaint = new Paint();
colorPaint.setAntiAlias(true);
int color = getColor(false);
int colorToTransparent = Color.argb(0, Color.red(color), Color.green(color), Color.blue(color));
int colorStartTransparent = Color.argb(mAlphaMaxPosition, Color.red(color), Color.green(color), Color.blue(color));
int colorEndTransparent = Color.argb(mAlphaMinPosition, Color.red(color), Color.green(color), Color.blue(color));
colorPaint.setColor(color);
int[] toAlpha = new int[]{color, colorToTransparent};
int[] toAlpha = new int[]{colorStartTransparent, colorEndTransparent};
//clear
canvas.drawBitmap(mTransparentBitmap, 0, 0, null);

Expand All @@ -256,7 +259,6 @@ protected void onDraw(Canvas canvas) {
//init rect
int top = (int) (mThumbHeight + mThumbRadius + mBarHeight + mBarMargin);
mAlphaRect = new Rect(realLeft, top, realRight, top + mBarHeight);

//draw alpha bar
Paint alphaBarPaint = new Paint();
alphaBarPaint.setAntiAlias(true);
Expand All @@ -265,7 +267,7 @@ protected void onDraw(Canvas canvas) {
canvas.drawRect(mAlphaRect, alphaBarPaint);

//draw alpha bar thumb
float alphaPosition = (float) mAlphaBarPosition / 255 * mBarWidth;
float alphaPosition = (float) (mAlphaBarPosition - mAlphaMinPosition) / (mAlphaMaxPosition - mAlphaMinPosition) * mBarWidth;
float alphaThumbX = alphaPosition + realLeft;
float alphaThumbY = mAlphaRect.top + mAlphaRect.height() / 2;
canvas.drawCircle(alphaThumbX, alphaThumbY, mBarHeight / 2 + 5, colorPaint);
Expand Down Expand Up @@ -319,15 +321,16 @@ public boolean onTouchEvent(MotionEvent event) {
if (mColorBarPosition > mMaxPosition) mColorBarPosition = mMaxPosition;
} else if (mIsShowAlphaBar) {
if (mMovingAlphaBar) {
float value = (x - realLeft) / mBarWidth * 255;
float value = (x - realLeft ) / (float)mBarWidth * (mAlphaMaxPosition - mAlphaMinPosition) + mAlphaMinPosition;
mAlphaBarPosition = (int) value;
if (mAlphaBarPosition < 0) mAlphaBarPosition = 0;
if (mAlphaBarPosition > 255) mAlphaBarPosition = 255;
if (mAlphaBarPosition < mAlphaMinPosition) mAlphaBarPosition = mAlphaMinPosition;
else if (mAlphaBarPosition > mAlphaMaxPosition) mAlphaBarPosition = mAlphaMaxPosition;
setAlphaValue();
}
}
if (mOnColorChangeLister != null && (mMovingAlphaBar || mMovingColorBar))
if (mOnColorChangeLister != null && (mMovingAlphaBar || mMovingColorBar)){
mOnColorChangeLister.onColorChangeListener(mColorBarPosition, mAlphaBarPosition, getColor());
}
invalidate();
break;
case MotionEvent.ACTION_UP:
Expand All @@ -338,6 +341,49 @@ public boolean onTouchEvent(MotionEvent event) {
return true;
}

/***
*
* @param alphaMaxPosition <= 255 && > alphaMinPosition
*/
public void setAlphaMaxPosition(int alphaMaxPosition) {
mAlphaMaxPosition = alphaMaxPosition;
if(mAlphaMaxPosition > 255){
mAlphaMaxPosition = 255;
}else if(mAlphaMaxPosition <= mAlphaMinPosition){
mAlphaMaxPosition = mAlphaMinPosition+1;
}

if(mAlphaBarPosition > mAlphaMinPosition){
mAlphaBarPosition = mAlphaMaxPosition;
}
invalidate();
}

public int getAlphaMaxPosition() {
return mAlphaMaxPosition;
}

/***
*
* @param alphaMinPosition >=0 && < alphaMaxPosition
*/
public void setAlphaMinPosition(int alphaMinPosition) {
this.mAlphaMinPosition = alphaMinPosition;
if(mAlphaMinPosition >= mAlphaMaxPosition){
mAlphaMinPosition = mAlphaMaxPosition - 1;
}else if(mAlphaMinPosition < 0){
mAlphaMinPosition = 0;
}

if(mAlphaBarPosition < mAlphaMinPosition){
mAlphaBarPosition = mAlphaMinPosition;
}
invalidate();
}

public int getAlphaMinPosition() {
return mAlphaMinPosition;
}

/**
* @param r
Expand Down Expand Up @@ -581,7 +627,6 @@ public void setBarMarginPx(int mBarMargin) {

/**
* Set the value of color bar, if out of bounds , it will be 0 or maxValue;
*
* @param value
*/
public void setColorBarPosition(int value) {
Expand Down

0 comments on commit 3263911

Please sign in to comment.