0

テキストの長さに基づいて正方形を作成し、回転できるようにしたいと思います。textview を拡張して onMeasure を変更したのですが、回転させると四角の上部にテキストが描画されてしまいます。回転を開始すると、テキストはそれ自体の中間点を中心に回転しません。

下の画像は、現在の状況の結果を赤で、望ましい状況を緑で示しています。黄色い点がピボットポイントです。

テキスト画像

ご助力ありがとうございます!

import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.widget.TextView;

public class MyTextView extends TextView {

private int angle = 0;

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

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec,heightMeasureSpec);
    setMeasuredDimension(getMeasuredWidth(),getMeasuredWidth());
}

@Override
protected void onDraw(Canvas canvas) {
    canvas.save();
    canvas.translate(getCompoundPaddingLeft(), getExtendedPaddingTop());
    canvas.rotate(angle, canvas.getWidth()/2f, canvas.getHeight()/2f);
    getLayout().draw(canvas);
    canvas.restore();
}

public void setAngle(int textAngle) {
    angle = textAngle;
}
}
4

1 に答える 1