2013-07-03 32 views
0

我是android開發中的noob。我正在嘗試livewallpaper的開發。我沒有任何錯誤進行代碼..但隨後livewallpaper在現場牆紙名單在我的AVD不diplayedAndroid動態壁紙不在列表中顯示

這是我的清單

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="ani.trial.lwp" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="7" /> 
    <uses-feature android:name="android.software.live_wallpaper"/> 

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" > 

     <service 
      android:name="ani.trial.lwp.mainservice" 
      android:label="Trial" 
      android:permission="android.permission.BIND_WALLPAPER"> 
      <intent-filter > 
       <action android:name="android.service.wallpaper.WallpaperService"/> 
      </intent-filter> 
       <meta-data android:name="android.service.wallpaper" 
        android:resource="@xml/layout"/> 
     </service> 
    </application> 

</manifest> 

,我的主要的Java代碼 -

package ani.trial.lwp; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.os.Handler; 
import android.service.wallpaper.WallpaperService; 
import android.view.SurfaceHolder; 

public class mainservice extends WallpaperService { 

    private final Handler mHandler = new Handler(); 

    @Override 
    public Engine onCreateEngine() { 
     // TODO Auto-generated method stub 
     return new RenderEngine(); 
    } 

     @Override 
     public void onCreate() { 
      super.onCreate(); 
     } 

     @Override 
     public void onDestroy() { 
      super.onDestroy(); 
     } 



       class RenderEngine extends Engine 
      { 
     boolean mVisible=true; 

     RenderEngine(){ 

     } 
     @Override 
     public void onVisibilityChanged(boolean visible){ 
      mVisible = visible; 
      if(visible) 
      drawFrame(); 
     } 

     private final Runnable mDrawScene = new Runnable(){ 
      public void run(){ 
       drawFrame(); 
      } 
     }; 
     void drawFrame() 
     { 
      //Don't render when not visible 
      if(!mVisible) return; 
      final SurfaceHolder holder = getSurfaceHolder(); 
      Canvas c= null; 

      try 
       { 
       c=holder.lockCanvas(); 
       if(c!=null){ 
        //TODO iterate through sprites/renderables 
        //and render them here 
        c.drawColor(Color.MAGENTA); 
       } 
      } 
      finally 
      { 
       if(c!=null) holder.unlockCanvasAndPost(c); 
      } 

      mHandler.removeCallbacks(mDrawScene); 
      if(mVisible){ 
       mHandler.postDelayed(mDrawScene, 1000/30); 
      } 
     } 
    }} 

任何想法什麼是錯的人?我正在嘗試一些教程,這就是我如何完成的。還有什麼好的教程動態壁紙開發?我得到了一些與renderscripts,但我不知道如何將它們添加在日食..預先感謝!

回答

0

這是兩個非常好的動態壁紙教程,你可以遵循: -

http://www.vogella.com/articles/AndroidLiveWallpaper/article.html

http://www.codeproject.com/Articles/108390/How-To-Create-Android-Live-Wallpaper

對於圖標的動態壁紙列表,XML文件「佈局」顯示,您所指的代碼必須具有如下定義的代碼:

 <?xml version="1.0" encoding="utf-8"?> 
    <wallpaper xmlns:android="http://schemas.android.com/apk/res/android" 
android:settingsActivity="packagename.LiveWallpaperSettings" 
android:thumbnail="@drawable/icon"/> 

縮略圖必須定義編輯它。

+0

oh man ..在vogella例子中使用的api已被貶值..雖然問題是,標籤應該有小寫字母W .. jeeze ..謝謝無論如何! – Ani

+0

歡迎您! – user2125722