SurfaceView提供的是直接访问画布进行绘图的机制,在里面创建Android UI是行不通的,不过游戏中经常会用到Andoird UI,这个就需要两者能够很好地结合使用.
先需要说明的一点,SurfaceView,ListView以及UI统统都继承了View,要结合它们只能在上层进行操作,具体的说不太清楚,我理解的也不是很透彻,贴下代码吧,无代码无真相:
package com.ray.bubble;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.Window;
import android.view.WindowManager;
import android.widget.FrameLayout;
import android.widget.TextView;
public class BubbleExplosion extends Activity {
private FrameLayout frame;
private MyView myView;
private TextView text;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams. FLAG_FULLSCREEN ,
WindowManager.LayoutParams. FLAG_FULLSCREEN);
frame = new FrameLayout(this);
text = new TextView(this);
text.setTextSize(20);
text.setText("lovehui");
text.setHeight(30);
text.setWidth(100);
frame.addView(myView);
frame.addView(text);
setContentView(frame);
}
class MyView extends SurfaceView implements SurfaceHolder.Callback{
SurfaceHolder holder;
public MyView(Context context) {
super(context);
holder = this.getHolder();//获取holder
holder.addCallback(this);
}
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
public void surfaceCreated(SurfaceHolder holder) {
new Thread(new MyThread()).start();
}
public void surfaceDestroyed(SurfaceHolder holder) {
}
//内部类的内部类
class MyThread implements Runnable{
public void run() {
Canvas canvas = holder.lockCanvas(null);//获取画布
Paint mPaint = new Paint();
mPaint.setColor(Color.BLUE);
canvas.drawRect(new RectF(40,60,80,80), mPaint);
holder.unlockCanvasAndPost(canvas);//解锁画布,提交画好的图像
}
}
}
}
分享到:
相关推荐
在Android开发中,`SurfaceView`是一个非常重要的视图组件,尤其在处理视频播放、游戏渲染等高性能图形操作时,它的优势在于拥有独立于主线程的渲染机制,能避免阻塞UI更新。然而,由于其特殊的性质,直接通过常规...
综上所述,通过结合SurfaceView、手势检测和矩阵变换,我们可以实现在Android应用中对图片的流畅缩放和滑动操作。然而,由于SurfaceView的特性,这个过程可能会比使用ImageView等其他组件更为复杂。因此,开发者需要...
`SurfaceView`通常用于处理高性能的图形或者视频播放,因为它可以在单独的线程中进行绘制,避免阻塞UI主线程。`SurfaceView`在屏幕上显示为一个矩形,但有时我们可能需要将其边缘设置为圆角,以实现更加美观的效果。...
【Android UI】SurfaceView中使用 Canvas 绘制可缩放大图 ( 拖动和缩放相关的变量 | Canvas 绘图函数 | 手势识别 多点触控流程 | 拖动图片 | 缩放图片 ) 博客链接:...
总的来说,"android surfaceview自定义拍照 绘制头像轮廓"是一个结合了Android视图系统、摄像头API、图像处理技术的项目。通过理解并实践这个项目,开发者可以深入学习Android的底层图形处理以及如何利用第三方库...
总的来说,Android的SurfaceView为游戏开发提供了一个高效的平台,结合OpenGL ES和其他Android图形API,开发者可以创建出丰富多彩、流畅运行的移动游戏。不过,要注意合理管理线程和内存,避免性能瓶颈,以确保游戏...
SurfaceView是Android系统提供的一种特殊视图,它有自己的独立绘制表面,与主线程分离,使得游戏或者视频这类需要连续刷新的场景能够流畅运行,避免阻塞UI线程。下面将详细阐述SurfaceView在游戏框架中的应用及其...
这意味着`SurfaceView`可以在后台线程中进行高性能的图形操作,而不会阻塞UI更新,非常适合用于处理多媒体数据。它的内部由两部分组成:`Surface`和`View`。`Surface`是实际的渲染区域,而`View`负责处理布局和触摸...
SurfaceView包含一个Surface对象,该对象存在于应用程序和系统窗口管理器之间,允许直接在硬件层面上进行绘图,从而避免了频繁的UI刷新导致的性能损失。在实时显示摄像头视频的场景中,这正是我们所需要的。 要实现...
在Android系统中,UI更新是通过一个名为UI线程的主线程来处理的,而SurfaceView拥有自己的独立渲染线程,这使得它可以在不阻塞主线程的情况下进行高效率的图像绘制。这种设计特别适用于需要连续流畅动画或视频播放的...
SurfaceView拥有自己的窗口,并且其内容是在单独的硬件层上绘制的,这使得它能够独立于UI主线程进行更新,从而避免阻塞用户界面。这对于处理视频流或高帧率的游戏非常重要,因为它们需要频繁的绘制操作。 实现视频...
Android开发摄像头SurfaceView预览 背景画图(矩形和圆形) 实现(双surfaceview,顶层画矩形框,底层预览视频); UI:三个按钮 预览 摄像 图片保存,预览界面 可以显示(矩形和圆形等图画)
`SurfaceView`包含一个独立的渲染表面,它位于窗口管理器的单独层上,与应用程序的其他UI组件分离开来。这种设计使得视频帧可以快速地绘制到屏幕上,减少了延迟,从而实现流畅的视频播放体验。 实现步骤如下: 1. ...
在Android平台上,SurfaceView是一种特殊的View,用于处理高性能、低延迟的图形绘制,尤其是在开发游戏或者视频播放等需要高效刷新率的应用时。本测试Demo旨在展示如何有效地利用SurfaceView进行游戏开发。以下是对...
在Android平台上,实现拍照功能是常见的需求,尤其是在开发涉及图像处理和人脸识别的...开发者需要深入理解这两个组件的原理,并结合Android的生命周期管理和事件处理机制,才能创建出稳定、高效且用户友好的拍照应用。
首先,SurfaceView拥有自己的Surface对象,它位于窗口的最底层,直接与硬件交互,允许在主线程之外进行绘制操作,避免了UI线程阻塞,提高了渲染效率。这使得SurfaceView特别适合处理高帧率的图形内容。 其次,...
在Android开发中,View和SurfaceView是两种非常重要的视图组件,它们被广泛用于构建用户界面和处理图形绘制。这两个类都是Android系统提供用来显示动态内容的机制,但它们之间存在一些关键的区别。 **View组件** ...
SurfaceView不同于普通的View,它拥有自己的Surface对象,可以独立于UI线程进行渲染,避免了因为复杂的图形计算导致主线程阻塞,提升了性能。它通常用于需要连续、高性能渲染的应用,如游戏、视频播放等。 2. 触摸...
**Android SurfaceView 使用详解** `SurfaceView` 是 Android 系统提供的一种特殊的视图组件,它允许开发者在应用程序中创建高性能的图形界面,比如游戏、视频播放器等需要连续更新图像的应用。`SurfaceView` 提供...
在Android开发中,多媒体播放是常见的功能之一,`MediaPlayer` 和 `SurfaceView` 的结合使用是实现视频播放的标准方式。本篇文章将详细讲解如何利用这两个组件来构建一个视频播放器。 首先,`MediaPlayer` 是...