使用AndroidManifest将背景设置为壁纸

时间:2016-03-13 10:31:49

标签: android

我能否以某种方式将布局的背景图像设置为与壁纸相同,但仅从AndroidManifest 设置?我知道我可以使用此代码以编程方式进行编写:

final WallpaperManager wallpaperManager = WallpaperManager.getInstance(this);
        final Drawable wallpaperDrawable = wallpaperManager.getDrawable();
        RelativeLayout rl = (RelativeLayout) findViewById(R.id.main);//Substitute with your layout
        rl.setBackground(wallpaperDrawable);

但我再说一遍,我需要通过AndroidManifetst 来做到这一点。 谢谢。

2 个答案:

答案 0 :(得分:1)

创建一个新类并从AppCompatAcitvity或'Activity'扩展它。覆盖其oncreate方法如下。

public class myWallpaperActivity extends Activity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        final WallpaperManager wallpaperManager = WallpaperManager.getInstance(this);
        final Drawable wallpaperDrawable = wallpaperManager.getDrawable();
        View r1 = findViewById(android.R.id.content);
        r1.setBackground(wallpaperDrawable);
    }
}

现在扩展此课程中的所有活动。

public class MainActivity extends myWallpaperActivity

如果您需要对其进行改进并加载新壁纸(如果更改并且未消除活动),则可以覆盖onResume方法而不是onCreate方法,如下所示

public class myWallpaperActivity extends Activity{


    @Override
    protected void onResume() {
        super.onResume();
        final WallpaperManager wallpaperManager = WallpaperManager.getInstance(this);
        final Drawable wallpaperDrawable = wallpaperManager.getDrawable();
        View r1 = findViewById(android.R.id.content);
        r1.setBackground(wallpaperDrawable);
    }
}

请注意,如果在设备上设置了动态壁纸,您将获得黑色背景

答案 1 :(得分:0)

您可以覆盖样式并在清单文件中导入该样式...

<style name="Background" parent="@android:style/Theme.NoTitleBar">
    <item name="android:background">@android:color/black</item>
       or 
    <item name="android:background">@drawable/attachment1</item>
</style>

现在在清单文件

<application  android:theme="@style/Background"/>

干杯。