android livewallpaper地球动态壁纸怎么实现的

2024-12-02 19:44:59
推荐回答(1个)
回答1:

对于Android 2.1来说Live Wallpapers动态壁纸的加入为Android桌面加入了更好的动态效果。如何开发一个Android动态桌面呢? 下面Android123给大家一个详细的步骤创建属于你自己的Live Wallpaper吧。

  1. 首先我使用Eclipse创建一个标准的Android工程这里package name我们使用cn.com.android123.cwj,然后进入工程的/res/文件夹,删除layout这个文件夹,当然里面的main.xml也会被删除的,对于Live Wallpaper来说传统的布局文件是不需要的。

  2. 类似AppWidget一样,我们可以加入动态壁纸的设置界面,我们在/res/文件夹中新建一个名为xml的文件夹,新建一个utf8编码的xml文件,名为livewallpaper.xml,内容为

  
    android:settingsActivity="cn.com.android123.cwj.LiveWallpaperSettings"
  android:thumbnail="@drawable/icon"/>
  这里我们可以看到上面的节点名为wallpaper,而设置的界面为 cn.com.android123.cwj.LiveWallpaperSettings 这个Activity,而在添加动态壁纸时显示图标为/res/drawable/icon 这个文件,同时我们再创建一个xml文件用于LiveWallpaperSettings这个Activity的布局,我们起名为livewallpaper_settings.xml内容为
  
    android:title="@string/livewallpaper_settings"
  android:key="livewallpaper_settings">

    android:key="livewallpaper_testpattern"
  android:title="标题"
  android:summary="简单描述"
  android:entries="@array/livewallpaper_testpattern_names"
  android:entryValues="@array/livewallpaper_testpattern_prefix"/>

    android:summary="动态描述"
  android:title="动态标题"
  android:summaryOn="动态测试"
  android:summaryOff="静止测试"/>
  

  3. 创建一个名为LiveWallpaper的类作为动态壁纸的主类,从WallpaperService父类继承,这里我们可以像写标准Android服务那样开发
  4. 新建类LiveWallpaperSettings从 PreferenceActivity 继承实现我们的设置界面,代码如下
  public class LiveWallpaperSettings extends PreferenceActivity implements
  SharedPreferences.OnSharedPreferenceChangeListener {
  @Override
  protected void onCreate(Bundle icicle) {
  super.onCreate(icicle);
  getPreferenceManager().setSharedPreferencesName(
  LiveWallpaper.SHARED_PREFS_NAME);
  addPreferencesFromResource(R.xml.livewallpaper_settings);
  getPreferenceManager().getSharedPreferences()
  .registerOnSharedPreferenceChangeListener(this);
  }

  @Override
  protected void onResume() {
  super.onResume();
  }

  @Override
  protected void onDestroy() {
  getPreferenceManager().getSharedPreferences()
  .unregisterOnSharedPreferenceChangeListener(this);
  super.onDestroy();
  }

  public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
  String key) {
  }
  }
  同时仍然在androidmanifest.xml中加入 下面的代码。
    android:name=".LiveWallpaperSettings"
  android:theme="@android:style/Theme.Light.WallpaperSettings"
  android:exported="true"
  android:icon="@drawable/icon">
  

  5. 由于Android动态壁纸是2.1 API Level为7才加入的,所以设置好minSDK以及需要设备支持动态壁纸,我们在androidmanifest.xml中加入
  
  
  6. 对于文中ListPreference用到的数组,及代码中涉及的颜色数组,我们在/res/values/ 文件夹中创建一个名为testpatterns.xml 的文件,内容为
  
  
  
  "Color Bars 16x9"
  "Color Bars 4x3"
  "EBU Color Bars"
  


  
  "smpte"
  "bars"
  "ebu"
  


  
  0xFF696969
  0xFFC1C1C1
  0xFFC1C100
  0xFF00C1C1
  0xFF00C100
  0xFFC100C1
  0xFFC10000
  0xFF0000C1
  0xFF696969
  0xFF00FFFF
  0xFFFFFF00
  0xFF052550
  0xFF36056D
  0xFF0000FF
  0xFFFF0000
  0xFFC1C1C1
  0xFF2B2B2B
  0xFF050505
  0xFFFFFFFF
  0xFF050505
  0xFF000000
  0xFF050505
  0xFF0A0A0A
  0xFF050505
  0xFF0D0D0D
  0xFF050505
  0xFF2b2b2b
  


  
  0xFFC0C0C0
  0xFFC0C000
  0xFF00C0C0
  0xFF00C000
  0xFFC000C0
  0xFFC00000
  0xFF0000C0
  0xFF0000C0
  0xFF131313
  0xFFC000C0
  0xFF131313
  0xFF00C0C0
  0xFF131313
  0xFFC0C0C0
  0xFF00214C
  0xFFFFFFFF
  0xFF32006A
  0xFF131313
  0xFF090909
  0xFF131313
  0xFF1D1D1D
  0xFF131313
  


  
  0xFFBFBFBF
  0xFFBFBF00
  0xFF00BFBF
  0xFF00BF00
  0xFFBF00BF
  0xFFBF0000
  0xFF0000BF
  0xFF000000
  

  


  转载