如何在Android Studio中通过URL设置Kotlin壁纸及点击按钮获取背景图?
一、在Android Studio中使用Kotlin通过URL设置壁纸
步骤1:添加必要权限
在AndroidManifest.xml中声明所需权限:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.SET_WALLPAPER" />
注:
SET_WALLPAPER属于普通权限,无需动态申请;Android 13+无需额外权限。
步骤2:引入图片加载库(推荐Glide)
在app/build.gradle(Module级别)的dependencies块中添加Glide依赖:
dependencies { implementation 'com.github.bumptech.glide:glide:4.16.0' kapt 'com.github.bumptech.glide:compiler:4.16.0' }
若未添加KAPT插件,在文件顶部补充:
plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android' id 'kotlin-kapt' }
步骤3:编写设置壁纸的代码
通过Glide异步加载网络图片,再利用WallpaperManager设置壁纸:
import android.app.WallpaperManager import android.content.Context import android.graphics.Bitmap import com.bumptech.glide.Glide import com.bumptech.glide.request.target.SimpleTarget import com.bumptech.glide.request.transition.Transition fun setWallpaperFromUrl(context: Context, imageUrl: String) { val wallpaperManager = WallpaperManager.getInstance(context) Glide.with(context) .asBitmap() .load(imageUrl) .into(object : SimpleTarget<Bitmap>() { override fun onResourceReady(resource: Bitmap, transition: Transition<in Bitmap>?) { try { wallpaperManager.setBitmap(resource) // 可添加设置成功的提示逻辑 } catch (e: Exception) { e.printStackTrace() // 处理设置失败的场景 } } }) }
调用示例(Activity中):
val imageUrl = "https://example.com/your-image.jpg" setWallpaperFromUrl(this, imageUrl)
二、点击按钮时通过URL获取图片并设为背景图
步骤1:添加网络权限
在AndroidManifest.xml中添加:
<uses-permission android:name="android.permission.INTERNET" />
步骤2:编写点击事件与背景设置代码
给按钮绑定点击事件,通过Glide加载图片并设置为View/布局背景:
import android.os.Bundle import android.widget.Button import android.widget.LinearLayout import androidx.appcompat.app.AppCompatActivity import com.bumptech.glide.Glide import com.bumptech.glide.request.target.ViewTarget import com.bumptech.glide.request.transition.Transition import android.graphics.drawable.Drawable class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val btnSetBackground = findViewById<Button>(R.id.btn_set_background) val rootLayout = findViewById<LinearLayout>(R.id.root_layout) val imageUrl = "https://example.com/your-image.jpg" btnSetBackground.setOnClickListener { // 直接设置布局背景 Glide.with(this) .load(imageUrl) .error(R.drawable.error_placeholder) // 加载失败时显示占位图 .into(object : ViewTarget<LinearLayout, Drawable>(rootLayout) { override fun onResourceReady( resource: Drawable, transition: Transition<in Drawable>? ) { view.background = resource } }) } } }
可选:加载为Bitmap后设置背景
如果需要对图片做额外处理,可加载为Bitmap再设置:
Glide.with(this) .asBitmap() .load(imageUrl) .into(object : SimpleTarget<Bitmap>() { override fun onResourceReady(resource: Bitmap, transition: Transition<in Bitmap>?) { rootLayout.background = BitmapDrawable(resources, resource) } })
内容的提问来源于stack exchange,提问作者Omid Rikazadeh
相关产品推荐
相关产品推荐

