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 MaterialHeadView 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 MaterialHeadView(Context context) {
this(context, null);
}
public MaterialHeadView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public MaterialHeadView(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 onComlete(MaterialRefreshLayout materialRefreshLayout) {
if(materialWaveView != null)
{
materialWaveView.onComlete(materialRefreshLayout);
}
if(circleProgressBar != null)
{
circleProgressBar.onComlete(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);
}
}
@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);
}
}
// public void scaleView(View v,float a,float b) {
// ObjectAnimator ax = ObjectAnimator.ofFloat(v,"scaleX",a,b);
// ObjectAnimator ay = ObjectAnimator.ofFloat(v,"scaleY",a,b);
// AnimatorSet animSet = new AnimatorSet();
// animSet.play(ax).with(ay);
// animSet.setDuration(200);
// animSet.start();
// }
}