package com.ximsfei.skindemo.ui.discover; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.widget.AdapterView; import android.widget.Toast; import com.ximsfei.skindemo.R; import com.ximsfei.skindemo.databinding.FragmentRadioBinding; import com.ximsfei.skindemo.ui.base.BaseFragment; import com.ximsfei.skindemo.widget.ArrayDialogFragment; import java.util.ArrayList; import java.util.List; import skin.support.animator.Action; import skin.support.animator.SingleAnimator.AnimatorConfig; import skin.support.animator.SingleAnimator.AnimatorManager; import skin.support.animator.SingleAnimator.ViewAnimatorType; /** * Created by ximsfei on 17-1-8. */ public class RadioFragment extends BaseFragment<FragmentRadioBinding> { private ArrayDialogFragment arrayDialogFragment; @Override protected int getLayoutId() { return R.layout.fragment_radio; } @Override protected void onCreateVew(LayoutInflater inflater, Bundle savedInstanceState) { super.onCreateVew(inflater, savedInstanceState); initAnimatorChooseDialog(); initClick(); } private void initAnimatorChooseDialog() { List<String> itemList = new ArrayList<>(); for (ViewAnimatorType animatorType : ViewAnimatorType.values()) { itemList.add(animatorType.name()); } arrayDialogFragment = new ArrayDialogFragment(); arrayDialogFragment.setItemList(itemList); arrayDialogFragment.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { AnimatorManager.setConfig(new AnimatorConfig.Builder() .textviewVisibleAnimationType(ViewAnimatorType.values()[position]) .textviewTextAnimationType(ViewAnimatorType.AlphaUpdateAnimator) .imageviewVisibleAnimationType(ViewAnimatorType.values()[position]) .build()); if (isAnimatorOpen()) { AnimatorManager.openAnimator(); } else { AnimatorManager.closeAnimator(); } } }); } private void initClick() { mDataBinding.recover.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int childCount = mDataBinding.viewLayout.getChildCount(); for (int i = 0; i < childCount; i++) { mDataBinding.viewLayout.getChildAt(i).setVisibility(View.VISIBLE); } } }); mDataBinding.choose.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { arrayDialogFragment.show(getActivity().getSupportFragmentManager(), ""); } }); mDataBinding.animator.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int childCount = mDataBinding.viewLayout.getChildCount(); int textViewOffset = mDataBinding.viewLayout.indexOfChild(mDataBinding.text2); for (int i = textViewOffset; i < childCount; i++) { mDataBinding.viewLayout.getChildAt(i).setVisibility(View.GONE); } } }); mDataBinding.toggle.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (v.getTag().equals("close")) { mDataBinding.toggle.setText("关闭全局动画"); v.setTag("open"); AnimatorManager.openAnimator(); } else { mDataBinding.toggle.setText("开启全局动画"); v.setTag("close"); AnimatorManager.closeAnimator(); } } }); final int textviewOffset = mDataBinding.viewLayout.indexOfChild(mDataBinding.text2); int childCount = mDataBinding.viewLayout.getChildCount(); for (int i = textviewOffset; i < childCount; i++) { final int index = i; mDataBinding.viewLayout.getChildAt(i).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (isAnimatorOpen()) { Toast.makeText(mDataBinding.viewLayout.getContext(), "开启全局动画后不执行点击动画效果", Toast.LENGTH_SHORT).show(); return; } else { ViewAnimatorType.values()[(index - textviewOffset) % ViewAnimatorType.values().length] .apply(mDataBinding.viewLayout.getChildAt(index), new Action() { @Override public void action() { mDataBinding.viewLayout.getChildAt(index).setVisibility(View.GONE); } }); } } }); } mDataBinding.text1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mDataBinding.text1.getText().equals("text1")) { mDataBinding.text1.setText("text1_change"); } else { mDataBinding.text1.setText("text1"); } } }); } private boolean isAnimatorOpen() { return mDataBinding.toggle.getTag().equals("open"); } @Override protected void loadData() { } }