gpt4 book ai didi

android - 将 facebook 的个人资料图片设置为 LinearLayout 背景

转载 作者:搜寻专家 更新时间:2023-11-01 07:54:20 25 4
gpt4 key购买 nike

我一直在尝试在我的应用程序中将我的 facebook 个人资料图片设置为 Linearlayout 背景,但没有成功。这是我尝试执行此操作的两种方法:

第一种方式:从个人资料图片中获取uri并将其转换为drawable

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profile);
LinearLayout banner = (LinearLayout)findViewById(R.id.banner);
Profile profile = Profile.getCurrentProfile();
if(profile != null){
// profile_pic_id.setProfileId((profile.getId()));
Drawable d;
Uri uri = profile.getLinkUri();
//also tried profile.getProfilePictureUri(random_num,random_num)
try {

InputStream inputStream = getContentResolver().openInputStream(uri);
d = Drawable.createFromStream(inputStream, uri.toString());
} catch (FileNotFoundException e) {
d = getResources().getDrawable(R.drawable.blue_material);
}
banner.setBackgroundDrawable(d);
}
}

现在这总是抛出异常,所以我得到的 Drawable 是 blue_material 的(在 catch block 中设置的 Drawable),所以如果有人知道它为什么抛出一直异常(exception),我将不胜感激。

第二种方式:将ProfilePictureView转换为ImageView,然后在上使用getDrawable() ImageView

 ProfilePictureView profilePictureFB=(ProfilePictureView)findViewById(R.id.pic);
profilePictureFB.setProfileId((profile.getId()));
ImageView fbImage = ( ( ImageView)profilePictureFB.getChildAt( 0));
banner.setBackgroundDrawable(fbImage.getDrawable());

现在,当某人没有个人资料照片时,这会导致背景带有 facebook 放置的默认图片。

AND 每当我使用 decodeStream 时都会抛出异常。(下面的示例)

URL img_url =new URL("https://graph.facebook.com/"+profile.getId()+"/picture?type=normal");
Bitmap bmp =BitmapFactory.decodeStream(img_url.openConnection().getInputStream());//bmp a bitmap

我不想求助于在 stackoverflow 上问这个问题,因为我想自己解决它,但我尝试了很长时间,所以我不得不寻求一些帮助。

感谢所有回答的人:)

最佳答案

我解决了!!

我使用了 imageLoader,出于某种原因,url 可以与它​​一起使用,这是代码:

        imageView = (ImageView) findViewById(R.id.pic);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
imageLoader = ImageLoader.getInstance();

Profile profile = Profile.getCurrentProfile();
if(profile != null){
DisplayImageOptions options = new DisplayImageOptions.Builder().cacheInMemory(true).cacheOnDisk(true).build();
imageLoader.displayImage("http://graph.facebook.com/" + profile.getId() + "/picture?width=400&height=400", imageView, options);
// banner.setBackgroundDrawable(imageView.getDrawable());
imageView.setScaleType(ImageView.ScaleType.FIT_XY);

setScaleType 方法将我的 imageview 延伸到我所有的LinearLayout。有关通用图像加载器的更多信息,请访问此链接: https://github.com/nostra13/Android-Universal-Image-Loader

关于android - 将 facebook 的个人资料图片设置为 LinearLayout 背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30262168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com