zoukankan      html  css  js  c++  java
  • android surfaceview 入门介绍

    由于工作中需自定义控件,以前没写过。

    开始时,实用view 实现了,经理说不好,担心效率低,要求每秒需要刷新10次左右。

    然后,学习使用  surfaceview。

    看了网上简单的Demo,找到himi的教程很不错。

    简单说就是,继承 surfaceview 实现callback接口。

    构造-加载数据,将资源图片读取为bitmap

    创建-将背景bitmap使用 canvas  画出来

    处理点击事件,保存消息队列

    创建线程处理消息队列-(需要考虑同步)

    =============================

    需要注意点:

    1,为了优化,每次更新指定区域,使用Canvas canvas = mHolder.lockCanvas(rect);指定一个区间

      这里需要注意!如果想一次更新多个位置,或者同一个rect 内 更新多个图片,需要 

    Canvas canvas = mHolder.lockCanvas(rect);
    
    drawYouBitmap();
    
    mHolder.unlockCanvasAndPost(canvas); 
    

      一次性画完再:

    mHolder.unlockCanvasAndPost(canvas); 

    不然会出现闪烁

    2,修改view大小,重写一个方法。。。

    还有很多,有时间再写,这个之前找到办法,现在找不到了。。

    3,多点触摸管理

    根据设备而定,模拟器没办法多点。

    我用HTCG10可以获得三个点

    根据

    x = (int) event.getX(1);
    y = (int) event.getY(1);

    可以获得第二点坐标

    获得第三个依次为:

    x = (int) event.getX(2);
    y = (int) event.getY(2);

    然后指定自己的逻辑代码处理。

    另外,如果点击事件,move到自定义view外面去,就无法获得坐标!

    所以,控制view大小很重要。

  • 相关阅读:
    编译 | 更新标准库_交叉编译工具链
    论文 | 图文_学科
    编码 | 二进制格式设计方案
    图片 | 图片上传管理
    进程 | 查询进程中包含多少线程
    第二周02:Fusion ICP逐帧融合
    exe文件当前目录搜索文件
    第一周:读取XML深度数据并将其重建为三维点云
    第二周:01 ICP迭代交互
    C++文件读写(转载)
  • 原文地址:https://www.cnblogs.com/wang-xiaohao/p/surfaceview.html
Copyright © 2011-2022 走看看