镜像(翻转)View / ProgressBar

时间:2012-12-24 13:58:00

标签: android xml android-widget

我有一个定制的圆形进度条用于时钟上的秒计数器,我想翻转,以便时钟逆时针计数。

在这里寻找解决方案,我发现了这个:

Right to Left ProgressBar?

这显然适用于水平进度条,但我不能简单地将其旋转180度,因为这样只会将时钟移动180度,它仍然会顺时针旋转。

是否有其他方法可以镜像ProgressBar或任何View?

编辑:

刚刚找到“android:rotationY”和程序化等价物,但理想情况下需要为2.2及以上..

3 个答案:

答案 0 :(得分:4)

我只能使用XML中的属性ProgressBar来翻转scaleX

android:scaleX="-1"

这也适用于其他View

答案 1 :(得分:2)

以与水平进度条相同的方式扩展ProgressBar,但在onDraw方法中,翻转画布而不是旋转它:

public class InverseProgressBar extends ProgressBar {

public InverseProgressBar(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
}

public InverseProgressBar(Context context, AttributeSet attrs) {
    super(context, attrs);
}

public InverseProgressBar(Context context) {
    super(context);
}

@Override
protected synchronized void onDraw(Canvas canvas) {
    canvas.scale(-1f, 1f, super.getWidth() * 0.5f, super.getHeight() * 0.5f);
    super.onDraw(canvas);
}

}

答案 2 :(得分:0)

是的。在较新版本的 material design library 中,可以镜像圆形进度条:

  • 在具有此属性的布局中
    app:indicatorDirectionCircular
    
  • 或以编程方式使用此方法
    setIndicatorDirection()
    

有关详细信息,请参阅 here