【ご助言お願いします】ホームアプリ作成での、ライブ壁紙を壁紙に配置する方法について

691 views
Skip to first unread message

ミケ猫@A

unread,
Apr 13, 2012, 12:44:01 PM4/13/12
to android-g...@googlegroups.com
はじめまして、今回から参加させて頂きましたミケ猫と申します。
個人的にAndroidアプリを作っているのですがホームアプリ作成に伴い疑問にぶつかってしまったので質問させて下さい。

現在壁紙にライブ壁紙を指定したいと思っているのですが通常の壁紙のやり方はわかるもライブ壁紙を背景に指定する方法が分からず困っています。
標準のホームアプリでと言うわけではなく「自作ホームアプリ」でです。
ライブ壁紙の作成そのものと、標準ホームでの設定は問題ありません。

取っ掛かりも見付からないため完全に手詰まりになってしまい、本当に困っています。
どうかご助言のほどよろしくお願いします!

primevision

unread,
Apr 16, 2012, 3:18:23 AM4/16/12
to android-g...@googlegroups.com
こんにちは、primevisionと申します。

オリジナルのホームアプリにデフォルトでオリジナルのライブ壁紙を設定して
おきたいということでしょうか?
以前同じ事をしようとしましたが、方法は分かりませんでした。。
(できないんだと思ってます。できるなら個人的にも知りたいです)

そのため「そのライブ壁紙と同じ動きをするもの」をホームアプリの
画面の一番下のレイヤーに表示するようにしました。
一応これで見た目上は通常のライブ壁紙と同じにできます。
ただ設定が必要なライブ壁紙の場合、通常のライブ壁紙の設定と同じやり方は
できないので、他に何か設定メニューを作る必要があります。

あとこれだとユーザーが他の壁紙orライブ壁紙に変更できないので
(変えてもこの「ライブ壁紙もどき」に隠れてしまう)オリジナルライブ壁紙の
ON/OFFをできるようにしました。
参考にした他のアプリ(キティかリラックマのアプリ)がそうなってたので。。

他に方法が無かったら試してみてください。

ミケ猫@A

unread,
Apr 18, 2012, 12:10:27 AM4/18/12
to 日本Androidの会
説明が悪いようなので追加します。

===========メインJavaファイル==============
package mikeneko.HomeTest;

import android.app.Activity;
import android.os.Bundle;

public class Home_Test extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

}
}

===========mail.xmlファイル==============
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/
android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>

</LinearLayout>

===========マニフェストファイル==============
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="mikeneko.HomeTest"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="7" />

<application android:icon="@drawable/icon" android:label="@string/
app_name">
<activity android:name=".Home_Test"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.HOME"/
>
<category
android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>

</application>
</manifest>

===========説明==============
上記のプロジェクトを作ってみましたがホームアプリを上記プロジェクトアプリに変更しても背景は真っ黒でした。
この状態で、壁紙やライブ壁紙が表示されるようにするにはどうしたらいいでしょうか?

また、他のホームアプリでライブ壁紙などを変更した時、ホームアプリを切り替えても同じものが指定されていますが、その状態がどうやって出来ているのか
がわかりません。

primevision

unread,
Apr 18, 2012, 1:22:36 AM4/18/12
to android-g...@googlegroups.com
こんにちは。

単にレイアウトの背景の問題かと思いましたが違うようですね。。
あとはActivityを背景透明で起動する方法があったと思いますが
それを試すくらいしか思いつきません。

LauncherのソースはここからDLできます。

けっこう複雑なので全部は理解できてないです。

ホームアプリ実際に作ってみて思いましたがいろんな要素があって
難しいです。あとホームアプリにバグがあると端末が起動できなくなる
可能性もあるので気をつけてください。



Message has been deleted

ミケ猫@A

unread,
Apr 21, 2012, 6:28:04 AM4/21/12
to 日本Androidの会
最終的に自分で解決しました。
今後同じ疑問を持った方のためにここにやり方を記載しておきます。
これが必ずしも正しいとは限らないので、それだけはご注意ください。

①valuesフォルダに「styles.xml」を作成する。

②styles.xmlに下記を入れる

<!-- 背景のみ表示させる -->
<style name="Theme.Wallpaper">
<item name="android:windowBackground">@android:color/transparent</
item>
<item name="android:colorBackgroundCacheHint">@null</item>
<item name="android:windowShowWallpaper">true</item>
</style>

③manifest.xmlで、ホームとなるアクティビティに以下を追加する。

<activity android:name=".Home_Sample"
android:label="@string/app_name"
android:launchMode="standard"
android:theme="@style/Theme.Wallpaper">

「android:theme="@style/Theme.Wallpaper"」が追加する項目です。

やり方は以上です。
結果として、アクティビティの背景が透過され、アイコンなどの表示などは表示されず背景のみ表示される形となるようです。
こんなやり方あったんですね・・・

透過するやり方は知ってましたがそれだけだとアイコンとか色々出てきたので他にアクティビティに何か指定する方法があると考えていたんですがちょっと予
想とは違いました。
ちなみにこのやり方なら、WallPaperManagerで指定した画像に勝手に切り替わってます(まぁ当然ですが)

こちらのサイトを参考ください。
http://andante.in/i/android%E3%82%A2%E3%83%97%E3%83%AAtips/%E3%83%86%E3%83%BC%E3%83%9E%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B%E3%80%82/
Reply all
Reply to author
Forward
0 new messages