// Path: app/src/main/java/com/yoga/oneweather/util/LogUtil.java
// public class LogUtil {
//     public static final int VERBOSE = 1;
//     public static final int DEBUG = 2 ;
//     public static final int INFO = 3 ;
//     public static final int WARN = 4 ;
//     public static final int ERROR = 5 ;
//     public static final int NOTHING = 6 ;
// 
//     public static int level = VERBOSE ;
//     public static void v(String tag, String msg){
//         if(level == VERBOSE){
//             Log.v(tag, msg);
//         }
//     }
//     public static void d(String tag,String msg){
//         if(level <= DEBUG){
//             Log.d(tag, msg);
//         }
//     }
// 
//     public static void i(String tag,String msg){
//         if(level <= INFO){
//             Log.i(tag, msg);
//         }
//     }
// 
// 
//     public static void w(String tag,String msg){
//         if(level <= WARN){
//             Log.w(tag, msg);
//         }
//     }
// 
//     public static void e(String tag,String msg){
//         if(level <= ERROR){
//             Log.e(tag, msg);
//         }
//     }
// 
// }
// 
// Path: app/src/main/java/com/yoga/oneweather/util/MiscUtil.java
// public class MiscUtil {
//     /**
//      * 测量 view
//      * @param measureSpec
//      * @param defaultSize View的默认大小
//      * @return
//      */
//     public static int measure(int measureSpec ,int defaultSize){
//         int result = defaultSize;
//         int specMode = View.MeasureSpec.getMode(measureSpec);
//         int specSize = View.MeasureSpec.getSize(measureSpec);
//         if(specMode == View.MeasureSpec.EXACTLY){
//             result = specSize;
//         }else if(specMode == View.MeasureSpec.AT_MOST){
//             result = Math.min(result,specSize);
//         }
//         return result;
//     }
// 
//     /**
//      * dp 转 px
//      * @param context
//      * @param dip
//      * @return
//      */
//     public static int dipToPx(Context context, float dip){
//         float density  = context.getResources().getDisplayMetrics().density;
//         return (int) (dip * density + 0.5f * (dip >= 0 ? 1 : -1));
//     }
// 
// 
//     /**
//      * 获取数值精度格式化字符串
//      * @param precision
//      * @return
//      */
//     public static String getPrecisionFormat(int precision){
//         return "%."+precision+"f" ;
//     }
// 
// 
// 
//     /**
//      * 测量文字高度
//      */
//     public static float measureTextHeight(Paint paint){
//         Paint .FontMetrics fontMetrics = paint.getFontMetrics();
//         return (Math.abs(fontMetrics.ascent) + fontMetrics.descent);
//     }
// 
// 
// }


import android.animation.ObjectAnimator;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.DashPathEffect;
import android.graphics.Paint;
import android.graphics.Point;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffColorFilter;
import android.graphics.RectF;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.View;
import android.view.animation.LinearInterpolator;
import com.yoga.oneweather.R;
import com.yoga.oneweather.util.LogUtil;
import com.yoga.oneweather.util.MiscUtil;
import static java.lang.Math.PI;
import static java.lang.Math.cos;
import static java.lang.Math.sin;
package com.yoga.oneweather.widget;




/**
 * Created by wyg on 2017/8/3.
 */

public class SunriseSunset extends View {
    private Context mContext;
    private static final float DEFAULT_SIZE = 300f;
    private int mDefaultSize;
    private int sweepAngle = 140;
    private final int STARTANGLE = 200 - (sweepAngle - 140)/2;
    private double  halfRemianAngle = (180 - sweepAngle)/2/180*PI;
    private int width,height;
    private Point mCenterPoint;

    private Paint mArcPaint;
    private RectF mRectF;
    private float mRadius;
    private  float lineYLocate;
    private ObjectAnimator mAnimator;
    private Paint mSunPaint;
// Path: app/src/main/java/com/yoga/oneweather/util/LogUtil.java
// public class LogUtil {
//     public static final int VERBOSE = 1;
//     public static final int DEBUG = 2 ;
//     public static final int INFO = 3 ;
//     public static final int WARN = 4 ;
//     public static final int ERROR = 5 ;
//     public static final int NOTHING = 6 ;
// 
//     public static int level = VERBOSE ;
//     public static void v(String tag, String msg){
//         if(level == VERBOSE){
//             Log.v(tag, msg);
//         }
//     }
//     public static void d(String tag,String msg){
//         if(level <= DEBUG){
//             Log.d(tag, msg);
//         }
//     }
// 
//     public static void i(String tag,String msg){
//         if(level <= INFO){
//             Log.i(tag, msg);
//         }
//     }
// 
// 
//     public static void w(String tag,String msg){
//         if(level <= WARN){
//             Log.w(tag, msg);
//         }
//     }
// 
//     public static void e(String tag,String msg){
//         if(level <= ERROR){
//             Log.e(tag, msg);
//         }
//     }
// 
// }
// 
// Path: app/src/main/java/com/yoga/oneweather/util/MiscUtil.java
// public class MiscUtil {
//     /**
//      * 测量 view
//      * @param measureSpec
//      * @param defaultSize View的默认大小
//      * @return
//      */
//     public static int measure(int measureSpec ,int defaultSize){
//         int result = defaultSize;
//         int specMode = View.MeasureSpec.getMode(measureSpec);
//         int specSize = View.MeasureSpec.getSize(measureSpec);
//         if(specMode == View.MeasureSpec.EXACTLY){
//             result = specSize;
//         }else if(specMode == View.MeasureSpec.AT_MOST){
//             result = Math.min(result,specSize);
//         }
//         return result;
//     }
// 
//     /**
//      * dp 转 px
//      * @param context
//      * @param dip
//      * @return
//      */
//     public static int dipToPx(Context context, float dip){
//         float density  = context.getResources().getDisplayMetrics().density;
//         return (int) (dip * density + 0.5f * (dip >= 0 ? 1 : -1));
//     }
// 
// 
//     /**
//      * 获取数值精度格式化字符串
//      * @param precision
//      * @return
//      */
//     public static String getPrecisionFormat(int precision){
//         return "%."+precision+"f" ;
//     }
// 
// 
// 
//     /**
//      * 测量文字高度
//      */
//     public static float measureTextHeight(Paint paint){
//         Paint .FontMetrics fontMetrics = paint.getFontMetrics();
//         return (Math.abs(fontMetrics.ascent) + fontMetrics.descent);
//     }
// 
// 
// }


// Path: app/src/main/java/com/yoga/oneweather/widget/SunriseSunset.java
import android.animation.ObjectAnimator;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.DashPathEffect;
import android.graphics.Paint;
import android.graphics.Point;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffColorFilter;
import android.graphics.RectF;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.View;
import android.view.animation.LinearInterpolator;
import com.yoga.oneweather.R;
import com.yoga.oneweather.util.LogUtil;
import com.yoga.oneweather.util.MiscUtil;
import static java.lang.Math.PI;
import static java.lang.Math.cos;
import static java.lang.Math.sin;

package com.yoga.oneweather.widget;




/**
 * Created by wyg on 2017/8/3.
 */

public class SunriseSunset extends View {
    private Context mContext;
    private static final float DEFAULT_SIZE = 300f;
    private int mDefaultSize;
    private int sweepAngle = 140;
    private final int STARTANGLE = 200 - (sweepAngle - 140)/2;
    private double  halfRemianAngle = (180 - sweepAngle)/2/180*PI;
    private int width,height;
    private Point mCenterPoint;

    private Paint mArcPaint;
    private RectF mRectF;
    private float mRadius;
    private  float lineYLocate;
    private ObjectAnimator mAnimator;
    private Paint mSunPaint;
    private Paint mTimePaint;