안 드 로 이 드 는 손 으로 launcher 개발 을 가르쳐 줍 니 다(4)--widget 표시

본인 의 프로젝트 는 현재 작은 부품 을 추가 하지 않 기 때문에 저 는 본 고 를 따라 하지 않 겠 습 니 다.다음은 원래 내용 입 니 다.원본 주소:http://www.bangchui.org/read.php?tid=12239
우 리 는 이러한 효 과 를 얻 으 려 고 합 니 다."add widget"을 누 르 면 widget 목록 을 팝 업 한 다음 widget 을 선택 한 후 화면 에 표시 합 니 다.다음 과 같 습 니 다.  제4 과:widget 1 을 표시 합 니 다.widget 정 보 를 얻 으 면 widget 을 얻 는 것 은 매우 간단 합 니 다.시스템 에 요청 만 보 내 면 시스템 이 widget 목록 을 열 고 하 나 를 선택 하면 됩 니 다.코드 는 다음 과 같 습 니 다:
?
2.widget 의 view 를 layot 에 추가
widget 을 선택 하면 onActivity Result 를 통 해 activity 에 알 립 니 다.widget 의 정 보 는 Intent data 에 포함 되 어 있 습 니 다.자세 한 내용 은 코드 설명 을 보십시오.
void addWidget() {
        int appWidgetId = mAppWidgetHost.allocateAppWidgetId();
        Intent pickIntent = new Intent(AppWidgetManager.ACTION_APPWIDGET_PICK);
        pickIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
        // start the pick activity
        startActivityForResult(pickIntent, [b]REQUEST_PICK_APPWIDGET[/b]);
    }
 @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // The pattern used here is that a user PICKs a specific application,
        // which, depending on the target, might need to CREATE the actual
        // target.
 
        // For example, the user would PICK_SHORTCUT for "Music playlist", and
        // we
        // launch over to the Music app to actually CREATE_SHORTCUT.
 
        if (resultCode == RESULT_OK) {
            switch (requestCode) {
            case REQUEST_PICK_APPWIDGET:
                addAppWidget(data);
                break;
            case REQUEST_CREATE_APPWIDGET:
                completeAddAppWidget(data);
                break;
 
            }
        }
    }
 
    void addAppWidget(Intent data) {
        // TODO: catch bad widget exception when sent
        int appWidgetId = data.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,
                -1);
        AppWidgetProviderInfo appWidget = mAppWidgetManager
                .getAppWidgetInfo(appWidgetId);
 
        //widget          ,   widget     
        if (appWidget.configure != null) {
            // Launch over to configure widget, if needed
            Intent intent = new Intent(
                    AppWidgetManager.ACTION_APPWIDGET_CONFIGURE);
            intent.setComponent(appWidget.configure);
            intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
 
            startActivityForResultSafely(intent, REQUEST_CREATE_APPWIDGET);
        } else {
        //    widget         ,    widget layout 
            // Otherwise just add it
            onActivityResult(REQUEST_CREATE_APPWIDGET, Activity.RESULT_OK, data);
        }
    }
 
    void startActivityForResultSafely(Intent intent, int requestCode) {
        try {
            startActivityForResult(intent, requestCode);
        } catch (ActivityNotFoundException e) {
            Toast.makeText(this, "activity_not_found", Toast.LENGTH_SHORT)
                    .show();
        } catch (SecurityException e) {
            Toast.makeText(this, "activity_not_found", Toast.LENGTH_SHORT)
                    .show();
        }
    }
 
    /**
     *   widget   layout  
     * @param data    widget   
     */
    private void completeAddAppWidget(Intent data) {
        Bundle extras = data.getExtras();
        int appWidgetId = extras
                .getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, -1);
 
        Log.d(TAG, "dumping extras content=" + extras.toString());
 
        AppWidgetProviderInfo appWidgetInfo = mAppWidgetManager
                .getAppWidgetInfo(appWidgetId);
 
        // Perform actual inflation because we're live
        synchronized (mLock) {
             
            //    widget view
            mHostView = mAppWidgetHost.createView(this, appWidgetId,
                    appWidgetInfo);
            mHostView.setAppWidget(appWidgetId, appWidgetInfo);
 
            //    view   layout 
            LayoutParams lp = new LinearLayout.LayoutParams(
                    appWidgetInfo.minWidth, appWidgetInfo.minHeight);
            mainLayout.addView(mHostView, lp);
 
            mHostView.requestLayout();
        }
 
    }

안 드 로 이 드 손 으로 launcher 개발 가르쳐 줄 게(1)(AndroidStudio 버 전)
안 드 로 이 드 는 손 으로 launcher(2)를 개발 하 는 것 을 가르쳐 줍 니 다.설 치 된 프로그램 을 보 여 줍 니 다.
안 드 로 이 드 는 손 으로 launcher(3)를 개발 하 는 것 을 가르쳐 줍 니 다.설 치 된 프로그램 을 시작 합 니 다.
안 드 로 이 드 는 손 으로 launcher 개발 을 가르쳐 줍 니 다(4)--widget 표시
안 드 로 이 드 는 손 으로 launcher(5)를 개발 하 는 것 을 가르쳐 줍 니 다.벽지 설정
다음으로 이동:http://www.bangchui.org/read.php?tid=12239

좋은 웹페이지 즐겨찾기