animator alph rotate scale set transtor
<objectAnimator android:duration="2000" android:propertyName="alpha" android:valueFrom="0" android:valueTo="1" ></objectAnimator> <objectAnimator android:duration="2000" android:propertyName="rotationX" android:valueFrom="0" android:valueTo="360" ></objectAnimator> <objectAnimator android:duration="2000" android:propertyName="scaleX" android:valueFrom="0" android:valueTo="100" ></objectAnimator>
set
<objectAnimator android:duration="2000" android:propertyName="alpha" android:valueFrom="0" android:valueTo="1"></objectAnimator> <objectAnimator android:duration="2000" android:propertyName="rotationX" android:valueFrom="0" android:valueTo="100"></objectAnimator> <objectAnimator android:duration="2000" android:propertyName="scaleX" android:valueFrom="0" android:valueTo="2"></objectAnimator> <objectAnimator android:duration="2000" android:propertyName="scaleY" android:valueFrom="0" android:valueTo="2"></objectAnimator> <objectAnimator android:duration="2000" android:propertyName="translationX" android:valueFrom="0" android:valueTo="600"></objectAnimator> <objectAnimator android:duration="2000" android:propertyName="translationY" android:valueFrom="0" android:valueTo="920"></objectAnimator>
tran
<objectAnimator android:duration="2000" android:propertyName="translationX" android:valueFrom="0" android:valueTo="100"></objectAnimator>
CirecleView
public class CirceleView extends View { private int radius; private int color; public CirceleView(Context context) { super(context); } public CirceleView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.CircleView); for (int i = 0; i<typedArray.length();i++){ int index = typedArray.getIndex(i); switch (i){ case R.styleable.CircleView_radius: radius = typedArray.getInt(index, 20); break; case R.styleable.CircleView_color: color = typedArray.getColor(index, Color.GREEN); break; } } } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { setMeasuredDimension(getMeasuredWidth(widthMeasureSpec), getMeasuredHeight(heightMeasureSpec)); } private int getMeasuredWidth(int widthMeasureSpec) { int mode = MeasureSpec.getMode(widthMeasureSpec); int size = MeasureSpec.getSize(widthMeasureSpec); int result = 0; if (mode == MeasureSpec.AT_MOST) { result = getPaddingLeft() + getPaddingRight() + 2 * radius; } else if (mode == MeasureSpec.EXACTLY) { result = size; } return result; } private int getMeasuredHeight(int heightMeasureSpec) { int mode = MeasureSpec.getMode(heightMeasureSpec); int size = MeasureSpec.getSize(heightMeasureSpec); int result = 0; if (mode == MeasureSpec.AT_MOST) { result = getPaddingTop() + getPaddingBottom() + 2 * radius; } else if (mode == MeasureSpec.EXACTLY) { result = size; } return result; } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint paint = new Paint(); paint.setColor(color); paint.setAntiAlias(true); canvas.drawCircle(radius, radius, radius, paint); } }
activity
public class AnimationActivity extends AppCompatActivity { @BindView(R.id.circeleView) CirceleView circeleView; @BindView(R.id.btn_translate) Button btnTranslate; @BindView(R.id.btn_scale) Button btnScale; @BindView(R.id.btn_rotate) Button btnRotate; @BindView(R.id.btn_alpha) Button btnAlpha; @BindView(R.id.btn_animator_set) Button btnAnimatorSet; private Context context; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_animation); ButterKnife.bind(this); context = AnimationActivity.this; } @OnClick({R.id.btn_translate, R.id.btn_scale, R.id.btn_rotate, R.id.btn_alpha, R.id.btn_animator_set}) public void onViewClicked(View view) { switch (view.getId()) { case R.id.btn_translate: bindAnimator(R.animator.transltor_animator); break; case R.id.btn_scale: bindAnimator(R.animator.scale_animator); break; case R.id.btn_rotate: bindAnimator(R.animator.rotate_animator); break; case R.id.btn_alpha: bindAnimator(R.animator.alph_animator); break; case R.id.btn_animator_set: bindAnimator(R.animator.set_anmiator); break; case R.id.circeleView: Intent intent = new Intent(AnimationActivity.this,LoginActivity.class); startActivity(intent); finish(); break; } } private void bindAnimator(int animatorId) { Animator animator = AnimatorInflater.loadAnimator(context, animatorId); animator.setTarget(circeleView); animator.start(); } }布局
<guoyunfei.bwei.com.week3.ui.CirceleView android:id="@+id/circeleView" android:layout_width="wrap_content" android:layout_height="wrap_content" app:color="@color/colorRed" android:onClick="onViewClicked" app:radius="60" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <Button android:id="@+id/btn_translate" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="平移" /> <Button android:id="@+id/btn_scale" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="缩放" /> <Button android:id="@+id/btn_rotate" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="旋转" /> <Button android:id="@+id/btn_alpha" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="透明度变化" /> </LinearLayout> <Button android:id="@+id/btn_animator_set" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="动画集合" /> </LinearLayout> </RelativeLayout>