프로젝트

한달 사용 중

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

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

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

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

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

개발 과정

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

8월 30일한 달 격자 → 다섯 주 창8월 30일다섯 주 → 네 주8월 30일대비를 눈대중 대신 계산으로9월 1일맨 아랫줄을 디데이 셋으로9월 2일오른쪽에 그날 시간 축9월 3일판을 두 장으로9월 3일공휴일은 면 대신 이어지는 선9월 4일무게 넷으로 정리
밀어서 보기
8월 30일

한 달 격자 → 다섯 주 창

막힘
달 격자는 월말에 다음 주가 안 보임
한 것
이전주 하나 + 이번주 + 다음 세 주로 창을 바꾸고 앞뒤 이동 추가
결과
달이 바뀌어도 창이 그대로 흐름. 앞뒤는 한 주씩이 아니라 창째로
날짜를 누르거나 축을 밀면 그때 무엇이 막혔고 무엇을 정했는지 아래에 펼쳐진다.

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

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

무엇을 그리나

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

무엇을 같이 놓나

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

무엇을 적나

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

어떻게 고르나

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

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

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

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

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

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

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

배운 점

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

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

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

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

산출물

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