androidダイナミック壁紙


Android 2.1バージョンからダイナミック壁紙の概念が導入され、androidに詳しい人はきっと見慣れないに違いない.ここでは、ダイナミック壁紙がどのように形成され、どのように動作しているかを説明します.まず、ダイナミックデスクトップのダイナミックは、このコンポーネントがリアルタイムで変化していることを示しています.つまり、バックグラウンドがこのコンポーネントを更新し続けているということです.バックグラウンドコンポーネントを連想するとまずサービスが考えられますが、コードの観点から見ると、やはりそうです.各ダイナミックデスクトップはWallpaperServiceから継承され、実装する必要がある抽象メソッドonCreateEngineは、Engineオブジェクトを返します.実際には、すべての図面とリフレッシュはengineによって行われ、serviceはengineを提供する部分です.たとえば、ダイナミック壁紙を設定するとプレビューがあり、プレビューのengineが起動して描画とリフレッシュが開始され、壁紙を設定した後、デスクトップ全体に埋め込まれたengineがリアルタイムで描画とリフレッシュされます.動的壁紙のポイントはengineで、ここで言及します.ダイナミック壁紙の作成に着手します.最初のステップでは、WallpaperServiceクラスを作成し、同じようにengineクラスを作成します.engineはWallpaperServiceの内部クラスです.その中でengineで重要な方法は
参照
onCreate(SurfaceHolder surfaceHolder)
surfaceholderがあればcanvasオブジェクトを得ることができ、canvasがあれば絵を描くことができます.
参照
onOffsetsChanged(float xOffset, float yOffset, float xOffsetStep,float yOffsetStep, int xPixelOffset, int yPixelOffset)
画面がスライドしているときにこの方法xOffsetをトリガーすると、画面番号のパーセントを判断する形で使用できます.例えば、携帯電話に5つのスクリーンがある場合、最初のスクリーンは0.000です.第2スクリーンは0.2000第3スクリーンは0.4000このようにxOffsetStepを押すと字面の意味から理解できるのはステップと同じようにあなたの分割スクリーン数と関係があります.もしあなたの分割スクリーン数が5であれば、xOffsetStepに進むたびに0.20000 xPixelOffsetは実際の画素の移動距離です.つまり、どれだけの画素を移動したかということです.不思議なことに、ここで左右に移動する画素点のoffsetはマイナスです
参照
public void onVisibilityChanged(boolean visible)
ダイナミック壁紙の可視性が変化するとこの方法がトリガーされます.例えば、デスクトップ上では、ダイナミック壁紙のvisibilityがtrueになり、プログラムを実行するとダイナミック壁紙のvisibilityがfalseになります.ここではよく理解しています.
参照
public Bundle onCommand(String action, int x, int y, int z, Bundle extras, boolean resultRequested)
クリックイベントを傍受することができ、クリック時にこの方法をトリガーすることができ、actionはandroidである.wallpaper.tap,xは横座標を記録して、yは縦座標を記録して、zの作用は未知で、3 dデスクトップのために予約したのかもしれませんか?実験したことがなくて、zは一般的に0でいくつかの重要なライフサイクルの方法があって、activityと似ていて、多く言いません.アプリをダイナミック壁紙として定義するには、まずAndroid Manifestにある必要があります.xmlで指定します.前述したように、ダイナミック壁紙はandroid 2.1からサポートされていますので、追加する必要があります.
参照

これは動的壁紙であることをシステムに説明するため、私たちはまた参加します.

それ以外に、サービスを実行しているので、サービスを構成する必要があります.
参照
 
               
                   
               

               
           

重要な部分は、まず権限android:permission="android.permission.BIND_WALLPAPER"
次にサービスはactionに応答する必要があります
android:name="android.service.wallpaper.WallpaperService
あとはプロファイル

次にプロファイルを受信します.まずresフォルダの下にxmlディレクトリを作成し、appwidgetを書くのと同じです.
ディレクトリの下にxmlファイルを作成します

<?xml version="1.0" encoding="utf-8"?>
<wallpaper xmlns:android="http://schemas.android.com/apk/res/android"
    android:settingsActivity="LiveWallPreference"
    android:thumbnail="@drawable/ic_launcher"
    android:description="@string/wallpaper_description"
    />

wallpaperはシステムがこのように書くことを要求し、ネーミングスペースを持っています.
参照
android:settingsActivity="LiveWallPreference"
動的壁紙を配置するPreferenceActivityを指定します.このPreferenceActivityもAndroidManifestで必要です.xmlに登録されていますが、一般的なactivityと同じです.ダイナミック壁紙の設定ボタンをクリックすると、このactivityに移動します.不可欠です.そうしないと、設定をクリックするとエラーが発生します.
参照
android:thumbnail="@drawable/ic_launcher"
android:description="@string/wallpaper_description"
1つ目のアイコンはダイナミック壁紙リストのアイコンに対応し、2つ目のdescriptionはアイコンの右側に作成したダイナミック壁紙の名前です.
これでダイナミック壁紙のフレームが完成します.次にwallpaperserviceクラスにリフレッシュメカニズムを追加し、ダイナミックコンテンツを追加するだけで、ダイナミックデスクトップが完成します.[/size]