`
lovehui0228
  • 浏览: 100268 次
  • 性别: 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预览 背景画图(矩形和圆形) 实现(双surfaceview,顶层画矩形框,底层预览视频)

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

    android自定义相机SurfaceView形式

    android自定义相机SurfaceView形式,SurfaceView是一个功能强大的控件,它拥有独立的绘图表面(不与其宿主窗口共享同一个绘图表面)。由于其拥有独立的绘图表面,因此SurfaceView的UI就可以在一个独立的线程中进行...

    为何SurfaceView能够在非UI线程中刷新界面(内容为代码的demo而并非文档)

    重点讲解为什么普通view不能在非UI线程刷新界面,而SurfaceView可以.内容为代码的demo而并非文档

    android使用surfaceview+MediaPlayer播放视频

    一般来说,UI对刷新都需要在UI线程中完成,但是,surfaceview可以在非UI线程中完成刷新。这样以来就很方便了,比如在线播放,就不需要自己去写handler来实现两个线程之间的通信了,直接可以在非UI线程中播放

    Android跨进程更新UI

    使用android AIDL 方式实现跨进程更新UI demo(仅包含src文件夹下的,不包含构建脚本,建议别下,去另一个资源中下载),相关博客地址https://blog.csdn.net/CrazyMo_/article/details/89674879

    Android编程之SurfaceView实例详解

    本文实例讲述了Android编程之SurfaceView用法。分享给大家供大家参考,具体如下: 关于surfaceView相关知识: View和SurfaceView主要区别: 1. View只能在UI线程中刷新,而SurfaceView可以在子线程中刷新 2. ...

    Android开发中的Surface库及用其制作播放器UI的例子

    主要介绍了Android开发中的Surface库及用其制作播放器界面的例子,利用SurfaceView和SurfaceHolder可以高效地绘制和控制图形界面,需要的朋友可以参考下

    android游戏开发之飞机案例

    基于android2.2平台的一个飞机类小游戏的源代码, 利用surfaceview做的UI,另外还采用飞机类游戏 的常用算法,MVC模式面向对象编程。

    Android App中使用SurfaceView制作多线程动画的实例讲解

    如果需要在另外的线程绘制界面、需要迅速的更新界面或则渲染UI界面需要较长的时间,这种情况就要使用SurfaceView了。SurfaceView中包含一个Surface对象,而Surface是可以在后台线程中绘制的。SurfaceView的性质决定...

    安卓源码包android 动画效果Android 烟花效果源码等21个合集.zip

    Android Layout UI 首页加载过渡动画,星期变化动画.rar android 仿真翻页效果.rar Android 烟花效果源码.zip Android仿苹果的上下翻页效果.rar Android使用SurfaceView实现墨迹天气的风车效果.zip animation的结合...

    Android中利用SurfaceView制作抽奖转盘的全流程攻略

    今天给大家带来SurfaceView的一个实战案例,话说自定义View也是各种写,一直没有写过SurfaceView,这个玩意是什么东西?什么时候用比较好呢? 可以看到SurfaceView也是继承了View,但是我们并不需要去实现它的draw...

    Android应用源码安卓源码(172个合集).zip

    Android应用源码安卓源码(172个...VIEW双缓冲与SurfaceView比较.zip weibo4andriod-2011-01-14.zip WordPress for Android zirco-browser浏览器源码.rar Zirco-browser:超越海豚的开源浏览器.rar zz-doctor中医大夫助

    Android讲义_PDF_by高焕堂(1)

    A01_Android的软硬整合潮流 A02_Android四大组件 A03_Android的进程和IPC机制 A04_Android的线程模式 A05_Android的软硬整合流程 A06_认识Android的UI...A07_SurfaceView与UI多线程与2D特效 A08_DB与ContentProvider

    Android 仿抖音APP下拉刷新功能.rar

    Android 仿抖音APP下拉刷新功能,首先分析这个效果的实现思路,大致如下:  1、上拉时页面有翻页效果,可以用scrollview的pagingEnabled来实现,也就是说列表页不管你用tableview还是collectionview,只要每个cell...

    台湾高焕堂Android讲义

    17.如何使用SurfaceView计时绘点或线.doc 18.从Instance-5554发送SMS给Instance-5556.doc 19.深刻解析Android的AIDL界面.doc 20.认识so里的JNI_OnLoad()函数.doc 21.认识软硬整合设计样式.doc 22.从Template Method...

    android 快速翻书

    要快速更新畫面的話,可以使用android.view.SurfaceView 照比較正常的作法, 如果不是做Game之類的應該通常會新增thread處理工作後, 使用handler傳送msg去View#invalidate畫面, 或是在非UI thread呼叫View#...

    Android加载SVGA图片

    Android端最初的SVGA Player是通过继承SurfaceView(TextureView)实现的的,但是SurfaceView在硬件加速的情况下只能独立于UI层级(在最顶或者最底),如果不开启硬件加速渲染呢?效果会变得非常感人。并且在使用...

    《Android应用开发揭秘》附带光盘代码.

     15.6 AndroidUI优化  15.7 其他优化  15.7.1 zipalign  15.7.2 图片优化  15.8 小结  第五部分 扩展篇  第16章 Android NDK开发  16.1 AndroidNDK简介  16.2 安装和配置NDK开发环境  16.2.1 系统和软件...

    基于Android的SurfaceView控件的黑白块游戏.zip

    【项目资源】:包含前端、后端、移动开发、操作系统...Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes

    Android应用开发揭秘pdf高清版

    15.6 AndroidUI优化 15.7 其他优化 15.7.1 zipalign 15.7.2 图片优化 15.8 小结 第五部分 扩展篇 第16章 Android NDK开发 16.1 AndroidNDK简介 16.2 安装和配置NDK开发环境 16.2.1 系统和软件需求 16.2.2 NDK开发...

Global site tag (gtag.js) - Google Analytics