`
hzy3774
  • 浏览: 993875 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

Android在SurfaceView做动画一般方法

 
阅读更多

MainActivity

package com.example.surfacemove;
 
 import android.os.Bundle;
 import android.app.Activity;
 import android.view.Menu;
 
 public class MainActivity extends Activity {
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(new MyView(this));//指定界面
     }
 
     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
         getMenuInflater().inflate(R.menu.activity_main, menu);
         return true;
     }
 
     
 }

 

MyView

package com.example.surfacemove;
 
 import android.content.Context;
 import android.graphics.Canvas;
 import android.graphics.Color;
 import android.graphics.Paint;
 import android.graphics.Paint.Style;
 import android.view.SurfaceHolder;
 import android.view.SurfaceHolder.Callback;
 import android.view.SurfaceView;
 
 public class MyView extends SurfaceView implements Runnable, Callback {
 
     private Paint paint;
     private Canvas canvas;
     private boolean isRunning = true;//标志新线程是否运行
     private SurfaceHolder sh;
     private int i;
 
     public MyView(Context context) {
         super(context);
         paint = new Paint();
         paint.setStyle(Style.STROKE);
         paint.setColor(Color.GREEN);
         paint.setAntiAlias(true);
         sh = getHolder();//得到surfaceholder
         sh.addCallback(this);//添加回调
     }
 
     public void surfaceChanged(SurfaceHolder holder, int format, int width,
             int height) {//界面改变时调用
 
     }
 
     public void surfaceCreated(SurfaceHolder holder) {//界面创建后调用
         new Thread(this).start();//开启新线程
     }
 
     public void surfaceDestroyed(SurfaceHolder holder) {//界面销毁后调用
         isRunning = false;//标志位置为假
     }
 
     public void run() {//run函数
         while (isRunning) {//如果标志位为真
             i++;
             if(i==50){
                 i=0;
             }
             drawView();//画画面
             try {
                 Thread.sleep(100);//延时
             } catch (InterruptedException e) {
                 e.printStackTrace();
             }
         }
     }
 
     private void drawView() {//画画函数
         try {
             if(sh!=null){//若sh不为空
                 canvas = sh.lockCanvas();//得到canvas
                 canvas.drawColor(Color.BLACK);//清屏
                 canvas.drawCircle(100, 100, i, paint);
             }
         } catch (Exception e) {
             e.printStackTrace();
         }finally{
             if(canvas!=null){//若canvas不为空
                 sh.unlockCanvasAndPost(canvas);//解锁canvas
             }
         }
     }
 }

 

分享到:
评论

相关推荐

    Android SurfaceView实现动画效果

    3. **自定义绘制**: 实现SurfaceView动画的关键在于重写`onDraw()`方法,在这里进行绘制逻辑。可以结合`SurfaceHolder.Callback`的`surfaceChanged()`和`surfaceCreated()`方法来初始化绘图环境和设置动画的开始。...

    android SurfaceView实现人物动画

    这个文件名可能是示例程序的测试类或者运行环境,通常包含用于测试SurfaceView动画功能的方法。可能包括初始化SurfaceView、加载人物图片资源、设置动画循环、控制动画速度等功能。 6. **注意事项** - 在...

    使用android自带的动画机制很卡时可以考虑使用SurfaceView来实现动画

    `SurfaceView`是Android系统提供的一种用于高效显示动态图像的视图组件,它直接在硬件层面上进行渲染,从而避免了UI线程的阻塞,能显著提升动画的流畅度。 首先,理解`SurfaceView`的工作原理至关重要。`...

    Android SurfaceView 实现图片缩放 滑动

    在Android开发中,SurfaceView是一种特殊的视图,它允许开发者创建高性能的图形界面,尤其适合处理视频播放或游戏等需要连续刷新的场景。本话题主要探讨如何利用SurfaceView实现图片的缩放和滑动功能。 首先,理解...

    surfaceview制作动画简单demo

    SurfaceView在Android开发中是一种特殊的视图,常用于处理高性能的图形操作,如游戏画面、视频播放或动画等。它的核心特性在于拥有自己的独立线程,可以减少UI主线程的负担,提供更流畅的视觉体验。本教程将通过一个...

    Android SurfaceView实现人物动画

    "RunmanEnvironmentTest"可能是一个测试类,用于验证SurfaceView动画功能的正确性。 通过这个教程,开发者可以了解到如何在Android应用中利用SurfaceView创建人物动画,这将有助于提升应用的互动性和用户体验。实践...

    Android SurfaceView实现加载GIF动画

    在Android开发中,`SurfaceView`是一个非常重要的组件,它为高效显示动态图像和视频提供了可能。本篇文章将深入探讨如何使用`SurfaceView`来实现加载GIF动画,这是一个常见的需求,特别是在游戏开发或者需要实时渲染...

    android之surfaceview学习示例

    在这个"android之surfaceview学习示例"中,我们将深入探讨SurfaceView的核心特性和使用方法。 首先,SurfaceView拥有自己的Surface对象,它位于窗口的最底层,直接与硬件交互,允许在主线程之外进行绘制操作,避免...

    Android圆形相机预览窗口,圆形SurfaceView

    4. **开启相机预览**:在自定义的SurfaceView中,你需要设置一个`SurfaceHolder.Callback`,在`SurfaceCreated()`方法中初始化相机,并在`SurfaceChanged()`方法中调整相机预览的尺寸以匹配SurfaceView的大小。...

    android SurfaceView做二维码扫描源码

    总的来说,实现"android SurfaceView做二维码扫描源码"涉及到Android的SurfaceView使用、摄像头控制、图像处理以及第三方库的集成等多个技术点。理解并掌握这些知识点,才能开发出高效稳定的二维码扫描应用。

    android View、SurfaceView Demo

    在Android中,可以使用各种方法实现动画,如属性动画(Property Animation)、帧动画(Frame Animation)和补间动画(Tween Animation)。属性动画是Android 3.0引入的新特性,它允许开发者改变对象的任何属性并产生...

    Android中SurfaceView的使用

    在Android开发中,SurfaceView是一个非常重要的视图组件,它为开发者提供了在应用程序中实现高性能图形绘制的能力,常用于视频播放、游戏开发等场景。SurfaceView的特性使其能够在单独的线程中进行渲染,从而避免了...

    安卓动画效果相关-Android使用SurfaceView实现墨迹天气的风车效果.zip

    SurfaceView是Android系统提供的一种特殊视图,它允许开发者在单独的线程中处理绘图操作,从而实现流畅的动画效果,尤其适合处理高性能的图形渲染,如游戏或动态图像。 首先,我们来理解SurfaceView的基本概念。...

    Android进阶篇之引导页系列之强大的SurfaceView实现动画引导页(2)

    在这个"Android进阶篇之引导页系列之强大的SurfaceView实现动画引导页(2)"中,我们将深入探讨如何利用SurfaceView来创建动态且引人入胜的引导页动画。 SurfaceView是Android系统提供的一种特殊视图,它允许开发者...

    Android使用SurfaceView实现墨迹天气的风车效果

    "Android使用SurfaceView实现墨迹天气的风车效果"是一个典型的案例,它展示了如何利用Android的SurfaceView组件来创建动态、流畅的动画效果,以模拟类似墨迹天气App中的风车转动。SurfaceView是Android系统提供的一...

    android中surfaceview控件的使用范例

    在Android开发中,SurfaceView是一个非常重要的视图组件,它为高性能的图形渲染提供了平台,如游戏、视频播放等需要频繁更新画面的应用场景。SurfaceView的特性使得它能够在单独的线程中绘制内容,避免了与UI主线程...

    Android使用SurfaceView的迷宫寻路动画

    本人Android小菜鸟一名,刚入行不久,最近自己学习SurfaceView,想做一些小游戏。在这里放上一个自己编写的“迷宫寻路”的Demo,用于记录学习心得,同时分享给大家。当然有很多地方我不知道用法是否合理,希望大家多...

    Android自定义SurfaceView——实现画板功能

    `SurfaceView`是Android系统提供的一种用于高效显示动态图像的视图组件,它拥有自己的渲染线程,可以避免UI线程阻塞,确保流畅的动画效果。 首先,我们需要理解`SurfaceView`的基本工作原理。`SurfaceView`包含两个...

    AndroidApp中使用SurfaceView制作多线程动画的实例讲解.docx

    ### Android App中使用SurfaceView制作多线程动画的实例讲解 #### SurfaceView的定义与应用场景 在Android开发中,为了确保应用的流畅性和响应性,通常需要将耗时操作(如网络请求)放在非UI线程中进行。然而,...

    Android使用SurfaceView实现墨迹天气的风车效果-IT计算机-毕业设计.zip

    7. **生命周期管理**: 在Android应用中,SurfaceView有自己的生命周期,需要在Activity的onCreate、onResume、onPause和onDestroy等方法中适当地初始化、恢复、暂停和释放SurfaceView。 8. **布局嵌套与交互**: ...

Global site tag (gtag.js) - Google Analytics