[AppWidget] 위젯이 Home Screen에 차지하는 Cell 갯수를 구하는 범용적인 방법은 무엇인가요?
작성자juniano작성시간15.01.27조회수1,857 목록 댓글 3위젯을 하나 만들었습니다. 일반적인 스마트폰이 4X4 cell의 홈스크린을 지원한다고 했을 때 4X2 cell을 차지합니다.(스크린 절반)
appwidget provider는 다음과 같습니다.
<?xml version="1.0" encoding="UTF-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:initialLayout="@layout/widget_4x2"
android:minHeight="110dp"
android:minWidth="250dp"
android:resizeMode="vertical|horizontal"
android:updatePeriodMillis="0" >
</appwidget-provider>
minHeight와 minWidth는 android developer site에 나와 있는데로 계산하였습니다.
(Columns or Rows) | Available Size (dp) ( minWidth or minHeight) |
|---|---|
| 1 | 40dp |
| 2 | 110dp |
| 3 | 180dp |
| 4 | 250dp |
| … | … |
| n | 70 × n − 30 |
하지만 이 값은 모든 디바이스에 적용되는 것 같지 않습니다. 어떤 디바이스(특히 tablet)에서는 4 cell을 지정하기 위해 250dp를 넣었을 경우 3 cell만 할당이 되는 경우가 있습니다.
그리고 android 4.1에서 지원되는 onAppWidgetOptionsChanged를 이용하여 dynamic widget view를 지원하려고 할 때 위의 공식을 이용해서 각각의 cell을 계산한 후 적당한 view layout을 지정하려고 하는데 이값이 device마다 다 다릅니다.
예를 들면 Galaxy S5 Active에서 4X2 widget view를 만들었을 때 AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH와 AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT는 각각 339, 160인데 이 값을 위의 공식에 대입(소수점 버림)하면 5와 2, 즉 5X2 cell을 차지하는 위젯이라고 계산이 되어 실제 4X2 위젯과는 다른 위젯 cell size가 나오고 있는데요. (Nexus 6는 각각의 값이 306, 133으로 4x2 cell로 잘 표시됩니다.)
질문은 이렇게 요약할 수 있겠네요.
1. 모든 디바이스에서 통용할 수 있는 appwidget provider의 minWidth와 minHeight값은 무엇을 쓰면 될까요?
2. 디바이스에 상관없이 위젯이 실제 차지하고 있는 Cell size를 알아내는 방법이 있을까요?
댓글
댓글 리스트-
작성자슈퍼성근 작성시간 15.01.28 안녕하세요.
제가 몸을 담고 있는 곳과 관련된 질문이라 포함되어 있네요.
그러한 부분은 답변드리기 어렵습니다. T-T
특정 단말을 거론하는 것을 배제하고 말씀드리겠습니다.
결론을 말씀드리자면 완벽한 공식은 없을 듯 싶습니다.
원칙적으로는 안드로이드 사이트에서 제공된 공식으로 모드 홈 앱이 구현되어 있어야합니다.
하지만 안쉽게도 그것을 어긴 홈앱이 생겨버렸기 때문입니다.
사실 그러면 안되는데 말이죠...
-
답댓글 작성자juniano 작성자 본인 여부 작성자 작성시간 15.01.28 그런데 문제는 그것을 어긴 홈앱이 레퍼런스 디바이스인 Google Nexus 시리즈에도 있다는 것입니다. 제가 위에서 특히 tablet이라고 언급드린 부분들이 Google의 Nexus 7, 9, 10에도 동일하게 나타나고 있다는 것이죠. 해당 디바이스들에서 4 cell을 표현하기 위해 minWidth를 250dp로 지정하면 3 cell만 할당됩니다. 위 공식에 대해서 안드로이드 사이트에서는 일반 smart phone과 tablet 디바이스를 따로 구분해서 적용하라는 내용은 찾아볼 수 없었습니다.
-
답댓글 작성자juniano 작성자 본인 여부 작성자 작성시간 15.01.30 완벽한 공식이 없다면 혹시 가장 보편적으로 쓰이는 수치나 방법이 있을까요? Google에서 기본적으로 제공하는 Widget도 윗 공식을 따르지 않는 경우가 있어서 어떻게 정해야할 지 혼란스러운 상황입니다.