1
다음 클래스를 사용하여 회전 가능한 대화 상자를 만들고 모든 것이 정상입니다.내부에 애니메이션이있는 대화 상자를 회전 할 때 문제가 발생했습니다.
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.LinearLayout;
public class RotateLinearLayout extends LinearLayout {
private Matrix mForward = new Matrix();
private Matrix mReverse = new Matrix();
private float[] mTemp = new float[2];
private float degree = 0;
public RotateLinearLayout(Context context) {
super(context);
}
public RotateLinearLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void dispatchDraw(Canvas canvas) {
if (degree == 0) {
super.dispatchDraw(canvas);
return;
}
canvas.rotate(degree, getWidth()/2, getHeight()/2);
mForward = canvas.getMatrix();
mForward.invert(mReverse);
canvas.save();
canvas.setMatrix(mForward); // This is the matrix we need to use for
// proper positioning of touch events
super.dispatchDraw(canvas);
canvas.restore();
}
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
if (degree == 0) {
return super.dispatchTouchEvent(event);
}
final float[] temp = mTemp;
temp[0] = event.getX();
temp[1] = event.getY();
mReverse.mapPoints(temp);
event.setLocation(temp[0], temp[1]);
return super.dispatchTouchEvent(event);
}
public void rotate() {
if (degree == 0) {
degree = 180;
} else {
degree = 0;
}
}
}
저는이 대화 상자의 왼쪽에 애니메이션이 장착되어 있습니다. 대화 상자가 회전하지 않으면 ImageView가 올바르게 움직입니다. 대화 상자를 회전 할 때 ImageView는 대화 상자의 오른쪽에 애니메이션을 적용해야하지만 이전에 배치 한 ImageView의 화면 픽셀을 추악한 상태로 변경합니다. 회전 후 ImageView의 위치는 바뀌지 만 애니메이션의 위치는 변하지 않습니다.
어떻게 ImageView의 애니메이션의 새 위치를 설정할 수 있습니까?