미니기기 코리아

로그인 해주세요.

미니기기 / 음향 게시판 *스마트폰과 PC, 카메라, 스피커 등 IT 미니기기와 음향기기에 관해 교류하는 게시판입니다.

불심

미니 안드로이드 위젯 개발에 대해

  • 불심
  • 조회 수 1162
  • 2023.10.03. 21:03

추석연휴가 어느덧 끝나가고 있군요.

저는 아직 6일 더 쉬는 여유가 있어, 간만에 개발관련 얘기나 한번 해보려 합니다.

 

현역 안드 개발자고, 위젯도 개발해봤기 땜에 하고싶은 말들이 좀 있네요.

 

1. 위젯 개발은 일반 UI보다 어렵고 척박하다.

 

위젯은 특정앱에 종속되는 기능이지만, UI를 그리는 책임은 시스템과 그에 기본 지정된 런처에 달려있습니다.

런처와 앱간에 직접 소통될수 있는 통로같은건, 비표준의 인터페이스를 뚫지 않는이상 없습니다.

(예전에 삼성 모 폰에서 터치이벤트를 위젯에 억지로 넣으려고 런처에 커스텀 함수 정의된건 봤었습니다만..)

 

그렇기 때문에 일반적인 앱 UI와 달리, 알림 UI와 동일한 RemoteViews라는 방식을 씁니다.

쉽게 말하면 원격지(런처)에 뷰를 놓고 조작을 하는 것입니다.

 

문제는 이 구조가 UI 구현에서 굉장히 난해한 상황을 만듭니다.

커스텀뷰뿐 아니라, 안드로이드에서 유용한 뷰 UI 오픈소스 사용이 불가합니다.

그냥 오래전에 나온 LinearLayout, FrameLayout, RelativeLayout같은 원시적인 뷰들을

노가다를 해서 만든다고 보심 됩니다.

 

2. 런처 격자 크기에 대한 명확한 정의가 없다.

 

위젯 개발할 때 제일 골때리는 부분중 하나입니다. 단말기마다 런처마다 그리드 사이즈는 달라지는데

이게 그리드 단위로 처리되지 않고, 그냥 위젯의 가로세로 크기를 일정 이하로 낮추면 위젯이 차지하는 격자크기가 이정도가 될것이다라고 매뉴얼에 나와있습니다.

 

https://developer.android.com/develop/ui/views/appwidgets/layouts

 

3. 입력 이벤트 처리가 한정된다.

 

이 또한 위젯의 제약사항중 하나입니다. 위젯에선 클릭을 했을때 앱 구동을 원하는 방식으로 실행하는

PendingIntent 지원정도가 한계입니다.

 

예전에 삼성 모 폰 얘기를 했었는데, 역분석 했을 때 날씨 위젯이 원UI 런처하고 타이트하게 커플링되어 있었습니다. 관심지역이 여러개 등록된 상태일 때 위아래로 스크롤하면 런처가 위젯에 해당 이벤트를 전달해서 지역을 변경해주는 기능이 있었죠. 이건 비표준 기능입니다. 다른 런처를 쓰고있다면 이 기능은 동작하지 않습니다.

 

4. 표준 문서의 룰을 지키지 않는 일부 런처들이 있다.

 

표준에서 정의된 그리드 사이즈 정보를 얻고싶은데, 일부 단말의 런처에선 그것이 빠져있어서 난감한 경우가 있습니다.

 

위젯의 UI 비율이 예쁘게 보이려면 그리드 크기를 알아내어 스케일링을 해줄 필요가 있는데, 그걸 할 수 없는 경우가 있습니다.

 

5. R값

 

런처가 직접 라운딩을 깎기도 하지만, 위젯 자체가 개발당시 이미 깎여서 디자인되는 경우도 많습니다. 전국시대같은 어지러움이 느껴지는군요.

 

6. 비록 안드로이드 12에서는 어느정도 노력했건만...

 

위젯은 안드로이드 초창기에 등장한 기능이지만 거의 발전이 없다가, 안드로이드 12에서 변화가 꽤 있었습니다.

 

- 기존 위젯 설정 변경(reconfigurable)

- 시스템에서 제안하는 라운딩 깎는 dp값

- 동적인 프리뷰 레이아웃 처리 제공

- 라디오, 체크박스 등의 컴파운드 버튼 지원

- 새로운 UI 수정기능 추가 (@RemotableViewMethod 붙은 메서드들이 늘어남)

 

안드로이드 12가 나온지는 꽤 됐습니다만은, 위젯은 사실 앱 개발에서도 후순위에 속해서 저변이 깔리는데는 시간이 필요 할 것 같습니다.

불심
흔한 현역 안드로이드 앱 개발자입니다.
한 때는 블빠이자 하드웨어를 좋아했었던 늙은이...

[폰]

S23 Ultra

[태블릿 PC]

아이패드 프로 12.9 3rd gen. (회사장비)

[랩탑]

맥북 프로 16인치 M1 pro 32GB (회사장비)
맥북 프로 14인치 M1 16GB (회사장비)

[데스크탑]

인텔 코어 i7 12700k
지스킬 DDR4 3200@3900 (CL16)
RTX 4090
댓글
9
룬룬
best 1등 룬룬
2023.10.03. 21:05

애플 처럼 딱 일관된 가이드라인이 잘 없고, 이마져도 런처 마다 다 다르다 보니 개발하기 쉽지 않긴 하죠

[룬룬]님의 댓글을 신고합니다. 취소 신고
따끔따끔
best 2등 따끔따끔
2023.10.03. 23:30

위젯만들어본적 있는데 진짜 딥빡이었어요.

 삼성 내부에서는 일반개발자가 사용못하는 기능도 쓰는것 같긴하던데.  터치도 왜저렇게 팬딩인텐트로 밖에 안주는지.. 기획한테는 아무리 설명해도 그게 왜 안되냐고 그러고 실력이 없느냐 소리나오고.. 아.  다신 위젯안하고 싶더라구요.

[따끔따끔]님의 댓글을 신고합니다. 취소 신고
불심
글쓴이
불심 따끔따끔 님께
2023.10.03. 23:33

위젯의 빡침은 만들어 본 사람만 알수있죠. 공감합니다.

[불심]님의 댓글을 신고합니다. 취소 신고
총명한모양
총명한모양
2023.10.04. 01:45

진짜 위젯 가이드 제 각각인거 킹받는부분이죠 ㅠㅠ

 

예컨데 유튜브 뮤직 위젯은 도대체 왜 빈부분이 있는지 아직도 이해가 안가고

 

이걸 왜 아직도 안고치는지도 이해가 안갑니다

[총명한모양]님의 댓글을 신고합니다. 취소 신고
욱농
욱농
2023.10.04. 01:57

가이드 좀 개선되면 좋겠네요..

[욱농]님의 댓글을 신고합니다. 취소 신고
마일로스
마일로스
2023.10.04. 08:26

개발 시작하비 전부터 앱 가이드도 소수민족 마냥 쪼개져 있는데 위젯은 오죽할까 싶었습니다만..겪어보니 생각보다도 더 심각해보였습니다 😂

[마일로스]님의 댓글을 신고합니다. 취소 신고
Hahn
Hahn
2023.10.04. 10:31

런처마다 다르다는게 개발하시는 입장에서 짜증나는 포인트 중 하나겠군요. 제조사마다 다르고 노바같은 서드파티까지 생각하면=_=;;

[Hahn]님의 댓글을 신고합니다. 취소 신고
갤럭시S2
갤럭시S2
2023.10.04. 11:01

삼성은 예전부터 마개조를 많이 했죠 

 

삼성 자체 캘린더앱 위젯의 경우 혼자서만 위젯 상에서 날짜 선택해서 입력되던 시절이 있었습니다

 

그거때문에 다른 캘린더앱 사놓고 방치하게 되었던 기억이 나네요

[갤럭시S2]님의 댓글을 신고합니다. 취소 신고
취소
번호 분류 제목 글쓴이 날짜 조회 수
공지 공지 사이트 이용 수칙 230228 수정 file admin 18.08.04 107071 13
핫글 미니 갤럭시S24가 죽으면 [8] 엣지 23.12.01 1225 31
핫글 미니 솔직히 8기가도 쓸만은 하죠. [21] Eomjunsik 23.12.01 1120 26
핫글 미니 한마디로 정리할수 있습니다 [12] 마키세크리스 23.12.01 812 24
200499 미니 인텔 많이 컸네요 [2] 비둘기야먹자 23.10.03 800 0
200498 미니 아이폰15프로 영상촬영 친절한점&불친절한점 [3] Stellist 23.10.03 690 4
200497 미니 요번에 새로 출시되는 게임 사양인데 [13] file 룬룬 23.10.03 1225 4
200496 미니 ui 통일성 관련해선 걍 구글 탓이죠 [4] Qkooqq 23.10.03 744 2
200495 미니 이번에 사전예약 하시는 분들 어디서 하시나요?? [5] 크나앙 23.10.03 401 0
200494 미니 14프맥은 그냥 처분할려합니다 [2] file 한국과맞지않은애플 23.10.03 671 0
200493 미니 (루머) 갤럭시 S24 울트라, 티타늄이 혼합된 프레임 적용? [21] AlieNaTiZ 23.10.03 1841 6
200492 미니 13 1년 좀 넘게 쓰고 99 됐네요 [3] 코러스 23.10.03 455 2
200491 미니 S23시리즈 6차베타 기대!! [1] OneUI2 23.10.03 601 1
200490 미니 사실 본 출처 이야기도 적당히 걸러 들어야합니다. [14] 흡혈귀왕 23.10.03 1539 15
미니 안드로이드 위젯 개발에 대해 [9] 불심 23.10.03 1162 29
200488 음향 오랜만에 찾아온 행복한 고민 헤드폰 고민ㅋㅋㅋ [10] MaxBigUltraPro+ 23.10.03 488 0
200487 미니 이번에 아이폰을 사볼까 고민중입니다 [12] TIME:TRAVELER 23.10.03 791 4
200486 미니 노트북 다음 업그레이드일까요? [8] 익명 23.10.03 391 0
200485 미니 one ui 6 홈에서 따라가는 애니메이션이 [11] file 펄럭펄럭 23.10.03 859 3
200484 미니 1년을 4일 앞둔 아이폰14 배터리 상태 [19] file 개구리 23.10.03 713 3
200483 미니 연휴 마지막날의 폰카📷 [4] file 개구리 23.10.03 224 6
200482 미니 제가 투명 위젯을 좋아하는 이유입니다 [1] file [성공]함께크는성장 23.10.03 539 3
200481 미니 선생님들 갤럭시 배터리 최적화 옵션 사용중이신가요?? [5] soboru 23.10.03 660 2
200480 미니 위젯 디테일 같은건 구글이 좀 잡아주면 좋겠습니다 [3] 하루우라라 23.10.03 372 4
200479 미니 잡담: (디씨펌) 누비아 8 Gen 4, 폭발적 소비전력 문제가 커 [8] Section31 23.10.03 1149 2
200478 미니 스벅 입장권 도착했습니다 [7] file [성공]함께크는성장 23.10.03 1010 22
200477 미니 오히려 학창시절엔 보급형 거의 못 본 것 같아요 [4] DKV2 23.10.03 621 5
200476 미니 에어팟맥스 해외직구 불안합니다.. [6] 후무룽 23.10.03 535 0
200475 미니 이런 거 보면 디테일이 참 부족하네요 [18] file 미하엘무야허 23.10.03 1380 9

추천 IT 소식 [1/]

스킨 기본정보

colorize02 board
2017-03-02
colorize02 게시판

사용자 정의

1. 게시판 기본 설정

게시판 타이틀 하단에 출력 됩니다.

일반 게시판, 리스트 게시판, 갤러리 게시판에만 해당

2. 글 목록

기본 게시판, 일반 게시판, 썸네일 게시판만 해당

썸네일 게시판만 해당

썸네일 게시판만 해당

썸네일 게시판만 해당

썸네일 게시판만 해당

3. 갤러리 설정

4. 글 읽기 화면

기본 10명 (11명 일 경우, XXXXX 외 1명으로 표시)

5. 댓글 설정

일정 수 이상의 추천을 받은 댓글에 표시를 합니다.

6. 글 쓰기 화면 설정

글 쓰기 폼에 미리 입력해 놓을 문구를 설정합니다.

서버에 요청 중입니다. 잠시만 기다려 주십시오...