Android:如何等待Facebook个人资料图片下载?

时间:2013-01-29 05:06:21

标签: android facebook download profile image

我的目标是等待个人资料图片下载,以便我可以开始使用该图片的视频。

我正在使用提供的facebook小部件:ProfilePictureView来显示图片。

我正在等待executeMeRequestAsync()的onComplete,但这似乎等待只包含图片ID的GraphUser。当我这样做时,ProfilePictureView的setProfileId()就是它开始下载图片的时候。

有没有可能像使用ProfilePictureView那样等待下载的onComplete()?或者我需要寻找一个Bitmap或者其他东西,但是我如何进行回调以报告文件下载已完成?

从FB获取信息的代码和onComplete显示我的按钮,它将启动视频

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

3 个答案:

答案 0 :(得分: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)`;

答案 1 :(得分:1)

您不需要使用ProfilePictureView(除非您想直接在视图中嵌入视图对象,在这种情况下,您应该在onCompleted回调中调用setProfileId)。如果您想获取个人资料照片,请在onCompleted中执行以下操作:

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

然后使用该uri创建位图(请参阅answers here了解如何操作)。

如果您想要不同的尺寸,您还可以在uri中指定“type”或“height”/“width”参数。有关参数值的详细信息,请参阅this page(并搜索“用户的个人资料图片”)。

答案 2 :(得分:0)

为了实现想要我想要:在进入下一个屏幕之前下载facebook个人资料图片我在AsyncTask的doInBackground方法中使用了loadBitmap方法linked by Ming Li

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();                  
}

所以这样我通过使用ProgressDialog来阻止用户继续,当调用AsyncTask onPostExecute()方法时,它会消失,这意味着下载已经完成。