【问题标题】:How to create a settings activity for Android Live Wallpaper如何为 Android 动态壁纸创建设置活动
【发布时间】:2012-01-28 22:38:27
【问题描述】:

如何在这样的动态壁纸中创建设置活动?

Example Picture

我只用一个简单的文本构建了设置活动,但遇到了一些问题。 第一个问题是我不能为此活动使用布局 XML 文件。 第二个:当我尝试以编程方式构建该活动时,我无法将目录设置为系统图标 (drawable/ic_menu_more)。 我还需要使用 SeekBar。

如果你能帮助我,我会很高兴 =)

【问题讨论】:

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


【解决方案1】:

使用系统图标:

<service android:name="com.livewallpaper.warm.LiveWallpaper"
            android:label="@string/app_name"
            android:icon="@drawable/ic_menu_more">

            <intent-filter>
                <action android:name="android.service.wallpaper.WallpaperService" />
            </intent-filter>
            <meta-data android:name="android.service.wallpaper"
                android:resource="@xml/livewallpaper" />

        </service>

在 XML-livewallpaper.xml 中:

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

【讨论】:

    【解决方案2】:

    Android 开发网站(现已缓存)上的 LiveWallpaper 示例正是这样: http://web.archive.org/web/20111229075658/http://developer.android.com/resources/samples/CubeLiveWallpaper/index.html

    更具体地说: http://web.archive.org/web/20120104043512/http://developer.android.com/resources/samples/CubeLiveWallpaper/src/com/example/android/livecubes/cube2/CubeWallpaper2Settings.html

    简而言之:

    public class CubeWallpaper2Settings extends PreferenceActivity
    implements SharedPreferences.OnSharedPreferenceChangeListener {
    
    @Override
    protected void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        getPreferenceManager().setSharedPreferencesName(
                CubeWallpaper2.SHARED_PREFS_NAME);
        addPreferencesFromResource(R.xml.cube2_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) {
    }
    }
    

    【讨论】:

    • 链接已失效。您介意更新答案吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多