我想在android中创建一个旋转的X度标题。
类似的东西:
我试过这门课
public class AngledTextView extends Button {
public AngledTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onDraw(Canvas canvas) {
// Save the current matrix
canvas.save();
// Rotate this View at its center
canvas.rotate(-45, this.getWidth() / 2, this.getHeight() / 2);
// Draw it
super.onDraw(canvas);
// Restore to the previous matrix
canvas.restore();
}
}
在这个布局中:
但得到了切碎的文字。
我该如何解决这个问题?
答案 0 :(得分:0)
不是在中心旋转画布,而是在左下方旋转它,并将其从左下角向右上角旋转角度数。
float angle = Math.tan((float)this.getHeight() / (float)this.getWidth());
// Rotate this View at its center
canvas.rotate(angle, 0, this.getHeight());
答案 1 :(得分:0)
根据this question,Android本身无法实现此功能。但是,由于第二个答案的最后一个注释表明您可以通过覆盖draw()方法(而不是像您所做的那样onDraw())来旋转视图,并在特定区域触摸屏幕时将事件转发到按钮。所以你必须自己处理事件(因为按钮不能旋转)然后它可以工作。请注意,在另一个问题及其答案中提供的示例中,TextView已扩展,而不是Button。
答案 2 :(得分:0)
你可以使用view.setRotation(rotationAngle)或checkout在android中的RotateAnimation