我一直试图在我的应用程序中将我的facebook个人资料图片设置为Linearlayout
背景。
以下是我尝试这两种方式:
第一种方式:从个人资料图片中获取uri并将其转换为可绘制的
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块中设置的Drawable
),所以如果有人知道为什么它一直抛出异常我'不胜感激。
第二种方式:将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上提出这个问题,因为我想自己解决这个问题,但是我试了这么久,所以我得帮忙。
感谢所有回答的人:)
答案 0 :(得分:3)
我解决了!!
我使用了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
在我的所有LinearLayout
中展开我的图片浏览。
有关通用图像加载器的更多信息,请访问此链接:
https://github.com/nostra13/Android-Universal-Image-Loader
答案 1 :(得分:1)
我不确定,但这是我以前做的事情
img_url =new URL("https://graph.facebook.com/"+uname+"/picture?type=normal");
bmp =BitmapFactory.decodeStream(img_url.openConnection().getInputStream());//bmp a bitmap
linearlayout.setImageBitmap(bmp);//your linear layout