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
}
}
}
}
分享到:
相关推荐
3. **自定义绘制**: 实现SurfaceView动画的关键在于重写`onDraw()`方法,在这里进行绘制逻辑。可以结合`SurfaceHolder.Callback`的`surfaceChanged()`和`surfaceCreated()`方法来初始化绘图环境和设置动画的开始。...
这个文件名可能是示例程序的测试类或者运行环境,通常包含用于测试SurfaceView动画功能的方法。可能包括初始化SurfaceView、加载人物图片资源、设置动画循环、控制动画速度等功能。 6. **注意事项** - 在...
`SurfaceView`是Android系统提供的一种用于高效显示动态图像的视图组件,它直接在硬件层面上进行渲染,从而避免了UI线程的阻塞,能显著提升动画的流畅度。 首先,理解`SurfaceView`的工作原理至关重要。`...
在Android开发中,SurfaceView是一种特殊的视图,它允许开发者创建高性能的图形界面,尤其适合处理视频播放或游戏等需要连续刷新的场景。本话题主要探讨如何利用SurfaceView实现图片的缩放和滑动功能。 首先,理解...
SurfaceView在Android开发中是一种特殊的视图,常用于处理高性能的图形操作,如游戏画面、视频播放或动画等。它的核心特性在于拥有自己的独立线程,可以减少UI主线程的负担,提供更流畅的视觉体验。本教程将通过一个...
"RunmanEnvironmentTest"可能是一个测试类,用于验证SurfaceView动画功能的正确性。 通过这个教程,开发者可以了解到如何在Android应用中利用SurfaceView创建人物动画,这将有助于提升应用的互动性和用户体验。实践...
在Android开发中,`SurfaceView`是一个非常重要的组件,它为高效显示动态图像和视频提供了可能。本篇文章将深入探讨如何使用`SurfaceView`来实现加载GIF动画,这是一个常见的需求,特别是在游戏开发或者需要实时渲染...
在这个"android之surfaceview学习示例"中,我们将深入探讨SurfaceView的核心特性和使用方法。 首先,SurfaceView拥有自己的Surface对象,它位于窗口的最底层,直接与硬件交互,允许在主线程之外进行绘制操作,避免...
4. **开启相机预览**:在自定义的SurfaceView中,你需要设置一个`SurfaceHolder.Callback`,在`SurfaceCreated()`方法中初始化相机,并在`SurfaceChanged()`方法中调整相机预览的尺寸以匹配SurfaceView的大小。...
总的来说,实现"android SurfaceView做二维码扫描源码"涉及到Android的SurfaceView使用、摄像头控制、图像处理以及第三方库的集成等多个技术点。理解并掌握这些知识点,才能开发出高效稳定的二维码扫描应用。
在Android中,可以使用各种方法实现动画,如属性动画(Property Animation)、帧动画(Frame Animation)和补间动画(Tween Animation)。属性动画是Android 3.0引入的新特性,它允许开发者改变对象的任何属性并产生...
在Android开发中,SurfaceView是一个非常重要的视图组件,它为开发者提供了在应用程序中实现高性能图形绘制的能力,常用于视频播放、游戏开发等场景。SurfaceView的特性使其能够在单独的线程中进行渲染,从而避免了...
SurfaceView是Android系统提供的一种特殊视图,它允许开发者在单独的线程中处理绘图操作,从而实现流畅的动画效果,尤其适合处理高性能的图形渲染,如游戏或动态图像。 首先,我们来理解SurfaceView的基本概念。...
在这个"Android进阶篇之引导页系列之强大的SurfaceView实现动画引导页(2)"中,我们将深入探讨如何利用SurfaceView来创建动态且引人入胜的引导页动画。 SurfaceView是Android系统提供的一种特殊视图,它允许开发者...
"Android使用SurfaceView实现墨迹天气的风车效果"是一个典型的案例,它展示了如何利用Android的SurfaceView组件来创建动态、流畅的动画效果,以模拟类似墨迹天气App中的风车转动。SurfaceView是Android系统提供的一...
在Android开发中,SurfaceView是一个非常重要的视图组件,它为高性能的图形渲染提供了平台,如游戏、视频播放等需要频繁更新画面的应用场景。SurfaceView的特性使得它能够在单独的线程中绘制内容,避免了与UI主线程...
本人Android小菜鸟一名,刚入行不久,最近自己学习SurfaceView,想做一些小游戏。在这里放上一个自己编写的“迷宫寻路”的Demo,用于记录学习心得,同时分享给大家。当然有很多地方我不知道用法是否合理,希望大家多...
`SurfaceView`是Android系统提供的一种用于高效显示动态图像的视图组件,它拥有自己的渲染线程,可以避免UI线程阻塞,确保流畅的动画效果。 首先,我们需要理解`SurfaceView`的基本工作原理。`SurfaceView`包含两个...
### Android App中使用SurfaceView制作多线程动画的实例讲解 #### SurfaceView的定义与应用场景 在Android开发中,为了确保应用的流畅性和响应性,通常需要将耗时操作(如网络请求)放在非UI线程中进行。然而,...
7. **生命周期管理**: 在Android应用中,SurfaceView有自己的生命周期,需要在Activity的onCreate、onResume、onPause和onDestroy等方法中适当地初始化、恢复、暂停和释放SurfaceView。 8. **布局嵌套与交互**: ...