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