MainActivity.java package com.example.sufaceviewdemo;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.os.SystemClock;import android.support.v7.app.AppCompatActivity;import android.os.
          package com.example.sufaceviewdemo;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.SystemClock;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Surface;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
public class MainActivity extends AppCompatActivity {
        private SurfaceView sv;
    /**
     * surfaceView单位时间内完成界面的大量多次更新
     * surfaceview采用双缓冲机制
     * A线程-----更新ui-------后台计算-----更新ui
     * B线程------后台计算-----更新ui-----后台计算
     * 可以再子线程更新ui
     * surfaceview占用很大的内存开销,不能放在主线程中
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        sv=findViewById(R.id.sv);
    }
    public void click(View view){
       new Thread(){
           @Override
           public void run() {
               for (int i=0;i<100;i++) {
                   SurfaceHolder holder = sv.getHolder();
                   Canvas canvas = holder.lockCanvas();
                   canvas.drawColor(Color.RED);
                   Paint paint = new Paint();
                   int radius = 5 + i;
                   canvas.drawCircle(100, 100, radius, paint);
                   SystemClock.sleep(100);
                   holder.unlockCanvasAndPost(canvas);
               }
           }
       }.start();
    }
} 
 ViewActivity.java
 
package com.example.sufaceviewdemo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.AnimationSet;
import android.view.animation.RotateAnimation;
import android.view.animation.ScaleAnimation;
import android.view.animation.TranslateAnimation;
import android.widget.ImageView;
public class ViewActivity extends AppCompatActivity {
private ImageView iv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_view);
       iv=findViewById(R.id.iv);
    }
    /*
    * 透明度动画,alpha
    * */
    public void alpha(View view){
        AlphaAnimation aa=new AlphaAnimation(0.0f,1.0f);
        //动画播放时间长度
        aa.setDuration(2000);
        //设置播放重复次数
        aa.setRepeatCount(AlphaAnimation.INFINITE);
        //设置重复播放的模式
        aa.setRepeatMode(AlphaAnimation.REVERSE);
        iv.startAnimation(aa);
    }
    /*
    * 平移动画,trans
    * */
    public void trans(View view){
        TranslateAnimation tt=new TranslateAnimation(Animation.RELATIVE_TO_PARENT,0,
                Animation.RELATIVE_TO_PARENT,0.5f,
                Animation.RELATIVE_TO_PARENT,0,
                Animation.RELATIVE_TO_PARENT,0.5f);
        tt.setDuration(2000);
        tt.setRepeatCount(Animation.INFINITE);
        tt.setRepeatMode(Animation.REVERSE);
        iv.startAnimation(tt);
    }
    /*
    * 缩放动画,scale
    * */
    public void scale(View view){
        ScaleAnimation ss=new ScaleAnimation(0.2f,2.0f,
                0.2f,2.0f,
                Animation.RELATIVE_TO_SELF,0.5F,
                Animation.RELATIVE_TO_SELF,0.5F);
        ss.setDuration(2000);
        ss.setRepeatCount(Animation.INFINITE);
        ss.setRepeatMode(Animation.REVERSE);
        iv.startAnimation(ss);
    }
    /**
    *旋转动画,rotate
     *
     */
    public void rotate(View view){
        RotateAnimation rr=new RotateAnimation(0,360);
        rr.setDuration(2000);
        rr.setRepeatCount(Animation.INFINITE);
        rr.setRepeatMode(Animation.REVERSE);
        iv.startAnimation(rr);
    }
    public void set(View view){
        AnimationSet set=new AnimationSet(false);
        AlphaAnimation aa=new AlphaAnimation(0.0f,1.0f);
        //动画播放时间长度
        aa.setDuration(2000);
        //设置播放重复次数
        aa.setRepeatCount(AlphaAnimation.INFINITE);
        //设置重复播放的模式
        aa.setRepeatMode(AlphaAnimation.REVERSE);
        iv.startAnimation(aa);
        TranslateAnimation tt=new TranslateAnimation(Animation.RELATIVE_TO_PARENT,0,
                Animation.RELATIVE_TO_PARENT,0.2f,
                Animation.RELATIVE_TO_PARENT,0,
                Animation.RELATIVE_TO_PARENT,0.2f);
        tt.setDuration(2000);
        tt.setRepeatCount(Animation.INFINITE);
        tt.setRepeatMode(Animation.REVERSE);
        iv.startAnimation(tt);
        ScaleAnimation ss=new ScaleAnimation(0.2f,2.0f,
                0.2f,2.0f,
                Animation.RELATIVE_TO_SELF,0.5F,
                Animation.RELATIVE_TO_SELF,0.5F);
        ss.setDuration(2000);
        ss.setRepeatCount(Animation.INFINITE);
        ss.setRepeatMode(Animation.REVERSE);
        iv.startAnimation(ss);
        RotateAnimation rr=new RotateAnimation(0,360);
        rr.setDuration(2000);
        rr.setRepeatCount(Animation.INFINITE);
        rr.setRepeatMode(Animation.REVERSE);
        iv.startAnimation(rr);
        set.addAnimation(rr);
        set.addAnimation(ss);
        set.addAnimation(tt);
        set.addAnimation(aa);
        iv.startAnimation(set);
    }
} 
 activity_main.xml
 
activity_view.xml
