프로젝트

준비물 사용 중

날씨 숫자를 준비물 목록으로, 잘라 온 예보로 하루를 요약하지 않기까지 12일

68mm 쏟아진 날, 카드엔 0mm.

잘라 온 요약 기상청 원본 응답다시 센 요약 합친 스물네 시간 하루 강수량 0mm 68mm 오늘 최고 25°밤에 받으면 «남은 시간의 최고» 31°바로 아래 곡선과 같은 값

기상청 단기예보는 발표 시각 이후만 제공. 밤에 받은 응답으로 하루를 요약해 같은 화면이 두 말을 함 — 요약 쪽 오류.

8/248/259/19/4 항목 · 두 곳 · 기상청 · 위젯 위젯 셋 · 기준 화면 · 이번 주
12일 · 변천 기록 38판 · 시안 페이지 5장. 점은 아래 카드의 날짜.

개발 과정

방향이 바뀐 자리만 날짜 순으로. 대부분 값을 더하는 일이 아니라 이미 있는 값이 무엇을 말하게 할지.

8월 24일
숫자 대신 항목
문제
「내일 비 87%」에서 「우산」까지는 매번 사람이 건너는 자리
한 것
네 갈래 규칙이 항목을 목록에 밀어 넣고, 항목마다 왜 떴는지 근거 줄
결과
「우산 — 강수 확률 87% · 4.6mm」. 근거가 있어야 넘길지 판단 가능
8월 24일
곳을 둘로
문제
집 기준만 보면 「회사엔 오는 비」를 그대로 맞음
한 것
집 · 회사 좌표를 박아 두고 켜 둔 곳 전부 합쳐 준비물 선정
결과
한 곳에서만 걸린 항목에만 곳 이름 — 다 붙이면 모든 줄에 같은 말
8월 25일
두 곳을 한 요약으로 접기
문제
카드 둘 — 집 32도 · 회사 34도를 나가기 전에 비교해야 함
한 것
요약 하나로 합치고 더 안 좋은 쪽 사용 — 최저기온만 더 추운 쪽, 구름은 적은 쪽
결과
비교는 화면이 담당. 어디가 더 궂은지는 차트 점선 둘
다음이라면
접는 방식이 「시각마다 더 높은 값」이라 한겨울 추위엔 어긋남. 겨울에 재검토
8월 25일
기상청 값으로 덮기
문제
네이버 · 갤럭시 「25~32」, 앱 「25~30」. 모델 차이지만 사용자에겐 앱 오류
한 것
단기예보를 덮어쓰기로, Open-Meteo 를 바탕으로 — 자외선 · 미세먼지는 단기예보에 없음
결과
저쪽과 같은 값. 열쇠 없어도 앱 동작
8월 25일
홈 위젯 — 그리기 코드 한 벌
문제
RemoteViews 는 커스텀 뷰 불가. 위젯용 그리기를 따로 짜면 한쪽만 고쳐짐
한 것
뷰를 화면 밖에서 measure · layout 해 비트맵으로 전달
결과
차트 코드가 앱 · 위젯 한 벌. 자리가 낮으면 비율 자동 축소
9월 1일
위젯을 한 판으로, 그다음 셋으로
문제
글줄 넷에 그림이 눌림. 위젯이 답할 건 「지금 어떤 날인가」 하나
한 것
강수를 온도 곡선 뒤 반투명 막대로 겹쳐 한 판. 크기 4×2 · 4×1 · 3×1
결과
비 오는 시각과 최고 온도가 한 그림에서 세로로. 3×1 은 지금부터 열두 시간
9월 2일
비 안 오는 날의 접이 우산
문제
강수량 0인데 매일 접이 우산
한 것
기상청 강수확률 30% 는 사실상 기본값 — 문턱 40 으로 상향, 예보 강수량 0.5mm 도 함께
결과
확률 · 양을 같이 판단. 하루 강수량은 합친 스물네 시간에서 재계산
9월 3일
기준 화면
문제
「높음이 몇부터 높음인가」에 앱 어디에도 답 없음
한 것
값마다 구간 띠 위에 어느 구간부터 무엇을 챙기는지. 등급 조각이 곧 단추
결과
문턱 숫자는 Rules 에서만 읽음 — 두 곳에 적으면 한쪽만 헌 값
다음이라면
준비물 줄을 처음엔 전부 초록. 선크림은 노란 「높음」부터라 띠와 줄이 다른 말
9월 3일
볼 때마다 줄던 「오늘 최고」
문제
밤에 받은 카드 「25° 23°」, 바로 아래 곡선은 31° · 19°
한 것
TMN · TMX 가 안 오면 남은 시간으로 메우지 않고 비움
결과
기온 · 눈 · 하늘 셋이 같은 병. 강수만 먼저 고쳤던 것을 한 번에
9월 4일
이번 주 일곱 칸
문제
오늘 · 내일만이라 「이번 주 언제 비 와?」에 답 없음
한 것
예보 사흘 → 이레, 요일 · 하늘 · 최고 · 온도 막대 · 최저 · 비 올 확률 한 줄
결과
막대는 그 주 최저~최고를 한 자로 — 높낮이가 온도, 길이가 일교차
다음이라면
주 경계를 처음엔 10dp 틈으로만. 바탕이 이어져 한 장에 금이 간 꼴 — 나눌 거면 카드를 나눔

의사결정 방식 — 실제 예보로 그려 놓고 고름

갈림길마다 실제 예보값과 치수로 그린 HTML 한 장을 만들어 선택.

무엇으로 그리나

그날의 실제 예보. 비 없는 날로 그리면 네 안이 똑같아 보임

무엇을 적나

안마다 얻는 것 · 잃는 것 한 줄, 값은 숫자로 — 「눈금을 버리는 대신 그림이 폭을 다 씀」

차이를 얼마나 벌리나

막대 불투명도 0.42 대 0.6 시안에 「뭐가 다르냐」. 눈으로 갈려야 시안

어떻게 고르나

고른 뒤에 구현. 네 안을 다 만들지 않음

위젯 한 판 그리기 — 네 안 중 겹쳐 세우기
위젯 한 판 그리기 — 네 안 중 겹쳐 세우기
한 줄 위젯 배치 — 왼쪽·오른쪽에서 위·아래로
한 줄 위젯 배치 — 왼쪽·오른쪽에서 위·아래로
한 줄 위젯 다듬기 — 눈금과 이름표
한 줄 위젯 다듬기 — 눈금과 이름표
위젯에 미세먼지 — 그림 «안» 에 조각으로
위젯에 미세먼지 — 그림 «안» 에 조각으로
기준 화면 — 구간 띠에 준비물을 얹어
기준 화면 — 구간 띠에 준비물을 얹어

잘라 온 자료로 하루를 요약하지 않기

다른 앱에도 가져갈 규칙 한 가지. 맨 위 비교의 원인.

메우지 않음

TMN · TMX 가 안 오면 비움. 「남은 시간의 최저 · 최고」로 메우면 저녁엔 저녁값이 곧 「오늘 최고」

합친 뒤에 셈

요약은 원본 응답이 아니라 합친 스물네 시간에서 — 최고 · 최저 · 강수량 · 적설 · 하늘 상태 모두

값마다 따로 고치지 않음

강수만 고치고 기온 · 눈 · 하늘을 두어 같은 병이 세 곳에 남음. 규칙 하나면 한 자리에서

어긋나면 신호

카드 25°, 곡선 31°. 같은 자료를 보는 둘이 다른 말이면 한쪽이 틀림

배운 점

위젯 색은 런처 테마로 풀림. ?android:attr/textColorPrimary 는 밝은 런처에서 어두운 카드 위에 검은 그림. @color + values-night 는 밤낮 자원으로 풀려 안전. tint · setColorFilter 는 그림 전체를 한 색으로 덮어, 「해 뒤의 구름」 같은 두 색 그림은 길마다 제 색 필요.

안 보이는 단추는 없는 단추. 등급 조각을 단추로 만들고 단추처럼 안 보이게 두니 아무도 안 누름. 물음이 생기는 자리 바로 옆에 둠.

매번 무시하는 알림은 옆 알림까지 무디게 함. 주말 알림이 「오늘도 그냥 알림」이 되자 평일 알림도 흘려봄. 끈 건 알림뿐, 화면 · 위젯은 그대로.

산출물

  • 소스 — Kotlin · RemoteViews · 기상청 단기예보 · Open-Meteo
  • 시안 페이지 다섯 장 — 위 격자에서 열림