package com.paint.sweet.drawing.sweetview;

import android.content.Context;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewTreeObserver;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;

import com.paint.sweet.drawing.R;

public class


BottomTabScrollView extends FrameLayout {
    private ImageView ivIcon;
    private TextView tvText;
    private View ivDot; // 小黑点控件
    private boolean isSelected = false;
    private static final long ANIM_DURATION = 300;
    private int tabHeight = 60; // 兜底高度

    // 颜色资源
    private int unselectedColor;
    private int selectedColor;

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

    public BottomTabScrollView(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public BottomTabScrollView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        // 加载颜色资源
        unselectedColor = getResources().getColor(R.color.tab_unselected);
        selectedColor = getResources().getColor(R.color.tab_selected);

        // 加载布局
        LayoutInflater.from(context).inflate(R.layout.item_bottom_tab_scroll, this, true);
        ivIcon = findViewById(R.id.iv_tab_icon);
        tvText = findViewById(R.id.tv_tab_text);
        ivDot = findViewById(R.id.iv_tab_dot); // 绑定小黑点

        // 核心修改1：设置文字默认字号
        tvText.setTextSize(14);

        // 监听View高度
        getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                if (getHeight() > 0) {
                    tabHeight = getHeight();
                    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) {
                        getViewTreeObserver().removeOnGlobalLayoutListener(this);
                    } else {
                        getViewTreeObserver().removeGlobalOnLayoutListener(this);
                    }
                }
            }
        });
    }

    // 设置Tab数据（图标+文字）
    public void setDrawTabData(int iconRes, String text) {
        ivIcon.setImageResource(iconRes);
        tvText.setText(text);
        // 初始化为未选中颜色
        ivIcon.setColorFilter(unselectedColor);
        tvText.setTextColor(unselectedColor);
        ivDot.setVisibility(View.GONE); // 初始隐藏小黑点

        // 核心修改2：再次确认文字字号
        tvText.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14);
    }

    // 切换选中状态（同步颜色+小黑点）
    public void setTabSelected(boolean selected) {
        if (isSelected == selected) return;
        isSelected = selected;

        if (selected) {
            // 选中：图标上移隐藏+文字下移显示，同时切换为选中颜色+显示小黑点
            ivIcon.setColorFilter(selectedColor); // 图标选中颜色
            ivIcon.animate()
                    .translationY(-tabHeight)
                    .alpha(0f)
                    .setDuration(ANIM_DURATION)
                    .start();

            tvText.setTextColor(selectedColor); // 文字选中颜色
            // 核心修改3：选中时字号再大2个sp
            tvText.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16);
            tvText.setVisibility(View.VISIBLE);
            tvText.animate()
                    .translationY(0)
                    .alpha(1f)
                    .setDuration(ANIM_DURATION)
                    .start();

            // 显示小黑点（带动画）
            ivDot.setVisibility(View.VISIBLE);
            ivDot.setAlpha(0f);
            ivDot.animate()
                    .alpha(1f)
                    .setDuration(ANIM_DURATION)
                    .start();

        } else {
            // 未选中：文字上移隐藏+图标下移显示，切换为未选中颜色+隐藏小黑点
            tvText.setTextColor(unselectedColor); // 文字未选中颜色
            // 核心修改4：未选中时还原字号
            tvText.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14);
            tvText.animate()
                    .translationY(-tabHeight)
                    .alpha(0f)
                    .setDuration(ANIM_DURATION)
                    .withEndAction(() -> tvText.setVisibility(View.INVISIBLE))
                    .start();

            // 隐藏小黑点
            ivDot.animate()
                    .alpha(0f)
                    .setDuration(ANIM_DURATION)
                    .withEndAction(() -> ivDot.setVisibility(View.GONE))
                    .start();

            ivIcon.setColorFilter(unselectedColor); // 图标未选中颜色
            ivIcon.animate()
                    .translationY(0)
                    .alpha(1f)
                    .setDuration(ANIM_DURATION)
                    .start();
        }
    }
}