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大小很重要。

  • 相关阅读:
    数量关系
    笨办法学python问题记录
    CSS布局与定位
    python学习 预备篇
    基于hexo搭建个人博客
    CSS常用样式
    计算机组成原理(期末篇)
    Codeblock错误提示栏隐藏
    Markdown标记语言
    笨办法学python(不同版本的python代码差别)
  • 原文地址:https://www.cnblogs.com/wang-xiaohao/p/surfaceview.html
Copyright © 2011-2022 走看看