package com.cpm.lorealbaMabeline.blurlockview;

import android.animation.ObjectAnimator;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.FrameLayout;

import com.cpm.lorealbaMabeline.R;


/**
 * Created by Weiping on 2016/3/17.
 */
public class Dot extends FrameLayout {

    private View selected;
    private View unselected;

    private ObjectAnimator selectedAnimator;
    private ObjectAnimator unselectedAnimator;

    private boolean isSelected = false;

    public Dot(Context context) {
        this(context, null);
    }

    public Dot(Context context, AttributeSet attrs) {
        super(context, attrs);

        LayoutInflater.from(context).inflate(R.layout.dot_view, this, true);

        selected = findViewById(R.id.selected);
        unselected = findViewById(R.id.unselected);

        clear();
    }

    /**
     * Set this dot to selected or not.
     *
     * @param isSelected Selected or not.
     */
    public void setSelected(boolean isSelected) {
        if (!(this.isSelected ^ isSelected)) return;
        this.isSelected = isSelected;
        if (isSelected) {
            // change to selected
            selected.setAlpha(0);
            unselected.setAlpha(1);
            if (selectedAnimator != null) selectedAnimator.cancel();
            if (unselectedAnimator != null) unselectedAnimator.cancel();

            selectedAnimator = ObjectAnimator.ofFloat(selected, "alpha", 0f, 1f);
            selectedAnimator.setDuration(300);
            selectedAnimator.start();

            unselectedAnimator = ObjectAnimator.ofFloat(unselected, "alpha", 1f, 0f);
            unselectedAnimator.setDuration(300);
            unselectedAnimator.start();
        } else {
            // change to unselected
            selected.setAlpha(1);
            unselected.setAlpha(0);
            if (selectedAnimator != null) selectedAnimator.cancel();
            if (unselectedAnimator != null) unselectedAnimator.cancel();

            selectedAnimator = ObjectAnimator.ofFloat(selected, "alpha", 1f, 0f);
            selectedAnimator.setDuration(300);
            selectedAnimator.start();

            unselectedAnimator = ObjectAnimator.ofFloat(unselected, "alpha", 0f, 1f);
            unselectedAnimator.setDuration(300);
            unselectedAnimator.start();
        }
    }

    /**
     * Clear the dot.
     */
    public void clear() {
        selected.setAlpha(0);
        unselected.setAlpha(1);
    }
}
