애니메이션을 중지하는 방법 (cancel ()이 작동하지 않음)
실행중인 번역 애니메이션을 중지해야합니다. .cancel()
의 방법 Animation
에는 영향을주지 않는다; 어쨌든 애니메이션은 끝까지 간다.
실행중인 애니메이션을 어떻게 취소합니까?
전화 clearAnimation()
한 사람 View
에게 전화하십시오 startAnimation()
.
안드로이드 4.4.4에서, 내가 전화 한보기에 알파 페이드 애니메이션을 막을 수있는 유일한 방법은 같다 View.animate().cancel()
(전화, 즉 .cancel()
보기의에 ViewPropertyAnimator
).
ICS 전후에 호환성을 위해 사용하는 코드는 다음과 같습니다.
public void stopAnimation(View v) {
v.clearAnimation();
if (canCancelAnimation()) {
v.animate().cancel();
}
}
... 방법 :
/**
* Returns true if the API level supports canceling existing animations via the
* ViewPropertyAnimator, and false if it does not
* @return true if the API level supports canceling existing animations via the
* ViewPropertyAnimator, and false if it does not
*/
public static boolean canCancelAnimation() {
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH;
}
중지하고있는 애니메이션은 다음과 같습니다.
v.setAlpha(0f);
v.setVisibility(View.VISIBLE);
// Animate the content view to 100% opacity, and clear any animation listener set on the view.
v.animate()
.alpha(1f)
.setDuration(animationDuration)
.setListener(null);
애니메이션 리스너를 사용하는 경우을 설정하십시오 v.setAnimationListener(null)
. 모든 옵션과 함께 다음 코드를 사용하십시오.
v.getAnimation().cancel();
v.clearAnimation();
animation.setAnimationListener(null);
.clearAnimation ()을 사용해야합니다. UI 스레드의 메소드 :
runOnUiThread(new Runnable() {
@Override
public void run() {
v.clearAnimation();
}
});
할 수있는 것은 애니메이션을 중지하기 전에 변환 매트릭스를 애니메이션에서 가져오고 매트릭스 내용을 검사하여 원하는 위치 값을 얻는 것입니다.
다음은 살펴 봐야 할 API입니다.
public boolean getTransformation (long currentTime, Transformation outTransformation)
public void getValues (float[] values)
예를 들어 (일부 의사 코드. 나는 이것을 테스트하지 않았습니다) :
Transformation outTransformation = new Transformation();
myAnimation.getTransformation(currentTime, outTransformation);
Matrix transformationMatrix = outTransformation.getMatrix();
float[] matrixValues = new float[9];
transformationMatrix.getValues(matrixValues);
float transX = matrixValues[Matrix.MTRANS_X];
float transY = matrixValues[Matrix.MTRANS_Y];
setAnimation (null) 메소드를 사용하여 애니메이션을 중지하고 View.java 에서 public 메소드로 노출되며 모든 위젯 의 기본 클래스이며 대화식 UI 구성 요소 (버튼, 텍스트 필드 등)를 만드는 데 사용됩니다./** * Sets the next animation to play for this view. * If you want the animation to play immediately, use * {@link #startAnimation(android.view.animation.Animation)} instead. * This method provides allows fine-grained * control over the start time and invalidation, but you * must make sure that 1) the animation has a start time set, and * 2) the view's parent (which controls animations on its children) * will be invalidated when the animation is supposed to * start. * * @param animation The next animation, or null. */ public void setAnimation(Animation animation)
애니메이션을 멈추기 위해 아무것도하지 않는 objectAnimator를 설정할 수 있습니다.
먼저 수동으로 뒤집을 때 왼쪽에서 오른쪽으로 애니메이션이 있습니다.
flipper.setInAnimation(leftIn);
flipper.setOutAnimation(rightOut);
자동 뒤집기로 전환하면 애니메이션이 없습니다.
flipper.setInAnimation(doNothing);
flipper.setOutAnimation(doNothing);
doNothing = ObjectAnimator.ofFloat(flipper, "x", 0f, 0f).setDuration(flipperSwipingDuration);
참고 URL : https://stackoverflow.com/questions/4112599/how-to-stop-an-animation-cancel-does-not-work
'IT story' 카테고리의 다른 글
파이썬에서 클래스 변수를 정의하는 올바른 방법 (0) | 2020.04.19 |
---|---|
세마포어 대 모니터-차이점은 무엇입니까? (0) | 2020.04.19 |
Get-ChildItem을 사용하여 디렉토리 만 가져 오려면 어떻게합니까? (0) | 2020.04.19 |
문자열에서 처음 5자를 얻는 방법 (0) | 2020.04.19 |
모든 문자를 대문자로 TextView에 스타일을 지정하는 방법이 있습니까? (0) | 2020.04.19 |