안드로이드 개발 질문/답변 
    (글 수    45,052)
        	
        
        
    [질문] 위젯을 만들었는데요...
AppWidgetProvider 와 를 AppWidgetManager 이용해서
띄우는데 성공했습니다. (블로그 참조)
그리고나서.....
이미지버튼 추가했는데요. 버튼을 클릭시 다이얼로그박스를 띄우려고 하는데요.
워낙에 AppWidgetProvider는 제약조건이 까다롭기 때문에 쉽지 않네요.
App 위젯의 레이아웃을 생성하는것은, 리모트뷰 기반이기 때문에
모든종류의 레이아웃 또는 뷰위젯을 지원하지 않습니다..
즉 버튼을 누르면 Activity에서 처럼 리스너 이벤트가 발생해서 띄우려는데...
App위젯 상에서는 어떻게 해야 하는지 도무지 감이 오지 않습니다..
조언부탁드립니다..
                                
                            AppWidgetProvider 와 를 AppWidgetManager 이용해서
띄우는데 성공했습니다. (블로그 참조)
그리고나서.....
이미지버튼 추가했는데요. 버튼을 클릭시 다이얼로그박스를 띄우려고 하는데요.
워낙에 AppWidgetProvider는 제약조건이 까다롭기 때문에 쉽지 않네요.
App 위젯의 레이아웃을 생성하는것은, 리모트뷰 기반이기 때문에
모든종류의 레이아웃 또는 뷰위젯을 지원하지 않습니다..
즉 버튼을 누르면 Activity에서 처럼 리스너 이벤트가 발생해서 띄우려는데...
App위젯 상에서는 어떻게 해야 하는지 도무지 감이 오지 않습니다..
조언부탁드립니다..
                2010.06.11 14:34:43                            
            
                        
            
그리고 리모트 뷰를 사용한다고 해서 모든 레이아웃이나 뷰를 사용하지 못하는건 아니죠? (^_^) <<- 이에 대한 대답입니다..
리모트뷰RemoteViews 오브젝트  (그리고, 결과적으로 하나의 App 위젯)은 
다음과 같은 레이아 웃 클래스를 지원할 수 있다.
FrameLayout
LinearLayout
RelativeLayout
그리고 다음과 같은 위젯 클래스들을 지원한다.
AnalogClock
Button
Chronometer
ImageButton
App 위젯(Widgets) ㅣ 385
ImageView
ProgressBar
TextView
이러한 클래스들의 자손들
descendants은 지원되지 않는다.
라는 한계가 있네요~ㅎㅎ













Widget의 Event로 Activity를 띄우는 방법은 PendingIntent를 이용하면 됩니다.
그리고 리모트 뷰를 사용한다고 해서 모든 레이아웃이나 뷰를 사용하지 못하는건 아니죠? (^_^)
(물론 Activity와 비교할수 없이 많은 제약이 따르기는 합니다. 기본적으로 이녀석은 BroadcastReceiver니까요...)
Widget의 Button으로 Sample Activity를 띄우는 방법입니다.(아래처럼 API로 묶어서 저는 사용하고 있습니다.)
private void linkViewWithActivity(Context context, RemoteViews views, int viewId) {
Intent launchIntent = new Intent(event);
launchIntent.setComponent(new ComponentName(context, SampleActity.class));
pendingIntent = PendingIntent.getActivity(context, 0, launchIntent, 0);
views.setOnClickPendingIntent(viewId, pendingIntent);
}
참고하세요~