当前位置: 首页 > news >正文

网站建设开发案例教程视频教程泰安深度网络科技有限公司

网站建设开发案例教程视频教程,泰安深度网络科技有限公司,手机版网站开发公司,产品vi设计都包括什么在 Android 开发中#xff0c;ImageView 是一个用户界面控件#xff0c;用于在应用中显示图片。它是 Android UI 组件库中一个非常基础和常用的部分。使用 ImageView#xff0c;你可以在屏幕上显示来自不同来源的图像#xff0c;比如位图文件、绘图资源 drawable、网络来源…在 Android 开发中ImageView 是一个用户界面控件用于在应用中显示图片。它是 Android UI 组件库中一个非常基础和常用的部分。使用 ImageView你可以在屏幕上显示来自不同来源的图像比如位图文件、绘图资源 drawable、网络来源或者相机拍摄的图片。 在实际的开发过程中我们会在 Java 或 Kotlin 代码中调用 setImageResource()、setImageBitmap()、setImageDrawable() 等方法来设置或改变图片。 但我最近在检测应用的性能时发现 imageView 在加载图片竟有一些耗时于是进入源码来看看这几个给 imageView 设置图片的方法都有什么区别 imageView.setImageResource() public void setImageResource(DrawableRes int resId) {final int oldWidth mDrawableWidth;final int oldHeight mDrawableHeight;updateDrawable(null);mResource resId;mUri null;resolveUri();if (oldWidth ! mDrawableWidth || oldHeight ! mDrawableHeight) {requestLayout();}invalidate();} 在 setImageResource 方法中首先 updateDrawable() 做了重置操作后面给成员变量 mResource 赋值接着执行 resolveUri() 这个方法对 mResource 进行解析 private void resolveUri() {Drawable d null;if (mResource ! 0) {try {// 根据传进来的资源ID去获取对应的Drawable耗时d mContext.getDrawable(mResource); } catch (Exception e) {// Dont try again.mResource 0;}} else if (mUri ! null) {d getDrawableFromUri(mUri);if (d null) {// Dont try again.mUri null;}} else {return;}updateDrawable(d);} resolveUri() 方法中会将刚刚传进来的 mResource 去获取对应的 Drawable获取到 Drawble 后通过调用 updateDrawable() 来更新 imageView 中的图像 imageView.setImageBitmap() public void setImageBitmap(Bitmap bm) {mDrawable null;if (mRecycleableBitmapDrawable null) {mRecycleableBitmapDrawable new BitmapDrawable(mContext.getResources(), bm);} else {mRecycleableBitmapDrawable.setBitmap(bm);}setImageDrawable(mRecycleableBitmapDrawable);} setImageBitmap 代码非常少首先确定有一个 BitmapDrawable 对象将传进来的 Bitmap 赋值于此然后调用 setImageDrawable() 方法 imageView.setImageDrawable() public void setImageDrawable(Nullable Drawable drawable) {if (mDrawable ! drawable) {mResource 0;mUri null;final int oldWidth mDrawableWidth;final int oldHeight mDrawableHeight;updateDrawable(drawable);if (oldWidth ! mDrawableWidth || oldHeight ! mDrawableHeight) {requestLayout();}invalidate();}} 在 setImageDrawable 方法中直接将传进来的 Drawable 来调用 updateDrawable() 方法来更新imageView() 中的图像 总结 用这三种方法去更新 imageView 最终都会调用到 updateDrawable() 这个方法但是在 setImageResource() 中的 resolveUri() 方法涉及到了资源获取mContext.getDrawable()这个是耗时的所以在短时间内调用大量的 setImageResource 可能会造成应用卡顿。 解决方法将资源 ID 获取到的 Drawable 进行缓存或者设置为成员变量再调用 setImageDrawable() 即可。这样子能避免资源获取而造成的卡顿。 此外ImageView 还提供了其他方法如 setImageURI(Uri uri)用于通过 URI 设置图像但无论哪种设置图像的方法最终都是通过 Drawable 来实现图像的渲染。所以在短时间内大量设置imageView 图像时需要优先缓存 Drawable 来加载图像来保证性能是最佳的
http://www.w-s-a.com/news/770027/

相关文章:

  • 支持api网站开发wordpress排版Markdown
  • 赤峰做网站的logo设计软件在线制作
  • iis网站批量导入苏州最新新闻事件今天
  • 甘肃省住房和城乡建设厅注册中心网站首页沈阳专业关键词推广
  • 网站怎么能在百度搜到网站开发费怎么做会计分录
  • 嘉定专业网站制作公司七星彩网站开发
  • 网站建设人员培训企业网站开发模型图
  • 自己开发一个网站应该怎么做国外设计网站 绿色的
  • 南昌外贸网站设计推广任务发布平台app
  • 建立网站成本书店网站建设可行性分析
  • 高端网站设计官网乌海学校网站建设
  • 哪些网站适合新手编程做项目优秀网页设计赏析
  • 永州网站seo德阳网站建设优化
  • 网站建设高端网站本地建设网站软件下载
  • 网站后台账号密码破解杭州酒店网站设计公司推荐
  • 和县网站开发秦皇岛建设工程信息网站
  • 国外网站用什么dns好建一个下载网站要什么cms系统
  • 礼品工艺品网站建设手机做网站哪家好
  • 泉州网站建设方案维护怎样选择网站建设
  • 江苏建站速度忿先进的网站建设
  • 广州天河建站公司com域名注册多少钱
  • 成都网站建设推广好vs2013如何做网站
  • 茶叶网站建设模板企业网站备案要多少钱
  • 怎么查网站找谁做的win主机伪静态规则 wordpress
  • 轻云服务器菁英版 多个网站北京it外包服务商
  • 售后服务 网站建设阳江seo优化
  • 网站建设后怎么赚钱wordpress调用导航栏
  • 特产网站设计六色网站
  • 服务器网站备案做网站公司如何赚钱
  • 怎样进行站点优化荣成市有做网站的吗