From eb20eddb8a9c0a19abeae112945b9fa59ab72d05 Mon Sep 17 00:00:00 2001 From: GorPing Date: Fri, 30 Dec 2016 23:44:23 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B9=8B=E5=89=8D?= =?UTF-8?q?=E9=81=97=E6=BC=8F=E7=9A=84xml=E5=AF=BC=E8=87=B4=E7=9A=84bug?= =?UTF-8?q?=E4=BB=A5=E5=8F=8A=E5=AE=8C=E5=96=84=E4=BB=A3=E7=A0=81=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/gradle.xml | 7 +-- app/app.iml | 13 ++++-- .../pierrebeziercircle/MagicCircle.java | 34 ++++++-------- .../pierrebeziercircle/MainActivity.java | 38 ++++++++++------ app/src/main/res/layout/activity_main.xml | 45 ++++++++----------- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.properties | 4 +- 7 files changed, 71 insertions(+), 72 deletions(-) diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 508b3d9..7ac24c7 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -11,12 +11,7 @@ - + diff --git a/app/app.iml b/app/app.iml index 0eb1cc9..182702d 100644 --- a/app/app.iml +++ b/app/app.iml @@ -32,12 +32,14 @@ + + @@ -82,18 +84,23 @@ - + + + + + - + + @@ -103,8 +110,8 @@ - + \ No newline at end of file diff --git a/app/src/main/java/com/shadev/pierrebeziercircle/MagicCircle.java b/app/src/main/java/com/shadev/pierrebeziercircle/MagicCircle.java index fd512f2..81c9ff0 100644 --- a/app/src/main/java/com/shadev/pierrebeziercircle/MagicCircle.java +++ b/app/src/main/java/com/shadev/pierrebeziercircle/MagicCircle.java @@ -17,10 +17,9 @@ import android.view.animation.Transformation; /** - * 原作者相关教程 + * 作者相关教程 * http://www.jianshu.com/p/791d3a791ec2 *

- * 我是来填坑的 */ public class MagicCircle extends View { private static final String TAG = "MagicCircle"; @@ -35,10 +34,6 @@ public class MagicCircle extends View { private int mWidth; private int mHeight; - //View的中心坐标 - private int mCenterX; - private int mCenterY; - private float mMaxLength; private float mInterpolatedTime; private float mStretchDistance; @@ -97,8 +92,6 @@ protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); mWidth = w; mHeight = h; - mCenterX = mWidth / 2; - mCenterY = mHeight / 2; mRadius = 50; mMagicControl = mRadius * BLACK_MAGIC; mStretchDistance = mRadius; @@ -131,7 +124,6 @@ protected void onDraw(Canvas canvas) { mPath.cubicTo(mPoint3.left.x, mPoint3.left.y, mPoint4.top.x, mPoint4.top.y, mPoint4.x, mPoint4.y); mPath.cubicTo(mPoint4.bottom.x, mPoint4.bottom.y, mPoint1.left.x, mPoint1.left.y, mPoint1.x, mPoint1.y); - //绘制路径,好吧,这句话是多余的 canvas.drawPath(mPath, mFillCirclePaint); } @@ -247,7 +239,7 @@ private void model5(float time) { mPoint4.adjustAllX((float) (Math.sin(Math.PI * time * 10f) * (2 / 10f * mRadius))); } - private void startAnimation() { + public void startAnimation() { mPath.reset(); mInterpolatedTime = 0; MoveAnimation move = new MoveAnimation(); @@ -299,6 +291,7 @@ public void setY(float y) { left.y = y; right.y = y; } + public void adjustAllX(float offset) { this.x += offset; left.x += offset; @@ -324,12 +317,18 @@ public void onAnimationUpdate(ValueAnimator animation) { mFillCirclePaint.setColor((Integer) animation.getAnimatedValue()); } }); + if (mRepeatCount != 0) { + va.setRepeatCount(mRepeatCount); + } + if (mRepeatMode != 0) { + va.setRepeatMode(mRepeatMode); + } va.setDuration(mDuration); va.start(); } static class Builder { - private boolean canDoAnim; + private static final int ERROR_VALUE = -1; private MagicCircle mMagicCircle; public Builder(@NonNull MagicCircle magicCircle) { @@ -342,9 +341,6 @@ public Builder(@NonNull MagicCircle magicCircle) { mMagicCircle.mStartColor = -1; mMagicCircle.mEndColor = -1; mMagicCircle.mInterpolator = new AccelerateDecelerateInterpolator(); - - //开始动画的标识符 - canDoAnim = true; } public Builder setInterpolator(Interpolator interpolator) { @@ -388,13 +384,11 @@ public void start() { return; } - if (canDoAnim) { - canDoAnim = false; - mMagicCircle.startAnimation(); + mMagicCircle.startAnimation(); - if (mMagicCircle.mStartColor != -1) { - mMagicCircle.startColorAnim(); - } + if (mMagicCircle.mStartColor != ERROR_VALUE + && mMagicCircle.mEndColor != ERROR_VALUE) { + mMagicCircle.startColorAnim(); } } } diff --git a/app/src/main/java/com/shadev/pierrebeziercircle/MainActivity.java b/app/src/main/java/com/shadev/pierrebeziercircle/MainActivity.java index d98a2e2..b03725e 100644 --- a/app/src/main/java/com/shadev/pierrebeziercircle/MainActivity.java +++ b/app/src/main/java/com/shadev/pierrebeziercircle/MainActivity.java @@ -1,24 +1,34 @@ package com.shadev.pierrebeziercircle; +import android.graphics.Color; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; -import android.widget.Button; +import android.view.animation.AccelerateDecelerateInterpolator; +import android.view.animation.Animation; public class MainActivity extends AppCompatActivity { - private android.widget.Button btnstart; - private MagicCircle circle3; + private MagicCircle mMagicCircle; + private MagicCircle.Builder builder; - @Override protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); - circle3 = (MagicCircle)findViewById(R.id.circle3); - this.btnstart = (Button) findViewById(R.id.btn_start); - btnstart.setOnClickListener(new View.OnClickListener() { - @Override public void onClick(View v) { - circle3.startAnimation(); - } - }); - } + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + + mMagicCircle = (MagicCircle) findViewById(R.id.circle); + builder = new MagicCircle.Builder(mMagicCircle); + } + + public void startCircleAnimation(View view) { + builder .setDuration(2000) +// .setStartColor(Color.RED) +// .setEndColor(Color.BLUE) + .setColor(Color.BLACK) + .setInterpolator(new AccelerateDecelerateInterpolator()) + .setRepeatCount(Animation.INFINITE) + .setRepeatMode(Animation.REVERSE) + .start(); + } } diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 7ed9ff4..7f19c11 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,32 +1,25 @@ - - - - -