반응형
Transition Animation을 만들어서 firstScene과 secondScene을 왔다 갔다 하는 작업을 하는데 문제가 생겼다.
첫번째 씬 버튼에 리스너를 달아주고
세컨드 씬에서 다시 첫번째 씬으로 돌아오고
다시 첫번째 씬에서 버튼을 누르면 버튼이 먹통되는 문제였다.
ViewGroup sceneRoot = getSCInf().getAct().findViewById(R.id.scene_root);
Scene firstScene = Scene.getSceneForLayout(sceneRoot,R.layout.first, this);
Scene secondScene = Scene.getSceneForLayout(sceneRoot,R.layout.second, this);
getSCInf().getAct().getLayoutInflater().inflate(R.layout.first, sceneRoot);
Button demoBtn = getSCInf().getAct().findViewById(R.id.btn_demo);
demoBtn.setOnClickListener(v -> {
TransitionManager.go(secondScene);
});
firstScene.setEnterAction(
() -> {
demoBtn.setOnClickListener(v -> {
TransitionManager.go(secondScene);
});
}
);
이유는 다음과 같다
- 처음 버튼을 가져올때 demoBtn으로 받아왔다. 헌데 이를 setEnterAction에서 그대로 사용하였다.
- 하지만 demoBtn과 세컨드씬에서 돌아오고 나서 다시 생기는 버튼은 서로 다른 버튼이다
- 고로 두 버튼의 변수를 다르게 해 줘서 처리해 주어야 한다
아래처럼 demoBtn2로 변수를 다르게 해 주니 해결되었다.
ViewGroup sceneRoot = getSCInf().getAct().findViewById(R.id.scene_root);
Scene firstScene = Scene.getSceneForLayout(sceneRoot,R.layout.first, this);
Scene secondScene = Scene.getSceneForLayout(sceneRoot,R.layout.second, this);
getSCInf().getAct().getLayoutInflater().inflate(R.layout.first, sceneRoot);
Button demoBtn = getSCInf().getAct().findViewById(R.id.btn_demo);
demoBtn.setOnClickListener(v -> {
TransitionManager.go(secondScene);
});
firstScene.setEnterAction(
() -> {
Button demoBtn2 = getSCInf().getAct().findViewById(R.id.btn_demo);
demoBtn2.setOnClickListener(v -> {
TransitionManager.go(secondScene);
});
}
);
반응형
'Android > 애니메이션' 카테고리의 다른 글
[Android] Property Animation, 속성 애니메이션 (0) | 2022.02.09 |
---|---|
[Android] 안드로이드 transition animation (0) | 2022.01.07 |
댓글