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

SurfaceView如何结合Android UI

阅读更多

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);//解锁画布,提交画好的图像

      }
     }
    }
 
}

2
0
分享到:
评论
1 楼 wxw404 2010-09-18  
家这么一句吧!myView=new MyView(this);

相关推荐

    Android中SurfaceView截屏

    在Android开发中,`SurfaceView`是一个非常重要的视图组件,尤其在处理视频播放、游戏渲染等高性能图形操作时,它的优势在于拥有独立于主线程的渲染机制,能避免阻塞UI更新。然而,由于其特殊的性质,直接通过常规...

    Android SurfaceView 实现图片缩放 滑动

    综上所述,通过结合SurfaceView、手势检测和矩阵变换,我们可以实现在Android应用中对图片的流畅缩放和滑动操作。然而,由于SurfaceView的特性,这个过程可能会比使用ImageView等其他组件更为复杂。因此,开发者需要...

    android surfaceview 悬浮窗圆角 windowmanager

    `SurfaceView`通常用于处理高性能的图形或者视频播放,因为它可以在单独的线程中进行绘制,避免阻塞UI主线程。`SurfaceView`在屏幕上显示为一个矩形,但有时我们可能需要将其边缘设置为圆角,以实现更加美观的效果。...

    【Android UI】SurfaceView中使用 Canvas 绘制可缩放大图

    【Android UI】SurfaceView中使用 Canvas 绘制可缩放大图 ( 拖动和缩放相关的变量 | Canvas 绘图函数 | 手势识别 多点触控流程 | 拖动图片 | 缩放图片 ) 博客链接:...

    android surfaceview自定义拍照 绘制头像轮廓

    总的来说,"android surfaceview自定义拍照 绘制头像轮廓"是一个结合了Android视图系统、摄像头API、图像处理技术的项目。通过理解并实践这个项目,开发者可以深入学习Android的底层图形处理以及如何利用第三方库...

    android之surfaceview游戏开发

    总的来说,Android的SurfaceView为游戏开发提供了一个高效的平台,结合OpenGL ES和其他Android图形API,开发者可以创建出丰富多彩、流畅运行的移动游戏。不过,要注意合理管理线程和内存,避免性能瓶颈,以确保游戏...

    android SurfaceView游戏框架

    SurfaceView是Android系统提供的一种特殊视图,它有自己的独立绘制表面,与主线程分离,使得游戏或者视频这类需要连续刷新的场景能够流畅运行,避免阻塞UI线程。下面将详细阐述SurfaceView在游戏框架中的应用及其...

    SurfaceView_android_

    这意味着`SurfaceView`可以在后台线程中进行高性能的图形操作,而不会阻塞UI更新,非常适合用于处理多媒体数据。它的内部由两部分组成:`Surface`和`View`。`Surface`是实际的渲染区域,而`View`负责处理布局和触摸...

    Android 通过SurfaceView 实现实时显示摄像头视频

    SurfaceView包含一个Surface对象,该对象存在于应用程序和系统窗口管理器之间,允许直接在硬件层面上进行绘图,从而避免了频繁的UI刷新导致的性能损失。在实时显示摄像头视频的场景中,这正是我们所需要的。 要实现...

    Android绘图机制与处理技巧(五)——View的孪生兄弟SurfaceView

    在Android系统中,UI更新是通过一个名为UI线程的主线程来处理的,而SurfaceView拥有自己的独立渲染线程,这使得它可以在不阻塞主线程的情况下进行高效率的图像绘制。这种设计特别适用于需要连续流畅动画或视频播放的...

    SurfaceView放大和缩小

    SurfaceView拥有自己的窗口,并且其内容是在单独的硬件层上绘制的,这使得它能够独立于UI主线程进行更新,从而避免阻塞用户界面。这对于处理视频流或高帧率的游戏非常重要,因为它们需要频繁的绘制操作。 实现视频...

    Android开发摄像头SurfaceView预览 背景画图(矩形和圆形) 实现(双surfaceview,顶层画矩形框,底层预览视频)

    Android开发摄像头SurfaceView预览 背景画图(矩形和圆形) 实现(双surfaceview,顶层画矩形框,底层预览视频); UI:三个按钮 预览 摄像 图片保存,预览界面 可以显示(矩形和圆形等图画)

    Android SurfaceView 实现实时显示摄像头视频

    `SurfaceView`包含一个独立的渲染表面,它位于窗口管理器的单独层上,与应用程序的其他UI组件分离开来。这种设计使得视频帧可以快速地绘制到屏幕上,减少了延迟,从而实现流畅的视频播放体验。 实现步骤如下: 1. ...

    android-SurfaceView 测试Demo

    在Android平台上,SurfaceView是一种特殊的View,用于处理高性能、低延迟的图形绘制,尤其是在开发游戏或者视频播放等需要高效刷新率的应用时。本测试Demo旨在展示如何有效地利用SurfaceView进行游戏开发。以下是对...

    surfaceView +camera2 实现拍照功能

    在Android平台上,实现拍照功能是常见的需求,尤其是在开发涉及图像处理和人脸识别的...开发者需要深入理解这两个组件的原理,并结合Android的生命周期管理和事件处理机制,才能创建出稳定、高效且用户友好的拍照应用。

    android之surfaceview学习示例

    首先,SurfaceView拥有自己的Surface对象,它位于窗口的最底层,直接与硬件交互,允许在主线程之外进行绘制操作,避免了UI线程阻塞,提高了渲染效率。这使得SurfaceView特别适合处理高帧率的图形内容。 其次,...

    android View、SurfaceView Demo

    在Android开发中,View和SurfaceView是两种非常重要的视图组件,它们被广泛用于构建用户界面和处理图形绘制。这两个类都是Android系统提供用来显示动态内容的机制,但它们之间存在一些关键的区别。 **View组件** ...

    surfaceview 多点触控移动放大缩小

    SurfaceView不同于普通的View,它拥有自己的Surface对象,可以独立于UI线程进行渲染,避免了因为复杂的图形计算导致主线程阻塞,提升了性能。它通常用于需要连续、高性能渲染的应用,如游戏、视频播放等。 2. 触摸...

    Android SurfaceView使用Demo

    **Android SurfaceView 使用详解** `SurfaceView` 是 Android 系统提供的一种特殊的视图组件,它允许开发者在应用程序中创建高性能的图形界面,比如游戏、视频播放器等需要连续更新图像的应用。`SurfaceView` 提供...

    android MediaPlayer+SurfaceView实现播放

    在Android开发中,多媒体播放是常见的功能之一,`MediaPlayer` 和 `SurfaceView` 的结合使用是实现视频播放的标准方式。本篇文章将详细讲解如何利用这两个组件来构建一个视频播放器。 首先,`MediaPlayer` 是...

Global site tag (gtag.js) - Google Analytics