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

 

分享到:
评论

相关推荐

    WorkingWithDrawables

    10. **Drawable的兼容性问题** 考虑到Android版本和设备差异,应使用`AppCompat`库中的`AppCompatDrawableManager`和`AppCompatResources`来处理Drawable,确保在旧版本Android上的兼容性。 通过理解并熟练运用...

    制作android自适应屏幕大小的图片方法.docx

    本文将详细介绍如何使用不同的Drawable资源来实现图片的自适应,特别是通过使用Nine-Patch文件来解决不同设备上的显示问题。 #### 一、Drawable Resources概述 在Android开发中,Drawable资源是一种非常常见的资源...

    很多项目中用到了用户头像,但是系统的ImageView 是四方形的 , 把bitmap处理成圆角的

    在实际开发中,选择哪种方法取决于项目的具体需求和兼容性考虑。例如,如果需要支持低版本Android,可能需要避免使用`VectorDrawable`。而如果项目对性能要求较高,自定义View并优化绘制过程可能是更好的选择。 ...

    BorderImageView

    7. **兼容性问题** 当处理不同屏幕尺寸和密度时,确保`BorderImageView`的边框尺寸能在各种设备上保持一致,可能需要进行密度转换。 通过上述步骤,我们可以创建一个功能完善的`BorderImageView`,它在保持`...

    圆形imageView

    5. **兼容性考虑**:为了确保在各种设备和API级别上都能正常工作,我们需要考虑兼容性问题。例如,使用`DrawableCompat`来处理API 21以下版本的边框颜色。 6. **性能优化**:考虑到性能,我们可以在`...

    Android 图片圆弧 和 圆形

    6. **兼容性问题** 考虑到Android设备的多样性,确保你的代码在不同版本的Android系统上都能正常工作。对于API等级较低的设备,可能需要额外处理或使用兼容库。 通过以上方法,你可以轻松地在Android应用中实现...

    Android-RoundCornerProgressBar

    图标可能需要通过`Bitmap`或者`Drawable`对象来加载,并通过`drawBitmap()`或`drawDrawable()`方法绘制在适当的位置。 ### 4. 进度条样式与颜色 开发者可以通过设置颜色资源或颜色值来改变进度条的颜色,包括背景色...

Global site tag (gtag.js) - Google Analytics