기존에 LONG과 SHORT 두가지 모드로만 Toast 메시지를 활용해오다가
이번에 LENGHT_SHORT 모드로도 딜레이가 길다고 느껴져 이보다 시간을 더 단축할 필요가 있었다.
Stack overflow에서 이 문제를 Handler를 활용해 해결한 것을 참조할 수 있었다.
final Toast toast = Toast.makeText(ctx, "This message will disappear in 1 second", Toast.LENGTH_SHORT);
toast.show();
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
toast.cancel();
}
}, 1000);
위는 Stack overflow에서 보여주고 있는 코드인데, Toast 메시지를 객체화하고 show, 그리고 Handler에 postDelayed를 달아 toast.cancel()을
해주면 된다. 뒷부분에는 원하는 시간 텀을 익숙한 밀리세컨드 단위로 잘 지정해주면 된다.
handler.postDelayed 부분은 안드로이드 스튜디오에서 추천해주는 람다 코드 방식으로 변경을 해줄 수 있었는데
단순화 하고나니
handler.postDelayed(toast::cancel, 1000 );
이렇게 한 문장으로 단순화 시킬 수 있었다. 람다코드에 대해서 아직 자세히 알지 못하는데,
후에 읽기 좋은 코드, 리팩토링을 하면서 잘 활용해 보는것도 좋지 않을까 싶다~
참고 :
https://stackoverflow.com/questions/3775074/set-toast-appear-length/9715422#9715422
'ANDROID' 카테고리의 다른 글
[안드로이드] TabbedActivity에서 각 Fragment의 레이아웃 구성요소 설정 및 제어 (0) | 2018.04.24 |
---|---|
[안드로이드] Swipe View 적용을 위한 TabbedActivity 생성 및 풀스크린 레이아웃 적용 (0) | 2018.04.19 |
[안드로이드] 무한 효과음 재생을 위한 여정 (GoldWave를 적극 활용하자) (2) | 2018.04.10 |
[안드로이드] 구글맵에서 GeoCoder와 Animation Listener를 활용해 검색 위치 표시하기 (0) | 2018.04.10 |
[안드로이드] onClickListener와 onTouchListener에 의한 Memory Leak 잡기 (0) | 2018.04.05 |