96 lines
3.7 KiB
Java
Executable File
96 lines
3.7 KiB
Java
Executable File
// Copyright 2013 The Chromium Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
package org.chromium.ui;
|
|
|
|
import android.content.Context;
|
|
import android.graphics.drawable.GradientDrawable;
|
|
import android.graphics.drawable.GradientDrawable.Orientation;
|
|
import android.os.Build;
|
|
import android.view.View;
|
|
import android.widget.SeekBar;
|
|
import android.widget.SeekBar.OnSeekBarChangeListener;
|
|
import android.widget.TextView;
|
|
|
|
import org.chromium.base.ApiCompatibilityUtils;
|
|
|
|
/**
|
|
* Encapsulates a single gradient view of the HSV color display, including its label, gradient
|
|
* view and seek bar.
|
|
*
|
|
* Mirrors a "color_picker_advanced_component" layout.
|
|
*/
|
|
public class ColorPickerAdvancedComponent {
|
|
// The view that displays the gradient.
|
|
private final View mGradientView;
|
|
// The seek bar that allows the user to change the value of this component.
|
|
private final SeekBar mSeekBar;
|
|
// The set of colors to interpolate the gradient through.
|
|
private int[] mGradientColors;
|
|
// The Drawable that represents the gradient.
|
|
private GradientDrawable mGradientDrawable;
|
|
// The text label for the component.
|
|
private final TextView mText;
|
|
|
|
/**
|
|
* Initializes the views.
|
|
*
|
|
* @param rootView View that contains all the content, such as the label, gradient view, etc.
|
|
* @param textResourceId The resource ID of the text to show on the label.
|
|
* @param seekBarMax The range of the seek bar.
|
|
* @param seekBarListener The listener for when the seek bar value changes.
|
|
*/
|
|
ColorPickerAdvancedComponent(final View rootView,
|
|
final int textResourceId,
|
|
final int seekBarMax,
|
|
final OnSeekBarChangeListener seekBarListener) {
|
|
mGradientView = rootView.findViewById(R.id.gradient);
|
|
mText = (TextView) rootView.findViewById(R.id.text);
|
|
mText.setText(textResourceId);
|
|
mGradientDrawable = new GradientDrawable(GradientDrawable.Orientation.LEFT_RIGHT, null);
|
|
mSeekBar = (SeekBar) rootView.findViewById(R.id.seek_bar);
|
|
mSeekBar.setOnSeekBarChangeListener(seekBarListener);
|
|
mSeekBar.setMax(seekBarMax);
|
|
// Setting the thumb offset means the seek bar thumb can move all the way to each end
|
|
// of the gradient view.
|
|
Context context = rootView.getContext();
|
|
int offset = context.getResources()
|
|
.getDrawable(R.drawable.color_picker_advanced_select_handle)
|
|
.getIntrinsicWidth();
|
|
mSeekBar.setThumbOffset(offset / 2);
|
|
}
|
|
|
|
/**
|
|
* @return The value represented by this component, maintained by the seek bar progress.
|
|
*/
|
|
public float getValue() {
|
|
return mSeekBar.getProgress();
|
|
}
|
|
|
|
/**
|
|
* Sets the value of the component (by setting the seek bar value).
|
|
*
|
|
* @param newValue The value to give the component.
|
|
*/
|
|
public void setValue(float newValue) {
|
|
mSeekBar.setProgress((int) newValue);
|
|
}
|
|
|
|
/**
|
|
* Sets the colors for the gradient view to interpolate through.
|
|
*
|
|
* @param newColors The set of colors representing the interpolation points for the gradient.
|
|
*/
|
|
public void setGradientColors(int[] newColors) {
|
|
mGradientColors = newColors.clone();
|
|
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
|
|
Orientation currentOrientation = Orientation.LEFT_RIGHT;
|
|
mGradientDrawable = new GradientDrawable(currentOrientation, mGradientColors);
|
|
} else {
|
|
mGradientDrawable.setColors(mGradientColors);
|
|
}
|
|
ApiCompatibilityUtils.setBackgroundForView(mGradientView, mGradientDrawable);
|
|
}
|
|
}
|