package com.cjj; import android.animation.AnimatorSet; import android.animation.ObjectAnimator; import android.content.Context; import android.support.v4.view.ViewCompat; import android.util.AttributeSet; import android.util.Log; import android.view.Gravity; import android.view.View; import android.widget.FrameLayout; public class MaterialFoodView extends FrameLayout implements MaterialHeadListener { private MaterialWaveView materialWaveView; private CircleProgressBar circleProgressBar; private int waveColor; private int progressTextColor; private int[] progress_colors; private int progressStokeWidth; private boolean isShowArrow, isShowProgressBg; private int progressValue, progressValueMax; private int textType; private int progressBg; private int progressSize; private MaterialHeadListener listener; public MaterialFoodView(Context context) { this(context, null); } public MaterialFoodView(Context context, AttributeSet attrs) { this(context, attrs, 0); } public MaterialFoodView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(attrs, defStyle); } protected void init(AttributeSet attrs, int defStyle) { if (isInEditMode()) return; setClipToPadding(false); setWillNotDraw(false); } public int getWaveColor() { return waveColor; } public void setWaveColor(int waveColor) { this.waveColor = waveColor; if (null != materialWaveView) { materialWaveView.setColor(this.waveColor); } } public void setProgressSize(int progressSize) { this.progressSize = progressSize; } public void setProgressBg(int progressBg) { this.progressBg = progressBg; } public void setIsProgressBg(boolean isShowProgressBg) { this.isShowProgressBg = isShowProgressBg; } public void setProgressTextColor(int textColor) { this.progressTextColor = textColor; } public void setProgressColors(int[] colors) { this.progress_colors = colors; } public void setTextType(int textType) { this.textType = textType; } public void setProgressValue(int value) { this.progressValue = value; this.post(new Runnable() { @Override public void run() { if (circleProgressBar != null) { circleProgressBar.setProgress(progressValue); } } }); } public void setProgressValueMax(int value) { this.progressValueMax = value; } public void setProgressStokeWidth(int w) { this.progressStokeWidth = w; } public void showProgressArrow(boolean isShowArrow) { this.isShowArrow = isShowArrow; } @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); materialWaveView = new MaterialWaveView(getContext()); materialWaveView.setColor(waveColor); addView(materialWaveView); circleProgressBar = new CircleProgressBar(getContext()); FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(Util.dip2px(getContext(), progressSize), Util.dip2px(getContext(), progressSize)); layoutParams.gravity = Gravity.CENTER; circleProgressBar.setLayoutParams(layoutParams); circleProgressBar.setColorSchemeColors(progress_colors); circleProgressBar.setProgressStokeWidth(progressStokeWidth); circleProgressBar.setShowArrow(isShowArrow); circleProgressBar.setShowProgressText(textType == 0); circleProgressBar.setTextColor(progressTextColor); circleProgressBar.setProgress(progressValue); circleProgressBar.setMax(progressValueMax); circleProgressBar.setCircleBackgroundEnabled(isShowProgressBg); circleProgressBar.setProgressBackGroundColor(progressBg); addView(circleProgressBar); } @Override public void onComplete(MaterialRefreshLayout materialRefreshLayout) { if (materialWaveView != null) { materialWaveView.onComplete(materialRefreshLayout); } if (circleProgressBar != null) { circleProgressBar.onComplete(materialRefreshLayout); ViewCompat.setTranslationY(circleProgressBar, 0); ViewCompat.setScaleX(circleProgressBar, 0); ViewCompat.setScaleY(circleProgressBar, 0); } } @Override public void onBegin(MaterialRefreshLayout materialRefreshLayout) { if (materialWaveView != null) { materialWaveView.onBegin(materialRefreshLayout); } if (circleProgressBar != null) { circleProgressBar.onBegin(materialRefreshLayout); ViewCompat.setScaleX(circleProgressBar, 1); ViewCompat.setScaleY(circleProgressBar, 1); } } @Override public void onPull(MaterialRefreshLayout materialRefreshLayout, float fraction) { if (materialWaveView != null) { materialWaveView.onPull(materialRefreshLayout, fraction); } if (circleProgressBar != null) { circleProgressBar.onPull(materialRefreshLayout, fraction); float a = Util.limitValue(1, fraction); ViewCompat.setScaleX(circleProgressBar, 1); ViewCompat.setScaleY(circleProgressBar, 1); ViewCompat.setAlpha(circleProgressBar, a); } } @Override public void onRelease(MaterialRefreshLayout materialRefreshLayout, float fraction) { } @Override public void onRefreshing(MaterialRefreshLayout materialRefreshLayout) { if (materialWaveView != null) { materialWaveView.onRefreshing(materialRefreshLayout); } if (circleProgressBar != null) { circleProgressBar.onRefreshing(materialRefreshLayout); } } }