壁紙マネージャー(壁紙マネージャー)


このセクションの紹介:

このセクションでは、WallpaperManager (壁紙マネージャー) を紹介します。その名前が示すように、携帯電話の壁紙に関連しています。 API このセクションでは、WallpaperManager の基本的な使用法を説明し、システム独自の API を呼び出します。 壁紙選択機能、アクティビティの背景を壁紙の背景として設定し、壁紙を定期的に変更する例を書きます~ さて、BBはありません。このセクションを始めましょう〜オフィシアルAPIドキュメント:1.gifWallPapermanager11 Bitmap bitmap): 壁紙を bitmap で表されるビットマップに設定します

setResource(int resid): 壁紙を resid resource で表される画像に設定します

setStream
(InputStream data): 壁紙をデータに設定しますデータによって表される画像

その他のメソッド:

    clear
  • (): 壁紙をクリアし、システムのデフォルトの壁紙に戻します
  • getDesiredMinimumHeight
  • (): 壁紙の最小の高さ
  • getDesiredMinimumWidth
  • () : 最小壁紙幅
  • getDrawable
(): 現在のシステムの壁紙を取得します。壁紙が設定されていない場合は、システムのデフォルトの壁紙に戻ります

    getWallpaperInfo
  • (): 現在の壁紙が動的壁紙であることを追加し、動的を返します。壁紙情報
  • peekDrawable
  • () : 現在のシステム壁紙を取得します。壁紙が設定されていない場合は null を返します
  • WallpaperManager オブジェクトを取得します
  • WallpaperManager wpManager =WallpaperManager.getInstance(this);
    壁紙を設定するために必要な権限

  • 2.選択関数
    Button btn_set = (Button) findViewById(R.id.btn_set);
        btn_set.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent chooseIntent = new Intent(Intent.ACTION_SET_WALLPAPER);
                startActivity(Intent.createChooser(chooseIntent, "选择壁纸"));
            }
        });
  • レンダリングを実行します
  • :
  • 3. アクティビティの背景を壁紙の背景として設定します
2 つの方法があります。1 つはアクティビティ内のコードで設定する方法で、もう 1 つはAndroidManifest.xml で変更する 活動テーマ〜!


方法 1: アクティビティで

を設定します:

@Override
protected void onCreate(Bundle savedInstanceState) {
    setTheme(android.R.style.Theme_Wallpaper_NoTitleBar_Fullscreen);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}
方法 2: AndroidManifest サービスでテーマを変更します)、それについて知らない場合は、次の場所に移動できます:

10.5 AlarmManager (目覚まし時計サービス) )

学ぶ〜 デモを書いてみましょう~2.gif


レンダリングの実行

:

3.gif

コード実装

:

まず、壁紙を定期的に変更するサービスを作成しましょう: WallPaperService.java

<activity android:name=".MainActivity"
android:theme="@android:style/Theme.Wallpaper.NoTitleBar"/>

次に、簡単なレイアウト、3 つのボタンを作成します: activity_main.xml:

/**
 * Created by Jay on 2015/11/13 0013.
 */
public class WallPaperService extends Service {

    private int current = 0;  //当前壁纸下标
    private int[] papers = new int[]{R.mipmap.gui_1,R.mipmap.gui_2,R.mipmap.gui_3,R.mipmap.gui_4};
    private WallpaperManager wManager = null;   //定义WallpaperManager服务

    @Override
    public void onCreate() {
        super.onCreate();
        wManager = WallpaperManager.getInstance(this);
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        if(current >= 4)current = 0;
        try{
            wManager.setResource(papers[current++]);
        }catch(Exception e){e.printStackTrace();}
        return START_STICKY;
    }

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
}

次に、ここでインスタンス化されたアクティビティ aManager を作成し、スケジュールされたイベント~: MainActivity.java:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    
    <Button
        android:id="@+id/btn_on"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="开启自动换壁纸" />

    <Button
        android:id="@+id/btn_off"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="关闭自动换壁纸" />

    <Button
        android:id="@+id/btn_clean"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="清除壁纸" /></LinearLayout>

最後に、壁紙を設定してサービスに登録する権限を追加することを忘れないでください: AndroidManifest.xml:

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private Button btn_on;
    private Button btn_off;
    private Button btn_clean;
    private AlarmManager aManager;
    private PendingIntent pi;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //①获得AlarmManager对象:
        aManager = (AlarmManager) getSystemService(ALARM_SERVICE);
        //②指定要启动的Service,并指明动作是Servce:
        Intent intent = new Intent(MainActivity.this, WallPaperService.class);
        pi = PendingIntent.getService(MainActivity.this, 0, intent, 0);
        bindViews();
    }

    private void bindViews() {
        btn_on = (Button) findViewById(R.id.btn_on);
        btn_off = (Button) findViewById(R.id.btn_off);
        btn_clean = (Button) findViewById(R.id.btn_clean);
        btn_on.setOnClickListener(this);
        btn_off.setOnClickListener(this);
        btn_clean.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn_on:
                aManager.setRepeating(AlarmManager.RTC_WAKEUP, 0, 3000, pi);
                btn_on.setEnabled(false);
                btn_off.setEnabled(true);
                Toast.makeText(MainActivity.this, "自动更换壁纸设置成功", Toast.LENGTH_SHORT).show();
                break;
            case R.id.btn_off:
                btn_on.setEnabled(true);
                btn_off.setEnabled(false);
                aManager.cancel(pi);
                break;
            case R.id.btn_clean:
                try {
                    WallpaperManager.getInstance(getApplicationContext()).clear();
                    Toast.makeText(MainActivity.this, "清除壁纸成功~", Toast.LENGTH_SHORT).show();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                break;
        }
    }
}

わかりました、とても簡単です~


5このセクションのサンプル コードをダウンロードします

WallpaperManagerDemo.zip


このセクションの概要:

さて、このセクションでは、WallpaperManager の基本的な使い方を紹介します ~ 詳細は自分で知る必要があります 探検してください~5.jpgありがとう~!