1

私の目標は、プロフィール写真のダウンロードを待って、その写真を使用するビデオを開始できるようにすることです。

提供されているFacebookウィジェットのProfilePictureViewを使用して画像を表示しています。

そして、executeMeRequestAsync()のonCompleteを待っていますが、これは、画像IDのみを含むGraphUserを待っているようです。ProfilePictureViewのsetProfileId()を実行すると、画像のダウンロードが開始されます。

ProfilePictureViewを使用してダウンロードを待機するonComplete()のようなものがある可能性はありますか?または、ビットマップなどを探す必要がありますが、ファイルのダウンロードが完了したことを報告するためにコールバックを作成するにはどうすればよいですか?

FBとonCompleteから情報を取得するコードは、ビデオを開始するボタンを表示します

Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {
    public void onCompleted(GraphUser user, Response response) {
        showStartButton();                  
    }               
}); 
4

3 に答える 3

2

次のようにユーザープロファイル画像を設定することもできます。

<com.facebook.widget.ProfilePictureView
android:id="@+id/friendProfilePicture"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:padding="5sp"
facebook:preset_size="small" />

facebook:preset_size:small / normal / large / custom。(必要に応じて)FacebookユーザーIDをコードで設定します:

ProfilePictureView profilePictureView = (ProfilePictureView) findViewById(R.id.friendProfilePicture);
profilePictureView.setProfileId(userId)`;
于 2014-08-30T12:52:19.470 に答える
1

ProfilePictureViewを使用する必要はありません(アニメーションにビューオブジェクトを直接埋め込む場合を除きます。その場合は、onCompletedコールバックでsetProfileIdを呼び出す必要があります)。onCompletedでプロフィール写真だけを取得したい場合は、次のようにすることができます。

String id = user.getId();
Uri uri = Uri.parse("http://graph.facebook.com/" + id + "/picture");

次に、そのURIを使用してビットマップを作成します(その方法については、こちらの回答を参照してください)。

異なるサイズが必要な場合は、URIで「タイプ」または「高さ」/「幅」パラメーターを指定することもできます。パラメータ値の詳細については、このページを参照してください(および「ユーザーのプロフィール写真」を検索してください)。

于 2013-01-29T17:58:02.873 に答える
0

次の画面に進む前にFacebookのプロフィール写真をダウンロードしてもらうために、AsyncTaskのdoInBackgroundメソッド内でMingLiによってリンクされたloadBitmapメソッドを使用しました。

onCompleteメソッドは次のようになります

public void onCompleted(GraphUser user, Response response) {
    String id = user.getId();
    String url = "http://graph.facebook.com/" + id + "/picture?type=normal";
    ImageLoader il = new ImageLoader(getActivity());//this class extends AsyncTask<String, Integer, Bitmap>
    il.execute(url);
    showStartButton();                  
}

したがって、このようにして、AsyncTask onPostExecute()メソッドが呼び出されたときに消えるProgressDialogを使用して、ユーザーが続行できないようにします。これは、ダウンロードが終了したことを意味します。

于 2013-02-02T20:23:52.440 に答える