所以我一直试图通过Picasso为我的LinearLayout加载背景图片一段时间。我尝试了几种不同的方法,但似乎没有一种方法可行。
方法1:
Picasso.with(LoginActivity.this).load(R.drawable.login_background).into(new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
loginLayout.setBackground(new BitmapDrawable(LoginActivity.this.getResources(), bitmap));
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
// Implement Logic
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
// Implement Logic
}
});
我还读到目标可能是垃圾收集的。即使在通过自定义布局考虑到这一点之后,也没有背景图像。
方法2:
final ImageView background = new ImageView(LoginActivity.this);
Picasso.with(background.getContext())
.load(R.drawable.login_background)
.fit()
.into(background, new com.squareup.picasso.Callback() {
@Override
public void onSuccess() {
loginLayout.setBackgroundDrawable(background.getDrawable());
}
@Override
public void onError() {
}
});*/
我不知道为什么这不起作用。
方法3:
BitmapDrawable loginBackground = (BitmapDrawable) LoginActivity.this.getResources().getDrawable(R.drawable.login_background);
int width = loginBackground.getBitmap().getWidth();
int height = loginBackground.getBitmap().getHeight();
ImageView background = new ImageView(LoginActivity.this);
Picasso.with(background.getContext())
.load(R.drawable.login_background)
.resize(width, height)
.centerCrop()
.into(background);
if (background.getDrawable() != null) System.out.println("BACKGROUND NOT NULL");
loginLayout.setBackground(background.getDrawable());
我尝试在这里创建自己的BitMapDrawable并通过Picasso加载内容。最后,我设置了背景。
任何帮助将不胜感激!