1

我正在尝试做的是带有一些动作的动态壁纸(已经完成)但问题就在那里......我已经在 Activity 中做到了,其中“动作”是一个扩展视图的类,而 Activity 的setContentView()方法不是t一些布局..就是这个View。我现在要做的是创建选项以将该活动设置为墙纸,但我不知道如何。这是我onCreate()在加载View. 我希望那是墙纸..那么我怎样才能将其设置为墙纸呢?

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        SnowFall snowFallView = new SnowFall(this);
        setContentView(snowFallView);
        snowFallView.setBackgroundDrawable(getResources().getDrawable(
                R.drawable.christmas));

    }

这是我要创建的示例应用程序:https: //play.google.com/store/apps/details?id=com.chiralcode.wallpaper.autumn&hl=bg

4

2 回答 2

4

您是否将墙纸作为服务实施?获取基础知识 - 在此处查看 Lars Vogel 的动态壁纸教程

简而言之,您可以有意地设置壁纸:

Intent intent = new Intent(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER);
intent.putExtra(WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT, new ComponentName(this, MyWallpaperService.class));
startActivity(intent);

您需要根据您的类名调整上述内容,并记住在您的 AndroidManifest 中拥有 android.permission.BIND_WALLPAPER 权限,但请再次阅读他的教程。

于 2013-11-13T13:52:48.160 回答
1

通过activity启动壁纸服务,following非常适合,你也可以在onclick(...)中加入following,如果你启动livewallpaper(你自己的动态壁纸直接通过一键点击)你只需编写以下代码,

        btnInstallWallpaper.setOnClickListener(new OnClickListener() {

        @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
        @SuppressLint("InlinedApi")
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
             Intent intent = new Intent();
            if (android.os.Build.VERSION.SDK_INT >= 16)
            {
                intent.setAction("android.service.wallpaper.CHANGE_LIVE_WALLPAPER");
                intent.putExtra("android.service.wallpaper.extra.LIVE_WALLPAPER_COMPONENT", new ComponentName("com.example.wall", "com.example.wall.WallpaperService"));
            } else

                intent.setAction("android.service.wallpaper.LIVE_WALLPAPER_CHOOSER");
                intent.putExtra("android.service.wallpaper.extra.LIVE_WALLPAPER_COMPONENT", new ComponentName("com.example.wall", "com.example.wall.WallpaperService"));  // package + classname
            //}  
            startActivity(intent);
        }
    });
于 2014-09-09T10:02:12.113 回答