Android Open Source - wally Color Picker Preference






From Project

Back to project page wally.

License

The source code is released under:

Apache License

If you think the Android project wally listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package net.margaritov.preference.colorpicker.preference;
// w w  w.  j ava  2s. co  m
import android.content.Context;
import android.content.res.TypedArray;
import android.os.Parcel;
import android.os.Parcelable;
import android.preference.DialogPreference;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.widget.LinearLayout;

import com.musenkishi.wally.R;

import net.margaritov.preference.colorpicker.view.ColorPanelView;
import net.margaritov.preference.colorpicker.view.ColorPickerView;

public class ColorPickerPreference extends DialogPreference implements ColorPickerView.OnColorChangedListener{


    private ColorPickerView colorPickerView;
    private ColorPanelView oldColorView;
    private ColorPanelView newColorView;

    private int color;

    private boolean alphaChannelVisible = false;
    private String alphaChannelText = null;
    private boolean showDialogTitle = false;
    private boolean showPreviewSelectedColorInList = true;
    private int colorPickerSliderColor = -1;
    private int colorPickerBorderColor = -1;


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

    public ColorPickerPreference(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init(attrs);

    }


    private void init(AttributeSet attrs) {
        TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.ColorPickerPreference);

        showDialogTitle = a.getBoolean(R.styleable.ColorPickerPreference_showDialogTitle, false);
        showPreviewSelectedColorInList = a.getBoolean(R.styleable.ColorPickerPreference_showSelectedColorInList, true);

        a.recycle();
        a = getContext().obtainStyledAttributes(attrs, R.styleable.ColorPickerView);

        alphaChannelVisible = a.getBoolean(R.styleable.ColorPickerView_alphaChannelVisible, false);
        alphaChannelText = a.getString(R.styleable.ColorPickerView_alphaChannelText);
        colorPickerSliderColor = a.getColor(R.styleable.ColorPickerView_colorPickerSliderColor, -1);
        colorPickerBorderColor = a.getColor(R.styleable.ColorPickerView_colorPickerBorderColor, -1);

        a.recycle();

        if(showPreviewSelectedColorInList) {
            setWidgetLayoutResource(R.layout.preference_preview_layout);
        }

        if(!showDialogTitle) {
            setDialogTitle(null);
        }

        setDialogLayoutResource(R.layout.view_color_picker_dialog);

        setPositiveButtonText(android.R.string.ok);
        setNegativeButtonText(android.R.string.cancel);

        setPersistent(true);
    }

    @Override
    protected Parcelable onSaveInstanceState() {
        final Parcelable superState = super.onSaveInstanceState();

        // Create instance of custom BaseSavedState
        final SavedState myState = new SavedState(superState);
        // Set the state's value with the class member that holds current setting value


        if(getDialog() != null && colorPickerView != null) {
            myState.currentColor = colorPickerView.getColor();
        }
        else {
            myState.currentColor = 0;
        }

        return myState;
    }

    @Override
    protected void onRestoreInstanceState(Parcelable state) {
        // Check whether we saved the state in onSaveInstanceState
        if (state == null || !state.getClass().equals(SavedState.class)) {
            // Didn't save the state, so call superclass
            super.onRestoreInstanceState(state);
            return;
        }

        // Cast state to custom BaseSavedState and pass to superclass
        SavedState myState = (SavedState) state;
        super.onRestoreInstanceState(myState.getSuperState());


        // Set this Preference's widget to reflect the restored state
        if(getDialog() != null && colorPickerView != null) {
            Log.d("mColorPicker", "Restoring color!");
            colorPickerView.setColor(myState.currentColor, true);
        }



    }

    @Override
    protected void onBindView(View view) {
        super.onBindView(view);

        ColorPanelView preview = (ColorPanelView) view.findViewById(R.id.preference_preview_color_panel);

        if(preview != null) {
            preview.setColor(color);
        }

    }

    @Override
    protected void onBindDialogView(View layout) {
        super.onBindDialogView(layout);

        boolean isLandscapeLayout = false;

        colorPickerView = (ColorPickerView) layout.findViewById(R.id.color_picker_view);

        colorPickerView = (ColorPickerView) layout
                .findViewById(R.id.color_picker_view);
        oldColorView = (ColorPanelView) layout.findViewById(R.id.color_panel_old);
        newColorView = (ColorPanelView) layout.findViewById(R.id.color_panel_new);

        ((LinearLayout) oldColorView.getParent()).setPadding(Math
                .round(colorPickerView.getDrawingOffset()), 0, Math
                .round(colorPickerView.getDrawingOffset()), 0);

        colorPickerView.setAlphaSliderVisible(alphaChannelVisible);
        colorPickerView.setAlphaSliderText(alphaChannelText);
        colorPickerView.setSliderTrackerColor(colorPickerSliderColor);

        if(colorPickerSliderColor != -1) {
            colorPickerView.setSliderTrackerColor(colorPickerSliderColor);
        }

        if(colorPickerBorderColor != -1) {
            colorPickerView.setBorderColor(colorPickerBorderColor);
        }


        colorPickerView.setOnColorChangedListener(this);

        //Log.d("mColorPicker", "setting initial color!");
        oldColorView.setColor(color);
        colorPickerView.setColor(color, true);
    }


    @Override
    protected void onDialogClosed(boolean positiveResult) {
        if(positiveResult) {
            color = colorPickerView.getColor();
            persistInt(color);

            notifyChanged();

        }
    }

    @Override
    protected void onSetInitialValue(boolean restorePersistedValue, Object defaultValue) {
        if(restorePersistedValue) {
            color = getPersistedInt(0xFF000000);
            //Log.d("mColorPicker", "Load saved color: " + color);
        }
        else {
            color = (Integer)defaultValue;
            persistInt(color);
        }
    }

    @Override
    protected Object onGetDefaultValue(TypedArray a, int index) {
        return a.getInteger(index, 0xFF000000);
    }


    @Override
    public void onColorChanged(int newColor) {
        newColorView.setColor(newColor);
    }



    private static class SavedState extends BaseSavedState {
        // Member that holds the setting's value
        int currentColor;

        public SavedState(Parcelable superState) {
            super(superState);
        }

        public SavedState(Parcel source) {
            super(source);
            // Get the current preference's value
            currentColor = source.readInt();
        }

        @Override
        public void writeToParcel(Parcel dest, int flags) {
            super.writeToParcel(dest, flags);
            // Write the preference's value
            dest.writeInt(currentColor);
        }

        // Standard creator object using an instance of this class
        public static final Creator<SavedState> CREATOR =
                new Creator<SavedState>() {

                    public SavedState createFromParcel(Parcel in) {
                        return new SavedState(in);
                    }

                    public SavedState[] newArray(int size) {
                        return new SavedState[size];
                    }
                };
    }

}




Java Source Code List

com.musenkishi.wally.activities.ImageDetailsActivity.java
com.musenkishi.wally.activities.MainActivity.java
com.musenkishi.wally.adapters.RecyclerImagesAdapter.java
com.musenkishi.wally.adapters.RecyclerSavedImagesAdapter.java
com.musenkishi.wally.adapters.SmartFragmentPagerAdapter.java
com.musenkishi.wally.adapters.SmartFragmentStatePagerAdapter.java
com.musenkishi.wally.anim.BaseItemAnimator.java
com.musenkishi.wally.anim.ScaleInOutItemAnimator.java
com.musenkishi.wally.anim.interpolator.EaseInOutBezierInterpolator.java
com.musenkishi.wally.anim.interpolator.FastOutLinearInInterpolator.java
com.musenkishi.wally.anim.interpolator.FastOutSlowInInterpolator.java
com.musenkishi.wally.anim.interpolator.LinearOutSlowInInterpolator.java
com.musenkishi.wally.base.BaseActivity.java
com.musenkishi.wally.base.BaseFragment.java
com.musenkishi.wally.base.GridFragment.java
com.musenkishi.wally.base.WallyApplication.java
com.musenkishi.wally.dataprovider.DataProvider.java
com.musenkishi.wally.dataprovider.FileManager.java
com.musenkishi.wally.dataprovider.NetworkDataProvider.java
com.musenkishi.wally.dataprovider.SharedPreferencesDataProvider.java
com.musenkishi.wally.dataprovider.models.DataProviderError.java
com.musenkishi.wally.dataprovider.models.SaveImageRequest.java
com.musenkishi.wally.dataprovider.okhttp.OkHttpStreamFetcher.java
com.musenkishi.wally.dataprovider.okhttp.OkHttpUrlLoader.java
com.musenkishi.wally.dataprovider.util.Parser.java
com.musenkishi.wally.fragments.CustomResolutionDialogFragment.java
com.musenkishi.wally.fragments.FilterDialogFragment.java
com.musenkishi.wally.fragments.ImageZoomFragment.java
com.musenkishi.wally.fragments.LatestFragment.java
com.musenkishi.wally.fragments.MaterialDialogFragment.java
com.musenkishi.wally.fragments.RandomImagesFragment.java
com.musenkishi.wally.fragments.SavedImagesFragment.java
com.musenkishi.wally.fragments.SearchFragment.java
com.musenkishi.wally.fragments.ToplistFragment.java
com.musenkishi.wally.models.Author.java
com.musenkishi.wally.models.ExceptionReporter.java
com.musenkishi.wally.models.Filter.java
com.musenkishi.wally.models.ImagePage.java
com.musenkishi.wally.models.Image.java
com.musenkishi.wally.models.ListFilterGroup.java
com.musenkishi.wally.models.Rating.java
com.musenkishi.wally.models.SavedImageData.java
com.musenkishi.wally.models.Size.java
com.musenkishi.wally.models.Tag.java
com.musenkishi.wally.models.filters.FilterAspectRatioKeys.java
com.musenkishi.wally.models.filters.FilterBoardsKeys.java
com.musenkishi.wally.models.filters.FilterBoards.java
com.musenkishi.wally.models.filters.FilterGroup.java
com.musenkishi.wally.models.filters.FilterGroupsStructure.java
com.musenkishi.wally.models.filters.FilterPurityKeys.java
com.musenkishi.wally.models.filters.FilterPurity.java
com.musenkishi.wally.models.filters.FilterResOptKeys.java
com.musenkishi.wally.models.filters.FilterResOpt.java
com.musenkishi.wally.models.filters.FilterResolutionKeys.java
com.musenkishi.wally.models.filters.FilterTimeSpanKeys.java
com.musenkishi.wally.muzei.WallyArtSource.java
com.musenkishi.wally.notification.NotificationProvider.java
com.musenkishi.wally.observers.FileChangeReceiver.java
com.musenkishi.wally.observers.FiltersChangeReceiver.java
com.musenkishi.wally.util.Blur.java
com.musenkishi.wally.util.PaletteLoader.java
com.musenkishi.wally.util.PaletteRequest.java
com.musenkishi.wally.util.SparseBooleanArrayParcelable.java
com.musenkishi.wally.util.TextClickableSpan.java
com.musenkishi.wally.util.TextLinkBuilder.java
com.musenkishi.wally.util.TypefaceSpan.java
com.musenkishi.wally.views.AutoGridView.java
com.musenkishi.wally.views.GridRecyclerView.java
com.musenkishi.wally.views.ObservableScrollView.java
com.musenkishi.wally.views.TabBarView.java
com.musenkishi.wally.views.TabView.java
com.musenkishi.wally.views.swipeclearlayout.SwipeClearLayout.java
net.margaritov.preference.colorpicker.dialog.ColorPickerDialogFragment.java
net.margaritov.preference.colorpicker.drawable.AlphaPatternDrawable.java
net.margaritov.preference.colorpicker.preference.ColorPickerPreference.java
net.margaritov.preference.colorpicker.view.ColorPanelView.java
net.margaritov.preference.colorpicker.view.ColorPickerView.java
nl.codesoup.cubicbezier.CubicBezierInterpolator.java