`
hemowolf
  • 浏览: 154332 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

ColorDrawable draw方法的兼容问题

阅读更多

    android内置的ProgressBar控件里不少的方法充斥着交叉的synchronized锁。很多时候刷进度导致ProgressBar显示不出来,也没见哪里设置隐藏的,估计是锁导致的,浪费时间看源码。android ui的更新本来就限制死在ui线程里,乱加神码锁,脑残!解决问题只能自己画进度条了。

   UI元素比较简单,不需要动画、SecondaryProgress,所以可以简单的按照进度百分比设置一个Drawable的宽度再画在view视图上。实现好后也没发现神码问题,版本上了一段时间偶然才在一台2.3 系统设备上发现所有的进度条是100%的。调试了很长时间,进度、宽度计算都是没有问题的。找来2.3 ColorDrawable的源码才发现它的实现是画满屏宽的。又是个坑,高歌猛进的android挖了多少坑啊。兼容的解决的方法是在绘制时同时用canvas的clipRect方法设置绘制区域即可。

	    mBounds.set(0, 0, width, getMeasuredHeight());
	    mDrawable.setBounds(mBounds);
	    canvas.clipRect(mBounds);
	    mDrawable.draw(canvas);

 

分享到:
评论

相关推荐

    本示例绘制位图,分两种方式1. 绘制Bitmap对象2.使用Drawable.draw方法绘制位图

    本示例 演示绘制位图,分两种方式 1. 绘制Bitmap对象 2.使用Drawable.draw方法绘制位图 详情请参见 http://blog.csdn.net/aduovip/article/details/6722949

    BitmapData.draw方法

    BitmapData.draw方法是ActionScript 3.0中的一个重要功能,主要用在Adobe Flash环境中处理位图数据。这个方法允许开发者将一个显示对象(如Sprite、MovieClip或Bitmap)的可视内容复制到BitmapData对象上,从而实现...

    XNA 4.0 spriteBatch的draw方法详解·

    《XNA 4.0 spriteBatch的draw方法详解》 在XNA 4.0游戏开发框架中,SpriteBatch是用于2D图形渲染的核心类,它提供了丰富的draw方法,以满足各种2D图形绘制的需求。本文将详细介绍SpriteBatch的draw方法,帮助开发者...

    Android canvas drawBitmap方法详解及实例

    本文将深入解析`drawBitmap()`方法的参数及其用法,并通过实例来说明如何使用该方法。 `drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint)`是`drawBitmap()`方法的一个重载版本,其参数含义如下: 1. *...

    Method-Draw, 方法绘制,SVG编辑器的操作方法.zip

    Method-Draw, 方法绘制,SVG编辑器的操作方法 方法绘图是SVG编辑的一个 fork,一个基于web的SVG编辑器。方法绘制的目的是提高SVG编辑的可用性和用户体验。 它删除一些特性,例如交换图层和线帽/角以获得更简单和愉快...

    drawio.js源码

    7. **导入/导出功能**:源码中包含了各种导入导出模块,如XML解析和生成,这些模块确保了draw.io与其他软件的兼容性。 在实际应用中,drawio.js不仅限于在线编辑,还可以嵌入到其他Web应用中,提供图形编辑功能。...

    android Drawable分类汇总

    ColorDrawable colorDrawable = new ColorDrawable(Color.RED); ``` 2. **`GradientDrawable`**:这种类型的 `Drawable` 可以用来实现渐变效果,包括线性渐变、放射渐变和平铺渐变。与 `ColorDrawable` 相比,`...

    Qt+DirectDraw实现

    考虑到DirectDraw主要是为Windows设计的,需要处理可能出现的兼容性问题,特别是对于不支持DirectDraw的旧硬件。此外,良好的错误处理机制能确保程序在出现问题时能优雅地恢复或提示用户。 8. **资源管理** 在...

    DirectDraw中文手册

    9. **兼容性和移植性**:由于DirectDraw是旧版DirectX的一部分,手册会讨论如何处理不同版本的DirectDraw之间的兼容性问题,以及如何将代码迁移到更新的DirectX组件,如Direct3D。 10. **示例代码**:通常手册会...

    基于MFC的DirectDraw高速图形绘制方法与应用.pdf

    ### 基于MFC的DirectDraw高速图形绘制方法与应用 #### 摘要与背景 在工业控制环境及需要高实时性的场景下,传统的Windows图形设备接口(GDI)绘制方法往往不能满足高性能需求,尤其是在处理复杂图形时,会遇到闪烁...

    DRAW_COLOR_ARROW - MetaTrader 5脚本.zip

    《DRAW_COLOR_ARROW - MetaTrader 5 脚本深度解析》 在金融交易领域,MetaTrader 5(MT5)是一款广泛使用的交易平台,它提供了丰富的技术分析和自动化交易功能。"DRAW_COLOR_ARROW"是一个特定的脚本,专为在MT5图表...

    draw.io画图工具和一些模板。

    6. **文件兼容性**:draw.io可以导入和导出多种格式的文件,如SVG、PNG、PDF、XML以及常见的图表格式,方便与他人分享和在其他软件中使用。 7. **云存储**:用户可以选择将文件保存到Google Drive、Dropbox等云端...

    directDraw

    然而,随着DirectX的不断进化,DirectDraw在DirectX 9之后逐渐被Direct3D取代,Direct3D提供了更强大的3D图形处理能力和向后兼容DirectDraw的功能。尽管如此,理解DirectDraw的基本原理和使用方法对于理解现代图形...

    cesium-draw_cesium_draw_

    Cesium Draw是一款基于Cesium的标绘组件,它为用户提供了在三维地球场景上进行绘制、编辑和管理地理对象的功能。Cesium是一个开源的JavaScript库,用于构建交互式的3D地球浏览器,支持WebGL,可以展示全球高精度地形...

    DRAW_COLOR_BARS - MetaTrader 5脚本.zip

    《DRAW_COLOR_BARS - MetaTrader 5脚本详解》 在金融交易领域,MetaTrader 5(MT5)是一款广泛使用的交易平台,它提供了丰富的技术分析工具和自动化交易功能。其中,自定义脚本是MT5的一大特色,允许交易者根据个人...

    drawio obsidian 安装包

    它们分别解决了图表表达和知识组织的问题,通过无缝集成,让用户能够在同一个环境中完成复杂的思考和创作任务。如果你还在寻找一款能够帮助你整理思绪、提升效率的工具,那么Draw.io和Obsidian无疑是一个值得尝试的...

    c# Draw 函数 用法

    在C#编程中,`Draw`函数是用于在图形用户界面(GUI)上绘制各种元素的重要方法,尤其在Windows Forms和WPF应用中。本文将详细介绍`Draw`函数的使用,以及与之相关的绘图概念和技术,非常适合初学者学习。 首先,`...

    DirectDraw编程方法与技巧

    DirectDraw不仅兼容现有的Windows应用程序和驱动程序,还支持多种显示卡,从简单的VGA到高级的图形加速卡,包括支持图像剪裁、拉伸和非标准格式图像的显示卡。DirectDraw通过抽象显示卡的硬件功能,以设备无关的方式...

    DRAW_COLOR_ZIGZAG - MetaTrader 5脚本.zip

    《DRAW_COLOR_ZIGZAG:MetaTrader 5脚本深度解析》 在金融交易领域,自动化交易系统扮演着越来越重要的角色,MetaTrader 5作为一款强大的交易平台,为交易者提供了丰富的自定义工具和编程语言MQL5,使得交易策略的...

    Android Drawable必备知识小结

    在XML中使用`<color>`标签定义,或通过代码`new ColorDrawable(int color)`创建。 3. **NinePatchDrawable**:九宫格图,允许图片在特定区域内自由缩放而不失真,主要用于按钮、背景等需要动态调整大小的元素。使用...

Global site tag (gtag.js) - Google Analytics