1. splash animation 그리기
animation을 활용한 splash 화면을 만들고자 했다.
텍스트로 적혀진 온점(.)을 직선으로 그어지는 형태로 애니메이션 효과를 주고자 했고,
처음에는 온점 위에 직선을 그리는 형태로 할라 했지만 디자인 과정에서 정했던 색상값이 투명도가 60%였기 때문에,
그대로 겹칠 경우 온점 부분만 진하게 칠해져서 부자연스러웠다. 그런 이유로 직선을 그리기 직전 온점을 invisible 상태로 만들고,
직선을 그리는 형태로 했다.
var startAnimation by remember { mutableStateOf(false) }
val lineProgress = remember { Animatable(0f) }
val coroutineScope = rememberCoroutineScope()
.....................
if (viewState.isAnimationPlaying) {
coroutineScope.launch {
delay(800)
startAnimation = true
lineProgress.animateTo(
targetValue = 1f,
animationSpec = tween(
durationMillis = 1000,
easing = LinearEasing
)
)
//선을 다 그린 뒤 autologin 확인하기
viewModel.onTriggerEvent(LoginViewEvent.checkAutoLogin)
}
}
.....................
if(!startAnimation){
Text(
modifier = Modifier
.padding(bottom = 200.dp, end = 16.dp)
.align(Alignment.CenterEnd),
text = ".",
style = mmTypoGraphy.titleLarge.merge(
color = point_green,
textAlign = TextAlign.End,
),
fontSize = 40.sp
)
}
Canvas(
modifier = Modifier
.size(270.dp)
.padding(bottom = 174.dp, end = 18.dp)
.align(Alignment.CenterEnd)
) {
// 애니메이션에 따라 선의 길이를 변화시키는 코드
val endX = size.width * lineProgress.value // x 축 끝 좌표를 애니메이션 진행에 맞춰 조정
drawLine(
color = point_green_half_trans,
start = Offset(size.width, size.height / 2), // 오른쪽 끝에서 시작
end = Offset(size.width - (size.width * lineProgress.value), size.height / 2), // 애니메이션에 맞춰 왼쪽으로 그려짐
strokeWidth = 20f
)
}
startAnimation을 false로 둬서 Text가 처음에는 보이는 상태로 만들고, viewState.isAnimationPlaying은 처음부터 true 값이기 때문에
delay(800) 이후에 startAnimation 값을 true로 변경하여 Text가 안보이게 한 뒤 선을 그리는 방식으로 구현했다.
해당 코드가 포함되는 화면 애니메이션 형태는 다음과 같은 형태가 된다.
2. github에 google-services.json 잘못 올림(secret key 유출)
firebase의 경우, 네이버를 이용한 소셜 로그인을 지원하지 않는다. 그렇기 때문에 네이버 로그인을 통해서 얻을 수 있는 accessToken 값을
firebase function를 활용하여 JWT 형태의 커스텀 토큰으로 변환해줘야 한다.
그렇기 때문에 firebase에 프로젝트를 연동하여 google-services.json 파일을 app 모듈에 포함해주고,
아무 생각 없이 변경사항들을 commit하고 main branch에 다 push해버렸다.
그런데 push하는 순간 메일 하나가 와서 확인 했더니
gitignore에 google-services.json을 포함하지 않고 아무 생각없이 push해버렸다.
물론 1인 프로젝트이기도 하고 개발 초반 단계라서 github 프로젝트를 밀어버리고 새로 프로젝트를 만드는 간단한(?) 방법이 있긴 했지만,
아무래도 커밋 기록이 조금이나마 있기도 했어서 이걸 최대한 살리면서 github commit history에서 해당 내용을 지우는 방법을 찾아봤다.
여러 번 찾아본 결과, 다음과 같은 방법으로 해결이 가능했다.
git filter-branch --force --index-filter "git rm --cached --ignore-unmatch './app/google-services.json'" --prune-empty --tag-name-filter cat -- --all
git push origin main --force
나의 경우 프로젝트 app 폴더 내의 google-services.json을 push한 기록을 완전히 지우고 싶었기 때문에, 해당 주소/파일명 을 포함하여
명령어를 입력했고, 변경사항을 github에 저장하기 위해 강제로 push까지 했다.
push 이후 확인해보니, 해당 파일에 대한 commit history와 해당 파일 자체가 github에서 제외되었다.
혹시나 실수로 올라가선 안 될 파일이 커밋됐다면 해당 커맨드를 자주 써야겠다.
댓글