프로젝트

한달 사용 중

달 격자를 네 주 창으로 바꾸고, 일정을 무게 넷으로 가르기까지

처음 판, 월말에 남은 칸 닷새.

처음 판 — 8월 한 달을 통째로. 26일에 열면 남은 칸 닷새. 옛 캡처가 없어 그때 배치로 다시 그림.

창을 네 주로 바꾼 뒤 남은 문제는 하나 — 좁은 칸 안에서 어떤 일정을 어떤 무게로 그릴지.

46판 변천 기록(HISTORY). 새 기능보다 «어떻게 보일지» 를 고친 것이 다수
9장 고르려고 그린 시안 페이지. 안을 여덟 개씩 그려 놓고 선택
3번 시각 있는 일정 표시를 하루에 갈아엎은 횟수 — 들여쓰기 → 세로선 → 점

개발 과정

옛 위젯은 캡처가 없음. 아래 그림은 그때 배치를 같은 위젯 크기로 다시 그린 것(tools/gen_evo.py) — 바뀐 건 크기가 아니라 배치와 무게라서 크기를 하나로 고정. 마지막 판만 실제 캡처.

8월 30일
한 달 격자 → 다섯 주 창
문제
달 격자는 월말에 다음 주가 안 보임
한 것
이전주 하나 + 이번주 + 다음 세 주로 창을 바꾸고 앞뒤 이동 추가
결과
달이 바뀌어도 창이 그대로 흐름. 앞뒤는 한 주씩이 아니라 창째로
8월 30일
다섯 주 → 네 주
문제
지난주는 거의 안 봄. 그만큼 줄이 낮아 일정이 한 줄씩 덜 들어감
한 것
이전주를 걷고 네 주로
결과
줄이 높아져 하루에 보이는 일정 줄 수 증가
8월 30일
대비를 눈대중 대신 계산으로
문제
막대를 옅게 깔았더니 밝은 판에서 글씨가 안 보임
한 것
막대 위에 깔릴 색을 실제로 합성해 4.5:1(WCAG)을 넘기는 쪽을 선택
결과
진하기를 어디에 두든 글자가 읽힘. 설정 하나가 화면을 깨뜨리지 않음
9월 1일
맨 아랫줄을 디데이 셋으로
문제
«다음 일정» 한 줄이 위젯 폭을 다 쓰고도 빈자리가 많음
한 것
앱에서 별을 눌러 고른 일정 셋을 «며칠 남았는지» 로
결과
안 고르면 줄이 없어져 그만큼 격자가 높아짐
다음이라면
처음부터 «이 줄이 무엇에 답하나» 를 정했으면 네 번 갈아엎지 않았음
9월 2일
오른쪽에 그날 시간 축
문제
날짜를 누르면 달력 앱이 열림. 홈 화면에서 하려던 건 «그날이 어떻게 생겼나» 보기
한 것
격자 오른쪽에 그날을 시간 축으로 펴는 판 추가
결과
격자는 고르는 곳, 일정은 오른쪽에서 열기 — 한 칸에서 두 동작이 안 섞임
9월 3일
판을 두 장으로
문제
한 장에 다 얹으니 그날 칸이 달력의 한 부분처럼 읽힘
한 것
달력 한 장, 그날 칸 한 장. 사이로 벽지가 지나가게
결과
둘이 다른 것임이 모양으로 보임. 그날 칸이 위젯 높이를 그대로 써서 시간 축도 길어짐
9월 3일
공휴일은 면 대신 이어지는 선
문제
추석이 회의·약속과 같은 무게로 칠해짐. 하는 일이 아니라 아는 일인데
한 것
첫날에 이름, 그 뒤를 선이 이음
결과
면을 걷으면서도 연휴 길이는 선이 유지 — 글자만 두면 어디까지인지 사라짐
9월 4일
무게 넷으로 정리
문제
「휴가」 와 「9시 회의」 가 똑같이 생겨 눌러야 구분
한 것
종일은 면, 시각 있는 것은 앞에 점, 날짜 자체가 뜻인 것은 가로선, 기억용은 회색 글자
결과
네 가지가 서로 다른 자리 차지. 별을 단 마감도 «날짜가 뜻» 이라 가로선으로 합침
다음이라면
들여쓰기 → 왼쪽 세로선 → 점으로 하루에 세 번 교체. 옆 칸이 비면 자리 차이가 안 보인다는 걸 먼저 그려 봤어야

의사결정 방식 — 여덟 안을 그려 놓고 선택

갈림길마다 그 자리를 실제 치수로 그린 HTML 한 장을 만들고 거기서 선택.

무엇을 그리나

안마다 위젯의 그 부분을 실제 색값과 치수로. 색은 위젯 코드의 계산 그대로 — 20% 바탕, 글자는 그 색을 48% 진하게

무엇을 같이 놓나

새로 넣는 것 혼자가 아니라 이미 쓰는 무게를 한 줄에 같이. 부딪히는지는 나란히 놓아야 보임

무엇을 적나

안마다 «무엇을 얻고 무엇을 잃는지» 한 줄. 「글자 자리를 다섯 글자 내준다」 처럼 값을 숫자로

어떻게 고르나

라디오 단추로 고르고 이름 복사. 고른 뒤에 코드 작성 — 여덟 개를 다 구현하지 않음

누르면 그때 그 화면으로 이동 — 라디오 단추도 그대로.

달력 위젯 아이디어 — 무엇을 만들지부터
달력 위젯 아이디어 — 무엇을 만들지부터
색과 글꼴 — 파스텔·조용한 주말색
색과 글꼴 — 파스텔·조용한 주말색
다음 일정 줄 — 디데이로 갈아탄 자리
다음 일정 줄 — 디데이로 갈아탄 자리
오른쪽 그날 칸 — 시간축으로
오른쪽 그날 칸 — 시간축으로
공휴일 그리는 법 — 이어지는 선
공휴일 그리는 법 — 이어지는 선
위젯 바탕 모양 — 두 장
위젯 바탕 모양 — 두 장
일정 막대 스타일 — 안 바꾸기로
일정 막대 스타일 — 안 바꾸기로
종일과 시각 가르기 — 점
종일과 시각 가르기 — 점
마감 그리기 — 별 단 것을 선으로
마감 그리기 — 별 단 것을 선으로

아홉 장 중 하나는 «안 바꾸기»로 끝남 — 일정 막대는 여덟 안을 다 그려 보니 지금이 최선. 그리는 값이 거기에도 있음.

레퍼런스도 이때 확인. 구글·애플 달력은 월간 화면에서 종일을 면, 시각 있는 것을 점으로. 판타스티컬은 여러 날짜리를 위쪽 띠로. 셋 다 안으로 넣고 나란히 놓자 우리 화면에서 무엇이 부딪히는지가 보임.

무게 넷 — 다른 화면에도 남는 규칙

같은 자료라도 «내가 무엇을 해야 하나» 로 갈라 무게를 줌. 면 · 점 · 가로선 · 회색 글자의 뜻은 소개에. 여기에 시간이 겹침 — 오늘 끝난 일정은 46%, 지난 날은 32% 로 걷힘.

배운 점

RemoteViews 는 좌표가 없음. «몇 시 자리에 놓기» 는 겹쳐 쌓는 통(FrameLayout)에 위 여백으로 자리 잡기. 칸 높이를 미리 알아야 하고, 높이 계산이 틀리면 눈금과 일정이 서로 다른 곳을 가리킴.

여백을 줄여서는 안 되는 자리. 첫 눈금을 칸 맨 위로 올리려고 여백을 세 번 깎았지만 실패. 남은 여백의 절반이 축의 5시 칸 자체였음. 축 시작을 6시로 올리고서야 해결. 줄이려는 것이 여백인지 내용인지부터 확인.

규칙은 월말에 무너지는지 확인. 「창에서 날이 제일 많은 달을 이번 달로」 규칙이 월말에 뒤집힘 — 9/28 에는 10월이 22일이라 이번 주와 다음 주가 흐려짐. 날짜 규칙은 경계에서 한 번 세어 보기.

한 표시에 두 뜻을 싣지 않음. 별 단 일정의 깃발이 공휴일에도 붙어 「쉬는 날」 위에 「마감」 이 얹힘. 같은 가로선으로 합쳐 해결.

산출물

  • 소스 — Kotlin · RemoteViews · CalendarContract
  • 일정 도감 — 종류별 표시, 실제 색값과 치수까지
  • 시안 페이지 아홉 장 — 위 격자에서 누르면 열림