android用户界面编程技巧——更新请求
- 情况说明
当程序的数据有改变的时候就需要更新屏幕,这个时候我们就采用invalidata方法。这个方法简单方便,而当我们调用这个方法的时候我们整个视图都发生了更新。而我们的数据一般情况下只是在某一个区域内做出改变,这个时候我们再去更新其他没有数据改变的区域就很浪费资源。这个时候我们考虑如何优化。
- 解决办法
Android提供系统了两个局部更新数据的方法:
invalidate(Rect dirty);
invalidate(int left, int top, int right,int bottom);
利用这两个方法我们就可以只对需要更新的区域做出更新,其他不需要数据更新的区域就不会发生更新。这样节省了很多资源。
- 实例分析:
在屏幕上触摸移动小图标。
- 方法一:采用最简单的编码方法在每次响应移动事件的时候调用invalidate方法。
如图所示程序需要更新曲线框中的所有区域,也就是整个屏幕,而其中其他五个组件没有变化是不需要更新的。
- 方法二:移动小圆圈改变的区域,其他区域不做更新。
如图所示程序只需要更新红色圆圈和粉红色圆圈所构成的矩形区域,即图中的虚线区域。
- 效率展示:
方法一每秒更新18个frame
方法二 每秒48 个frame 更新
从图中可以看出局部更新的两个方法的效率是相同的。
欢迎大家通过cmd100 中国手机开发者联盟 交流和讨论。我的id是琴弦。
转载于:https://www.cnblogs.com/JerryBlog/archive/2011/01/06/android_refresh_request.html
android用户界面编程技巧——更新请求相关推荐
- Android Studio编程技巧
在Google官方于日前举办的Android开发者峰会(Android Dev Summit)上,Android Studio团队做了"Android Studio For Experts& ...
- android 初始化类,Android 常用编程技巧/Java类的初始化顺序 (静态变量、静态初始化块、变量、初始化块、构造器)...
1.设置屏幕的亮度: WindowManager.LayoutParams lp=getWindow().getAttributes(); lp.screenBrightness=1.0f; getW ...
- Android智能手机编程笔试题,android智能手机编程
spContent=为什么学习Android手机编程?自己适合学Android开发吗?零基础能学习吗?学Android应该学哪些技术呢?本课程以"任务驱动"为中心,"用中 ...
- android: 多线程编程基础
9.1 服务是什么 服务(Service)是 Android 中实现程序后台运行的解决方案,它非常适合用于去执行那 些不需要和用户交互而且还要求长期运行的任务.服务的运行不依赖于任何用户界面,即使 ...
- Android 学习资料(持续更新)
概述 收集整理这份资料灵感来自于 trip_to_iOS, 征得同意引用了该资料的开头描述 收集整理这份资料主要帮助初学者学习 Android 开发, 希望能快速帮助到他们快速入门, 找到适合自己学习 ...
- Android智能手机编程CNU--1.概述
Android智能手机编程CNU–Android入门介绍 目录 1 智能手机的演变 2 Android操作系统的优势 3 Android的系统架构 4 Android的四个重要组件 5 Android ...
- Android 10种技巧可提升应用运行效果
随着手机平台的发展和所提供应用的提升,质量成为应用成功的最重要因素.如果那些应用无法提供强大的功能和稳定的用户体验,那就会很快被用户卸载.开发者需要记住的是,虽然Android智能手机和平板电脑的速度 ...
- Android 4编程入门经典—开发智能手机与平板电脑应用
Android 4编程入门经典 书名: Android 4编程入门经典 原书名: Beginning Android 4 Application Development 重点指数 畅销书 作者: ( ...
- Android Socket编程
花了大概两天的时间,终于把Android的Socket编程给整明白了.抽空和大家分享一下: Socket Programming on Android Socket 编程基础知识: 主要分服务器 ...
最新文章
- 蓝桥杯-本质上升序列-java
- DeepMind论文:深度压缩感知,新框架提升GAN性能
- 在Linux环境下mysql的root密码忘记解决方法
- 脑电分析系列[MNE-Python-19]| 可视化Evoked数据
- 学军中学推理社2017届招新试题
- 一天搞定HTML----标签语义化04
- Bootstrap在线编辑器简单分享
- acer软件保护卡清除工具clear_使用Windows 10内置工具释放硬盘空间的最佳方法
- md5加密算法的C(C++)代码实现
- 基于Docker快速搭建ELK
- Going Deeper in Spiking Neural Networks: VGG and Residual Architectures
- 特斯拉Model 3再次停工!这一次还是因为自动化机器人……
- Android Audio音频通路(七)
- JavaSE基础之-Calendar时间类
- PHP 开发者如何做代码审查?
- 统计软件SAS入门教程:SAS程序初步
- 微信开放平台Android常见问题
- wordpress添加Auto Highslide图片灯箱效果
- 百度蜘蛛IP功能说明初稿
- ClickHouse 之 FORMAT 应用
热门文章
- Ubuntu 16.04退出anaconda环境
- C++中4种方式把字符串和数字连接起来(转载)
- 打造超炫的专属Eclipse
- 图---邻接矩阵 建立,深度遍历,广度遍历
- 二叉树的三种遍历(递归,栈)
- git merge用法_Git 基本命令 merge 和 rebase,你真的了解吗?
- linux云存储软件,推荐5个Linux云存储解决方案
- bat 等待输入_bat-批量修改文件或者文件夹名称
- 【script】python 中文汉字与url的转换
- linux c变量命名规则,C语言中变量名及函数名的命名规则与驼峰命名法