Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android基礎入門教程——10.9 WallpaperManager(壁紙管理器)

Android基礎入門教程——10.9 WallpaperManager(壁紙管理器)

編輯:關於Android編程

 

 1.WallpaperManager的基本用法

相關方法

設置壁紙的相關方法:
- setBitmap(Bitmap bitmap):將壁紙設置為bitmap所代表的位圖
- setResource(int resid):將壁紙設置為resid資源所代表的圖片
- setStream(InputStream data):將壁紙設置為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, 選擇壁紙));
            }
        });

運行效果圖

title=


3.將Activity的背景設置為壁紙背景

方法有兩種,一種是在Activity中用代碼進行設置,另一種是在AndroidManifest.xml中修改
Activity的主題~!

title=

方法一:Activity中設置

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        setTheme(android.R.style.Theme_Wallpaper_NoTitleBar_Fullscreen);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

方法二:AndroidManifest.xml修改theme

  

4.定時換壁紙的Demo

這裡用到前面學的AlarmManager(鬧鐘服務),假如你對它不了解的話可以到:
Android基礎入門教程——10.5 AlarmManager(鬧鐘服務)進行學習~
下面我們來寫個Demo~

運行效果圖

title=

代碼實現

首先我們來寫一個定時換壁紙的Service:WallPaperService.java

/**
 * 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;
    }
}

接著撸個簡單的布局,三個Button:activity_main.xml

接著是我們的Activity,在這裡實例化aManager並設置定時事件~:MainActivity.java

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;
        }
    }
}

最後別忘了加上設置壁紙的權限以及為我們的Service進行注冊:AndroidManifest.xml

 
 

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved