`
hemowolf
  • 浏览: 151594 次
  • 性别: 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);

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics