我的目标是等待个人资料图片下载,以便我可以开始使用该图片的视频。
我正在使用提供的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();
}
});
答案 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()方法时,它会消失,这意味着下载已经完成。