直接の回答ではありません。「どのようにして実現していくか」考え方です。
まず「ユーザーが自由にアプリの背景を変更することができるプログラム」をそのまま検索しても、単語に分解してもおそらくそっくりそのまま、自分がやりたいことができるようなものは出てきません。
なぜならそれは質問者さん自身が作りたいものであり、他の誰かが作りたいものではないからです。
ではどうするか。
自分自身がやりたいこと=要件 を細分化しましょう。
どのような画面にすると「ユーザーが自由に○○を変更できるようになるか」(○○は何でも同じです)
ボタンを設置して変更する?用意されたものから選択してそれに変更する?
画像などをアップロードしてその画像を採用する?
etc.
ここが決まらないと画面が決まりません。画面は機能です。
何をどこに配置して、どれにどのような動きを持たせるか。
作りたいのは質問者さんなので、考えるのも質問者さんです。
画面が決まったら、次は部品の細分化です。
要件の細分化がどれだけ細かくできているかによります。
ただ、一気に全部作ろうとしてはいけません。
例えば「幾つか配置されたボタンを押したらボタンにより決まったテキストを画面に表示する」というものであった場合、
・ボタンを配置して表示を確認する
・ボタンを押したときに押したボタンが区別できているか確認する
・どのボタンを押しても同じ文言を画面に表示できるか確認する
・ボタン毎に割り振ったテキストを画面に表示できるか確認する
・・・・・
といった形で。
部品は細かければ細かいほど汎用的に使えるようになります。
その観点から、自身がやりたいことを具体化し、細分化し、作業も細かく分解し、単体で部品を作り、単体で動作を確認し、最後につなげて、最初の要件通りになっているかを確認してください。
追記:
「製作中のアプリに」というコメントがありますが、
質問内容だけでは「どういうアプリでどこまでできているのか」というのが分かりません。
機能の追加ということですが、例えどんなに簡単な追加であっても、横やりをちょっと入れたら良いというわけではないケースが非常に多いです。
元々の作りに依存してしまう部分も必ずあるので「コピペで動くコード」を提示するのは不可能です。
「名前だけ変えたら動く」ものでも不可能です。
回答に書いたように細分化した1つ1つの作業に近いことしているサンプルコードならネットに転がっているかもしれません。
今、どこまで出来ているかは質問者さんしか知りません。何が出来ていないかも。
まずは要件を具体化するところから始めてください。
コードを書くのはどのような部品を作るか決まってからです。