近期的项目,有个需求须要使用条状图显示比例,而且右对齐,见下图:

我想到了使用进度条,这样不就不须要在代码动态绘制条状了,省了非常多活。

那么进度条如何从右向左显示呢?

方案一:

将ProgressBar的前背景反着用,将前景色设置为和整个大背景同一色,将背景设置为你要的条状图颜色,这样就看不出实际的进度,看到的是进度背景,在视觉上看上去就是右对齐了。实际上还是原来那个进度条。

缺点:我这个进度条是放在ListView的item中的,点击listview,由于listview有选中的背景显示出来,这样ProgressBar的前景色就原形毕露了。

方案二:

重写ProgressBar的onDraw函数,通过旋转画布(Canvas)180度,达到自右至左的进度效果。这个方法理论上可行,网上有人旋转了90度,是能够的,參考地址:

http://www.xprogrammer.com/234.html
http://www.verydemo.com/demo_c131_i3507.html

关键代码:

@Override
protected synchronized void onDraw(Canvas canvas) {switch (curr_mode)
{case MODE_BOTTOM:canvas.rotate(-90);canvas.translate(-canvas.getHeight(), 0);super.onDraw(canvas);break;case MODE_TOP:canvas.rotate(90,canvas.getWidth(),0);canvas.translate(10,0);super.onDraw(canvas);break;
}

此方案缺点:须要计算旋转中心点,比較复杂,因为对canvas旋转不熟,我终于没能旋转180度成功,哪位大神搞定了告诉我一声,共同学习

方案三:

此方案是最优方案,简单高效!利用Drawable本身的属性,反向绘制进度条。这里将backgroud凝视掉,不显示backgroud,然后对前景色加上两个关键属性:android:clipOrientation="horizontal",android:gravity="right",这样就能做到从右到左画进度条。

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" ><!--  <itemandroid:id="@android:id/background"android:drawable="@drawable/progress_bg"/> --><item android:id="@android:id/progress"><clipandroid:clipOrientation="horizontal"android:gravity="right" ><scale android:drawable="@drawable/progress_progress" /></clip></item></layer-list>

顺便学习一下Drawable的其它属性:

http://www.cnblogs.com/andriod-html5/archive/2012/04/24/2539432.html

 android:clipOrientation=["horizontal" | "vertical"]android:gravity=["top" | "bottom" | "left" | "right" | "center_vertical" |"fill_vertical" | "center_horizontal" | "fill_horizontal" |"center" | "fill" | "clip_vertical" | "clip_horizontal"] />

把对象放到容器的右边,不改变它的尺寸。当clipOrientation被设置为horizontal时,会在可绘制资源的左边进行裁剪。

Android ProgressBar 反向进度条/进度条从右到左走相关推荐

  1. android 反向进度条,Android ProgressBar 反向进度条/进度条从右到左走

    最近的项目,有个需求需要使用条状图显示比例,并且右对齐,见下图: 我想到了使用进度条,这样不就不需要在代码动态绘制条状了,省了很多活. 那么进度条怎样从右向左显示呢? 方案一: 将ProgressBa ...

  2. 安卓开发——ProgressBar反向进度条(进度条从右向左走)

    使用drawable资源文件,通过设置android:clipOrientation="horizontal",android:gravity="right"这 ...

  3. android 進度條_Android ProgressBar 反向進度條/進度條從右到左走

    最近的項目,有個需求需要使用條狀圖顯示比例,並且右對齊,見下圖: 我想到了使用進度條,這樣不就不需要在代碼動態繪制條狀了,省了很多活. 那麼進度條怎樣從右向左顯示呢? 方案一: 將ProgressBa ...

  4. android tablerow 间隔,android-如何使TableRow从右到左

    如何从右到左向TableRow添加视图?默认模式为从左到右.我在TableLayout和TableRow中都尝试了android:gravity =" right"和android ...

  5. Android反向进度条(ProgressBar)的实现——从右到左的进度条

    Android反向进度条(ProgressBar)--从右到左的进度条 前言: 最近在项目中需要使用到反向进度条,在网上查了些资料,感觉对自己作用不大,于是自定义样式,实现了反向进度条. 1. 第一步 ...

  6. android 4.2.2进度条,进度条(ProgressBar)——Mars Android开发视频之第一季第十七集(重)...

    1· Android中的进度条 安卓四大类进度条: 默认 传统进度条 播放进度条 评分进度条 2· 各种进度条之间的关系 所有进度条都继承自ProgressBar 3· ProgressBar进度条的 ...

  7. android ProgressBar 进度条demo

    ProgressBar Demo 进度条没有什么好讲解的,就是几个方法,熟悉了就ok.直接上代码. activity_main.xml <?xml version="1.0" ...

  8. [Android]ProgressBar进度条

    ProgressBar ProgressBar是进度条控件,ProgressBar的应用场景很多,比如用户登录时,后台发送请求,以及进行等待服务器返回信息等一些比较耗时的操作.这个时候如果没有提示,用 ...

  9. android 第三方圆弧进度条,android 可配置的圆弧进度条

    Arc ProgressBar Configurable 圆弧环形进度条 DEMO Attributes name format description borderWidth integer 圆弧边 ...

最新文章

  1. jQuery中.html(“xxx”)和.append(xxx)的区别和不同
  2. django3.2.8使用simpleui注意事项
  3. boost::mp11::mp_map_contains相关用法的测试程序
  4. OpenGL point shadow点阴影的实例
  5. python面向对象思路_python面向对象方法
  6. C++ 拷贝构造 与 赋值运算符重载
  7. tnsnames.ora 的编写
  8. 如何处理不能复现的bug?软件测试工程师避坑指南
  9. 4.Jenkins 2 权威指南 --- 通知与报告
  10. Ubuntu 19.04 缺少libpng12.so.0
  11. 团队管理19--团队分工
  12. 免杀后门之MSFVeil-Evasion的完美结合
  13. Hulu热招|广告智能团队
  14. AT指令判断NBIoT网络质量
  15. mac下面如何修改只读文件(Read-only file system)
  16. centos8之systemd管理服务开机自启动
  17. 美国大学生足球联赛数据集football——DeepWalk算法
  18. **Maven web项目报错**-web.xml is missing and <failOnMissingWebXml> is set to true 原因:生成的maven web项目webap
  19. Linux - dsta 命令详解
  20. matlab simhash,最大非负的序列和 - 轻舞凋零的个人空间 - OSCHINA - 中文开源技术交流社区...

热门文章

  1. VTK:几何对象之Point
  2. OpenCV纹理对象的实时姿态估计
  3. Qt Creator建立和运行
  4. C语言求最大公约数欧几里得Euclid算法(附完整源码)
  5. C语言实现AVL树(附完整源码)
  6. QT的QAxFactory类的使用
  7. 经典C语言程序100例之四五
  8. python基于web可视化_Python Selenium实现无可视化界面
  9. 匿名函数,结合闭包的写法,js对象的案例
  10. Ubuntu下装QQ2014(http://my.oschina.net/oscfox/blog/315951)