1

То, что я пытаюсь сделать, это «Живые обои» с каким-то действием (это уже сделано), но проблема в том, что я сделал это в Activity, действие «action» - это класс, который расширяет view и метод Activity setContentView() - это не какой-то макет. Это View. И теперь я пытаюсь создать параметр, чтобы установить эту активность в качестве обоев, но я не знаю, как это сделать. Это мой метод onCreate() из основной деятельности, которая загружает View. Я хочу, чтобы это был обои. Как я могу настроить его так, чтобы он был одним?Android LiveWallpaper от Activity

@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

ли вы что обои в качестве службы? Получить основы - проверить учебник Ларс Фогеля на живых обоях here

Короче говоря, вы можете установить обои с намерением:

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

Вам необходимо будет адаптировать выше ваши имена классов, и не забудьте у вас есть разрешение android.permission.BIND_WALLPAPER в вашем AndroidManifest, но опять же прочитайте его учебник.

+0

ОК, спасибо, я проверю его :) –

1

Начните работу с обоими функциями через работу, следуя за этой работой, вы можете добавить следующее: 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); 
     } 
    }); 
Смежные вопросы