OrientationListener 로 Orientation 변경 값을 가져오고 있는데요.
Orientation이 Landscape 일경우
Layout 구성 요소 중
택스트 뷰만 Orientation에 따라 변경해주고 싶습니다.
animation과 layoutParam 만 설정하면 되지 않을까 했는데..전혀
방법이 없을까요??
커스텀 Textview 를 만들어 아래와 같이 하였는데요
바뀌기는 하지만 텍스트도 0,0에서 시작하는것이 아니라
중간에서 부터 쓰여지며, status 바에 가려지고,,
돌릴때 마다 위치도 변동되고 단지 90로 회전만 되네요~
view 가 그려지는 정확한 순서를 알면,,어디서 문제 인지 알것 같은데..
어렵네요,,좀더 자세한 설명은 없을까요??
@Override
protected void onDraw(Canvas canvas) {
if (mOrientation == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) {
final float w = this.getMeasuredWidth();
final float h = this.getMeasuredHeight();
final float centerX = w / 2.0f;
final float centerY = h / 2.0f;
canvas.rotate(90, centerX, centerY);
}
super.onDraw(canvas);
}
public void updateOrientation(int orientation) {
if (mOrientation != orientation) {
mOrientation = orientation;
if (mOrientation == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)
this.setMeasuredDimension(this.getMeasuredHeight(), this.getMeasuredWidth());
postInvalidate();
}
}
protected void onDraw(Canvas canvas) {
하나의 layout에서 여러가지의 뷰가 존재할경우에는 모드뷰를 layout-land 형식으로 만드는것은
너무 불필요한 일을 만들게 되어서요~
전 그 많은 뷰중에 하나만 orientation의 영향을 미치게 하고 싶었습니다.
onCreate 도 일어나지 않길 원했구요
결국해결을 하였습니다.
view 를 상속받은 textview를 만들었습니다.
그리하여 onDraw 에서 land 와 Port일때 마다 다르게 그려줍니다
TextPaint ,canvas.drawText(),canvas.rotate ()를 이용하여 만들었습니다.
그럼 수고들 하세요.