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);
相关推荐
10. **Drawable的兼容性问题** 考虑到Android版本和设备差异,应使用`AppCompat`库中的`AppCompatDrawableManager`和`AppCompatResources`来处理Drawable,确保在旧版本Android上的兼容性。 通过理解并熟练运用...
本文将详细介绍如何使用不同的Drawable资源来实现图片的自适应,特别是通过使用Nine-Patch文件来解决不同设备上的显示问题。 #### 一、Drawable Resources概述 在Android开发中,Drawable资源是一种非常常见的资源...
在实际开发中,选择哪种方法取决于项目的具体需求和兼容性考虑。例如,如果需要支持低版本Android,可能需要避免使用`VectorDrawable`。而如果项目对性能要求较高,自定义View并优化绘制过程可能是更好的选择。 ...
7. **兼容性问题** 当处理不同屏幕尺寸和密度时,确保`BorderImageView`的边框尺寸能在各种设备上保持一致,可能需要进行密度转换。 通过上述步骤,我们可以创建一个功能完善的`BorderImageView`,它在保持`...
5. **兼容性考虑**:为了确保在各种设备和API级别上都能正常工作,我们需要考虑兼容性问题。例如,使用`DrawableCompat`来处理API 21以下版本的边框颜色。 6. **性能优化**:考虑到性能,我们可以在`...
6. **兼容性问题** 考虑到Android设备的多样性,确保你的代码在不同版本的Android系统上都能正常工作。对于API等级较低的设备,可能需要额外处理或使用兼容库。 通过以上方法,你可以轻松地在Android应用中实现...
图标可能需要通过`Bitmap`或者`Drawable`对象来加载,并通过`drawBitmap()`或`drawDrawable()`方法绘制在适当的位置。 ### 4. 进度条样式与颜色 开发者可以通过设置颜色资源或颜色值来改变进度条的颜色,包括背景色...