처음 판, 월말에 남은 칸 닷새.
창을 네 주로 바꾼 뒤 남은 문제는 하나 — 좁은 칸 안에서 어떤 일정을 어떤 무게로 그릴지.
개발 과정
옛 위젯은 캡처가 없음. 아래 그림은 그때 배치를 같은 위젯 크기로 다시 그린 것(tools/gen_evo.py) —
바뀐 건 크기가 아니라 배치와 무게라서 크기를 하나로 고정. 마지막 판만 실제 캡처.
- 문제
- 달 격자는 월말에 다음 주가 안 보임
- 한 것
- 이전주 하나 + 이번주 + 다음 세 주로 창을 바꾸고 앞뒤 이동 추가
- 결과
- 달이 바뀌어도 창이 그대로 흐름. 앞뒤는 한 주씩이 아니라 창째로
- 문제
- 지난주는 거의 안 봄. 그만큼 줄이 낮아 일정이 한 줄씩 덜 들어감
- 한 것
- 이전주를 걷고 네 주로
- 결과
- 줄이 높아져 하루에 보이는 일정 줄 수 증가
- 문제
- 막대를 옅게 깔았더니 밝은 판에서 글씨가 안 보임
- 한 것
- 막대 위에 깔릴 색을 실제로 합성해 4.5:1(WCAG)을 넘기는 쪽을 선택
- 결과
- 진하기를 어디에 두든 글자가 읽힘. 설정 하나가 화면을 깨뜨리지 않음
- 문제
- «다음 일정» 한 줄이 위젯 폭을 다 쓰고도 빈자리가 많음
- 한 것
- 앱에서 별을 눌러 고른 일정 셋을 «며칠 남았는지» 로
- 결과
- 안 고르면 줄이 없어져 그만큼 격자가 높아짐
- 다음이라면
- 처음부터 «이 줄이 무엇에 답하나» 를 정했으면 네 번 갈아엎지 않았음
- 문제
- 날짜를 누르면 달력 앱이 열림. 홈 화면에서 하려던 건 «그날이 어떻게 생겼나» 보기
- 한 것
- 격자 오른쪽에 그날을 시간 축으로 펴는 판 추가
- 결과
- 격자는 고르는 곳, 일정은 오른쪽에서 열기 — 한 칸에서 두 동작이 안 섞임
- 문제
- 한 장에 다 얹으니 그날 칸이 달력의 한 부분처럼 읽힘
- 한 것
- 달력 한 장, 그날 칸 한 장. 사이로 벽지가 지나가게
- 결과
- 둘이 다른 것임이 모양으로 보임. 그날 칸이 위젯 높이를 그대로 써서 시간 축도 길어짐
- 문제
- 추석이 회의·약속과 같은 무게로 칠해짐. 하는 일이 아니라 아는 일인데
- 한 것
- 첫날에 이름, 그 뒤를 선이 이음
- 결과
- 면을 걷으면서도 연휴 길이는 선이 유지 — 글자만 두면 어디까지인지 사라짐
- 문제
- 「휴가」 와 「9시 회의」 가 똑같이 생겨 눌러야 구분
- 한 것
- 종일은 면, 시각 있는 것은 앞에 점, 날짜 자체가 뜻인 것은 가로선, 기억용은 회색 글자
- 결과
- 네 가지가 서로 다른 자리 차지. 별을 단 마감도 «날짜가 뜻» 이라 가로선으로 합침
- 다음이라면
- 들여쓰기 → 왼쪽 세로선 → 점으로 하루에 세 번 교체. 옆 칸이 비면 자리 차이가 안 보인다는 걸 먼저 그려 봤어야
의사결정 방식 — 여덟 안을 그려 놓고 선택
갈림길마다 그 자리를 실제 치수로 그린 HTML 한 장을 만들고 거기서 선택.
무엇을 그리나
안마다 위젯의 그 부분을 실제 색값과 치수로. 색은 위젯 코드의 계산 그대로 — 20% 바탕, 글자는 그 색을 48% 진하게
무엇을 같이 놓나
새로 넣는 것 혼자가 아니라 이미 쓰는 무게를 한 줄에 같이. 부딪히는지는 나란히 놓아야 보임
무엇을 적나
안마다 «무엇을 얻고 무엇을 잃는지» 한 줄. 「글자 자리를 다섯 글자 내준다」 처럼 값을 숫자로
어떻게 고르나
라디오 단추로 고르고 이름 복사. 고른 뒤에 코드 작성 — 여덟 개를 다 구현하지 않음
누르면 그때 그 화면으로 이동 — 라디오 단추도 그대로.
아홉 장 중 하나는 «안 바꾸기»로 끝남 — 일정 막대는 여덟 안을 다 그려 보니 지금이 최선. 그리는 값이 거기에도 있음.
레퍼런스도 이때 확인. 구글·애플 달력은 월간 화면에서 종일을 면, 시각 있는 것을 점으로. 판타스티컬은 여러 날짜리를 위쪽 띠로. 셋 다 안으로 넣고 나란히 놓자 우리 화면에서 무엇이 부딪히는지가 보임.
무게 넷 — 다른 화면에도 남는 규칙
같은 자료라도 «내가 무엇을 해야 하나» 로 갈라 무게를 줌. 면 · 점 · 가로선 · 회색 글자의 뜻은 소개에. 여기에 시간이 겹침 — 오늘 끝난 일정은 46%, 지난 날은 32% 로 걷힘.
배운 점
RemoteViews 는 좌표가 없음. «몇 시 자리에 놓기» 는 겹쳐 쌓는 통(FrameLayout)에 위 여백으로 자리 잡기. 칸 높이를 미리 알아야 하고, 높이 계산이 틀리면 눈금과 일정이 서로 다른 곳을 가리킴.
여백을 줄여서는 안 되는 자리. 첫 눈금을 칸 맨 위로 올리려고 여백을 세 번 깎았지만 실패. 남은 여백의 절반이 축의 5시 칸 자체였음. 축 시작을 6시로 올리고서야 해결. 줄이려는 것이 여백인지 내용인지부터 확인.
규칙은 월말에 무너지는지 확인. 「창에서 날이 제일 많은 달을 이번 달로」 규칙이 월말에 뒤집힘 — 9/28 에는 10월이 22일이라 이번 주와 다음 주가 흐려짐. 날짜 규칙은 경계에서 한 번 세어 보기.
한 표시에 두 뜻을 싣지 않음. 별 단 일정의 깃발이 공휴일에도 붙어 「쉬는 날」 위에 「마감」 이 얹힘. 같은 가로선으로 합쳐 해결.