我想将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;
}
}
答案 0 :(得分:6)
我认为您需要将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文件中