【问题标题】:Android LiveWallpaper From Activity来自 Activity 的 Android LiveWallpaper
【发布时间】:2013-11-13 13:20:36
【问题描述】:

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

@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

【问题讨论】:

    标签: java android android-activity android-service live-wallpaper


    【解决方案1】:

    您是否将壁纸实现为服务?了解基础知识 - 查看 Lars Vogel 的动态壁纸教程here

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

    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 权限,但请再次阅读他的教程。

    【讨论】:

      【解决方案2】:

      通过activity启动壁纸服务,following是完美的工作,你也可以把following放在onclick(...)中,如果你启动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);
              }
          });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-10
        相关资源
        最近更新 更多