RelativeLayout 背景圖片來自網絡 URL,已引入 Picasso 庫。
RelativeLayout rl = findViewById(R.id.my_layout);
String imageUrl = "https://example.com/bg.jpg";
Target target = new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
// 設置背景,注意 API 版本兼容
Drawable drawable = new BitmapDrawable(getResources(), bitmap);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
rl.setBackground(drawable);
} else {
rl.setBackgroundDrawable(drawable);
}
}
@Override
public void onBitmapFailed(Exception e, Drawable errorDrawable) {
// 加載失敗可設置默認背景
rl.setBackgroundResource(R.drawable.default_bg);
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
// 可設置佔位圖
rl.setBackgroundDrawable(placeHolderDrawable);
}
};
// 關鍵:持有 target 引用,防止被 GC 回收導致回調不執行
rl.setTag(target);
Picasso.get()
.load(imageUrl)
.into(target);