如何在android中旋转按钮视图

时间:2011-10-25 07:55:43

标签: android

我想将Button视图旋转45度。为此,我编写了如下所示的代码。现在,不是旋转Button本身,而是按钮上的文本或标签会旋转。但我希望按钮旋转45度。我怎么能做到这一点?

public class MyButton extends Button {

    public float degrees;
    public float sWidth;
    public float sHeight;

    public MyButton(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
    }

    @Override
    protected void onDraw(Canvas canvas) {
        // TODO Auto-generated method stub

        canvas.save();
        canvas.rotate(45.0f);
        super.onDraw(canvas);

        canvas.restore();
    }

    @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        // TODO Auto-generated method stub
        super.onSizeChanged(w, h, oldw, oldh);
        sWidth=w;
        sHeight=h;
    }
}

4 个答案:

答案 0 :(得分:6)

This link may help

我认为您需要将RotateAnimation应用于视图,并将fillAfter设置为true以保持其角度。上面的示例适用于布局,但您可以将动画应用于视图(在您的情况下,按钮)。

答案 1 :(得分:3)

如果您想要一个稳定的旋转按钮,请使用以下扩展按钮。也许你需要getWidth() / 2, getHeight() / 2

public class RotateButton extends Button{

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

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

    @Override
    protected void onDraw(Canvas canvas) {
        canvas.save();
        canvas.rotate(45, getWidth() / 2, getHeight() / 2);
        super.onDraw(canvas);
        canvas.restore();
    }

}

并在你的布局中:

<com.samples.myapp.ui.RotateButton
        android:layout_height="wrap_content" android:id="@+id/MyBtn"
        android:padding="5dip" android:textColor="@color/darkGreen"
        android:textSize="16dip" android:text="TextView"
        android:layout_width="wrap_content"></com.samples.myapp.ui.RotateButton>

答案 2 :(得分:1)

如果您乐意使用动画,请在API&gt; = 11上,我会选择:

ObjectAnimator.ofFloat(buttonView, "rotation", 0, 45).start();

答案 3 :(得分:0)

如果您只是想旋转按钮并使用其中的文本,请使用android:rotation =&#34;您要旋转的角度&#34;在按钮

的xml文件中