1.----------------------依赖
implementation 'com.android.support:recyclerview-v7:27.1.1' implementation 'com.squareup.okhttp3:okhttp:3.11.0' implementation 'com.google.code.gson:gson:2.2.4' implementation 'com.android.support:design:27.+' implementation 'com.squareup.picasso:picasso:2.71828' implementation 'com.jcodecraeer:xrecyclerview:1.5.9'
2.----------------------权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<application
android:name=".di.App"
3.----------------------activity-animaor
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".ui.activity.MainActivity"> <bweie.com.moni3.ui.widget.CircleView android:id="@+id/cv_circle" android:layout_width="120dp" android:layout_height="120dp" app:color="@color/colorAccent" 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>
4.animator
set
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <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> </set>
5.----------------CircleView类
public class CircleView extends View { private int radius; private int color; public CircleView(Context context) { super(context); } public CircleView(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.getInt(index, Color.GREEN); break; } } } // @Override // protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { // super.onMeasure(widthMeasureSpec, heightMeasureSpec); // setMeasuredDimension(getMeasuredWidth(widthMeasureSpec),getMeasuredHeight(heightMeasureSpec)); // // } // // private int getMeasuredWidth(int widthMeasureSpec) { // int mode = MeasureSpec.getMode(widthMeasureSpec); // int size = MeasureSpec.getMode(widthMeasureSpec); // int resilt=0; // if (mode==MeasureSpec.AT_MOST){ // resilt=getPaddingLeft()+getPaddingRight()+2*radius; // }else if(mode==MeasureSpec.EXACTLY){ // resilt = size; // } // return resilt; // } // private int getMeasuredHeight(int heightMeasureSpec) { // int mode = MeasureSpec.getMode(heightMeasureSpec); // int size = MeasureSpec.getMode(heightMeasureSpec); // int resilt=0; // if (mode==MeasureSpec.AT_MOST){ // resilt=getPaddingTop()+getPaddingBottom()+2*radius; // }else if(mode==MeasureSpec.EXACTLY){ // resilt = size; // } // return resilt; // } @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); } }
6.-------------values-cicr-attrs
<?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="CircleView"> <attr name="radius" format="integer" /> <attr name="color" format="color" /> </declare-styleable> </resources>
7------------ anmitoractivity主类
package bweie.com.moni3.ui.activity; import android.animation.Animator; import android.animation.AnimatorInflater; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; import bweie.com.moni3.R; import bweie.com.moni3.ui.widget.CircleView; public class AnimatorActivity extends Activity { private AnimatorActivity context; @BindView(R.id.cv_circle) CircleView cvCircle; @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; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_animator); ButterKnife.bind(this); context = AnimatorActivity.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.translate_anmitro); break; case R.id.btn_scale: bindAnimator(R.animator.scale_anmi); break; case R.id.btn_rotate: bindAnimator(R.animator.rotate_anmi); break; case R.id.btn_alpha: bindAnimator(R.animator.alpla_animator); break; case R.id.btn_animator_set: bindAnimator(R.animator.set_animator); break; } } private void bindAnimator(int animatorId) { Animator animator = AnimatorInflater.loadAnimator(context, animatorId); animator.setTarget(cvCircle); animator.start(); } @OnClick(R.id.cv_circle) public void onViewClicked() { Intent Intentt = new Intent(AnimatorActivity.this, LoginActivity.class); startActivity(Intentt); } }