效果图:

慢慢的绘制出来,从左往右一帧一帧的绘制而成

新建一个 class,SurfaceViewAnim.java:

public class SurfaceViewAnim extends SurfaceView implements SurfaceHolder.Callback,Runnable {private SurfaceHolder mHolder;  //  声明SurfaceHolderprivate Canvas mCanvas;private boolean isDrawing;  //控制绘图线程private Paint paint;        //  画笔对象private Bitmap snail;   //  实现动画的图片对象private int snail_X;        //  动画元素的起始X坐标public SurfaceViewAnim(Context context) {super(context);snail = BitmapFactory.decodeResource(getResources(),R.drawable.ic_one);//  为了得到屏幕的宽度DisplayMetrics dm2 = getResources().getDisplayMetrics();int width = dm2.widthPixels;snail_X = width;    //  起始 X 坐标赋值为当前屏幕宽度值,即屏幕最右边paint = new Paint();mHolder = this.getHolder(); //  获取SurfaceHolder 对象mHolder.addCallback(this);  //  添加 Callback 接口}@Overridepublic void surfaceCreated(SurfaceHolder holder) {isDrawing = true;new Thread(this).start();   //  启动绘图的线程}@Overridepublic void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {}@Overridepublic void surfaceDestroyed(SurfaceHolder holder) {isDrawing = false;  //  终止绘图线程}public void run(){while (isDrawing){snail_X--;      //  绘图元素属性修改,此处为修改其 X 坐标if (snail_X <= 0){  //  到达最左边后,不再移动snail_X = 0;}mydraw();       //  绘图try {Thread.sleep(30);} catch (InterruptedException e) {e.printStackTrace();}}}private void mydraw() {try {mCanvas = mHolder.lockCanvas();     // 锁定面板,开始绘图paint.setColor(Color.WHITE);mCanvas.drawRect(0,0,getWidth(),getHeight(),paint); //  绘制背景mCanvas.drawBitmap(snail,snail_X,100,paint);    //  绘图}catch (Exception e){}finally {if ( mCanvas != null){mHolder.unlockCanvasAndPost(mCanvas);    //  解锁花瓣,推送到界面}}}
}

MainActivity.java

public class MainActivity extends AppCompatActivity {SurfaceViewAnim anim;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);anim = new SurfaceViewAnim(this);setContentView(anim);   //  设置 anim 为显示视图}
}

activity_main.xml,不变

点击运行即可

Android SurfaceView动画(二)相关推荐

  1. android surfaceview动画,怎么让android的surfaceview中的动画更加平滑流畅

    比如一个位移动画. 大概代码类似这样float startX,startY;//动画开始前的位置 float x,y;//图片当前坐标 float targetX,targetY;//目标位置 flo ...

  2. Android Animation动画详解(二): 组合动画特效

    前言 上一篇博客Android Animation动画详解(一): 补间动画 我已经为大家介绍了Android补间动画的四种形式,相信读过该博客的兄弟们一起都了解了.如果你还不了解,那点链接过去研读一 ...

  3. android下雨动画效果,Android 自定义View(二) 下雨效果

    Rain.gif Android 自定义View(二) 下雨效果 一 实现思路, 雨点用线段表示,通过控制线段的大小和宽度来表示不同的线段. 一个雨点下雨的过程可以表示为一条直线,一次雨点在下雨的过程 ...

  4. Android自定义动画专题二

    android自定义动画专题二 在上篇文章中给大家介绍了android自定义动画的第一种表现形式:view的绘制:不过这只是一种单纯利用自定义控件绘制的方式去实现:这篇文章会给大家演示如何通过自定义控 ...

  5. Android 属性动画使用(二)

    首先扯点别的:晚上稍微跑了一会步,然后逛了超市,晚饭喝的南瓜粥,吃了一碗面条,今天不是太饿,现在正一边吃着葡萄一边学习,也是没谁了. 比如说,我们想要实现从0过渡到100,使用ValueAnimato ...

  6. android换肤动画,Android换肤(二) — 插件式换肤

    ###前言 上节我们讲到了`Android-skin-support`库的应用内换肤,大家感兴趣的可以参看文章: [Android换肤(一) - 应用内换肤](http://www.demodashi ...

  7. 详解与重构hyman《Android SurfaceView实战 打造抽奖转盘》

    详解与重构hyman<Android SurfaceView实战 打造抽奖转盘> 作者:邵励治 一.概述--关于SurfaceView您不得不知道的二三事 1.SurfaceView是干什 ...

  8. Android中动画的详细讲解

    逐帧动画: 补间动画 结合动画 自定义动画 属性动画一 属性动画二 动画三 动画四 逐帧动画 语法格式 MainActivity代码 补间动画Tween Animation子类 interpolato ...

  9. XamarinAndroid组件教程设置自定义子元素动画(二)

    XamarinAndroid组件教程设置自定义子元素动画(二) (9)打开MainActivity.cs文件,为RecylerView的子元素设置添加和删除时的透明动画效果.代码如下: --using ...

  10. Android 帧动画何时停止播放

    为什么80%的码农都做不了架构师?>>>    关于android帧动画没有提供结束播放的接口回调表示不理解,也许是基于播放动画的时候,系统在干其他事情,无法确切地保证动画在tota ...

最新文章

  1. Indy接收邮件可能会出现的一个Bug
  2. Filter案例之登录验证
  3. 3493. 最大的和
  4. 微信公众号页面模版怎么添加文章推荐功能
  5. 在yuv域如何降低画面亮度_家庭影院投影机错误地调节了亮度和对比度会得到怎么样的画面?...
  6. python中定义元组的符号_python中得元组和字符串详解,有这么一篇文章就够了
  7. mysql视图子查询_MySQL:FROM子句限制中的带有子查询的视图
  8. html中css层叠样式表(行内样式,内嵌式,外部式)
  9. 数据分析中会常犯哪些错误,如何解决? 四
  10. springboot毕设项目网上商城系统8l44b(java+VUE+Mybatis+Maven+Mysql)
  11. 《Android之大话设计模式》设计原则 第一章:针对接口编程 不要针对实现编程
  12. 计算机网络——SMTP
  13. 新用户报到,以及门电路相关手游推荐
  14. Beam Search(集束搜索)算法
  15. MATLAB导入txt和excel文件技巧汇总
  16. Python NLP入门教程
  17. Python经典实验4-字典和集合的应用
  18. 新电脑重装系统好吗?电脑重装系统的好坏
  19. python编程lcd显示_PyQt5快速上手基础篇2-按钮控制LCD屏显示
  20. 二叉树的最近公共祖先 (BSF和普通)

热门文章

  1. 【BZOJ2839】集合计数【BZOJ3622】已经没有什么好害怕的了
  2. dos.ORM配置和使用
  3. [2017.01.04] 经典排序算法思想及其实现
  4. Think PHP url的四种访问方法。
  5. form表单自动回车提交
  6. C#问题——interface class
  7. 对自己深度学习方向的论文有idea,可是工程实践能力跟不上,实验搞不定怎么办?...
  8. 在茫茫决策树入门帖里,我强推这篇(附可视化图)
  9. 表妹即将去读研,我送了她11个建议
  10. Leetcode—5.n sum 问题python解答