Android的绘图效率问题 (兼谈绘图机制)

Featured 2011-02-19 04:49:20
试举一个简单例子,

public void onDraw(Canvas canvas)
{
super.onDraw(canvas);

/* 在屏幕(0,0)处绘制图片mBitQQ */
GameView.drawImage(canvas, mBitQQ, 0, 0);
}



然后在一个定时线程中执行 postInvalidate();,这样会刷新这个界面。

但是,为了让操作更加流畅,我希望刷新 一小块区域(需要更新的部分,比如几个字体),不然的话我怕系统跟不上。
不知道有没有什么方法?类似VC++的 InvalidateRect();那种的。

大家有什么相关知识都可以在这里说说!谢谢了!
...全文
564 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
sinosoft_nimei 2013-03-20
  • 打赏
  • 举报
回复
来学习绘图的!
yuandaobo 2013-03-19
  • 打赏
  • 举报
回复
我在用postInvalidate(int left, int top, int right, int bottom)刷新时,存在问题,感觉如果更新区域小,却没有刷新View
  • 打赏
  • 举报
回复
View.postInvalidateDelayed方法不是有这个功能嘛
javasoldiers 2011-03-04
  • 打赏
  • 举报
回复
用postInvalidate(int left, int top, int right, int bottom)
左上角与右下角定位一个矩形框进行局部刷新
DrSmart 2011-02-19
  • 打赏
  • 举报
回复
[Quote=引用楼主 featured 的回复:]
试举一个简单例子,

public void onDraw(Canvas canvas)
{
super.onDraw(canvas);

/* 在屏幕(0,0)处绘制图片mBitQQ */
GameView.drawImage(canvas, mBitQQ, 0, 0);
}



然后在一个定时线程中执行 postInvalidate();,这样会刷新这个界面。

……
[/Quote]

有啊,使用下面这个重载版本
postInvalidate(int left, int top, int right, int bottom)
leafsoar 2011-02-19
  • 打赏
  • 举报
回复
NDK
如果牵扯到效率问题还是用本地代码吧
ameyume 2011-02-19
  • 打赏
  • 举报
回复
用Canvas的派生类GameCanvas类的flushGraphics方法可以刷新指定区域。
http://blog.163.com/zhang75784326@126/blog/static/11950668720105127137/

80,356

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧