如何将Android UI元素显示为180度旋转

3
我想在Android的xml布局文件上显示一些UI元素。我正在制作一个应用程序,两个玩家可以坐在移动设备的两端,互相对抗。
因此需要显示一些旋转了180度的按钮。
这是可能的吗?我尝试过android:gravity,但这没有起作用。
谢谢你的帮助, 马丁
4个回答

5

我建议您查看此线程,该线程讨论了类似的问题。虽然该问题是关于TextView组件的,但Button扩展了TextView,因此将其适应到按钮上应该很容易。该问题的提问者最终采用了以下onDraw()方法:

@Override
public void onDraw(Canvas canvas) {
    //This saves off the matrix that the canvas applies to draws, so it can be restored later. 
    canvas.save(); 

    //now we change the matrix
    //We need to rotate around the center of our text
    //Otherwise it rotates around the origin, and that's bad. 
    float py = this.getHeight()/2.0f;
    float px = this.getWidth()/2.0f;
    canvas.rotate(180, px, py); 

    //draw the text with the matrix applied. 
    super.onDraw(canvas); 

    //restore the old matrix. 
    canvas.restore(); 
}

我还要说的是,我写了一个实现了onDraw()方法的类,它运行得非常好。


0

您也可以使用此示例。它更好,因为您不需要通过 Y 轴移动项目。

canvas.save();

canvas.scale(1f, -1f, super.getWidth() * 0.5f,
    super.getHeight() * 0.5f);

canvas.drawBitmap(arrow,
    rect.centerX() - (arrow.getWidth() * 0.5F), rect.bottom,
    null);

canvas.restore();

0
需要展示一些按钮旋转180度。
很抱歉,这不被任何现有的Android小部件支持。

但是这里已经实现了:http://www.androidpit.de/de/android/market/apps/app/coolcherrytrees.games.reactor/2-Spieler-Reaktor - Martin
@Martin:你有什么证据证明那些是Android小部件吗?我猜想这是使用2D图形和Canvas API实现的。 - CommonsWare
好的,那我也应该使用画布(canvas)。我从未使用过它。在上面绘制4个按钮并使用点击事件难吗? - Martin
@Martin:应该不会太难,因为有很多比那个更复杂的游戏。然而,我自己没有使用过它。另外,还有一种可能性是使用像ImageViewImageButton这样的小部件,然后简单地将内容旋转180度。 - CommonsWare
好的,但我必须通过应用程序创建按钮的内容,所以我不能使用图像。 - Martin

0
你可以扩展Button视图并覆盖onDraw()方法。
这将为您提供一个画布,您可以旋转它,然后调用super.onDraw()以在旋转后由系统绘制按钮。

我的onDraw方法包含: Paint myPaint = new Paint(); myPaint.setStrokeWidth(1); myPaint.setColor(0xFF097286); canvas.drawText("test", 20, 20, myPaint); canvas.drawCircle(10, 10, 10, myPaint); invalidate(); 我可以画圆,但是无法绘制文本,出了什么问题?我如何旋转“test”这个画图对象? - Martin
请查看:http://www.helloandroid.com/tutorials/how-use-canvas-your-android-apps-part-2。另外,请参阅Canvas.rotate()文档。 - Miguel Morales

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接