当前位置 : 主页 > 编程语言 > java >

view动画以及surfaceview控件

来源:互联网 收集:自由互联 发布时间:2021-06-28
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.
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.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
网友评论