You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 10:25:25