WallpaperManager(Wallpaper Manager)
Pengenalan kepada bahagian ini:
Apa yang dibawa oleh bahagian ini kepada anda ialah WallpaperManager, seperti namanya, ia berkaitan dengan kertas dinding telefon mudah alih API Dalam bahagian ini kami akan menerangkan penggunaan asas WallpaperManager dan memanggil sistem itu sendiri Fungsi pemilihan kertas dinding, tetapkan latar belakang Aktiviti sebagai latar belakang kertas dinding, dan tulis contoh menukar kertas dinding dengan kerap~ Okey, tiada BB, mari mulakan bahagian ini~
Dokumen API Rasmi: WallpaperManager
1.WallpaperManager Penggunaan asas
Kaedah berkaitan
Kaedah berkaitan untuk menetapkan kertas dinding:
- setBitmap(Peta bit peta bit): Tetapkan kertas dinding kepada peta bit yang mewakili Bitmap
- setResource(int resid): Tetapkan kertas dinding kepada gambar yang diwakili oleh sumber resid
- setStream(data InputStream): Tetapkan Kertas dinding ialah ditetapkan kepada gambar yang diwakili oleh data data
Kaedah lain:
- kosongkan(): Kosongkan kertas dinding dan tetapkannya semula kepada sistem kertas dinding lalai
- getDesiredMinimumHeight(): Ketinggian kertas dinding minimum
- getDesiredMinimumWidth(): Lebar kertas dinding minimum
- getDraw (): Dapatkan kertas dinding sistem semasa Jika tiada kertas dinding ditetapkan, kembalikan kertas dinding lalai sistem
- getWallpaperInfo(): Tambah bahawa kertas dinding semasa ialah kertas dinding dinamik dan kembalikan. maklumat kertas dinding dinamik
- peekDrawable(): Dapatkan kertas dinding sistem semasa, kembalikan null jika kertas dinding tidak ditetapkan
Dapatkan objek WallpaperManager
WallpaperManager wpManager =WallpaperManager.getInstance(this);
Kebenaran diperlukan untuk menetapkan kertas dinding
2 Panggil fungsi pemilihan kertas dinding sistem sendiri
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, "选择壁纸")); } });
Jalankan pemaparan:
<. 🎜>3 Terdapat dua cara untuk menetapkan latar belakang Aktiviti sebagai latar belakang kertas dinding , satu ialah menetapkannya dengan kod dalam Aktiviti, dan yang lain ialah mengubah suainya dalam AndroidManifest.xml Tema aktiviti~!
Kaedah 1: Tetapkan dalam Aktiviti:
@Override protected void onCreate(Bundle savedInstanceState) { setTheme(android.R.style.Theme_Wallpaper_NoTitleBar_Fullscreen); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); }
Kaedah 2: Ubah suai tema dalam AndroidManifest.xml :
<activity android:name=".MainActivity" android:theme="@android:style/Theme.Wallpaper.NoTitleBar"/>
4. Demo menukar kertas dinding dengan kerapPengurus Penggera (perkhidmatan jam penggera) yang dipelajari sebelum ini digunakan di sini. Jika anda tidak tahu mengenainya, anda boleh ke :
10.5 AlarmManager (Perkhidmatan jam penggera)Kajian~ Mari tulis Demo~
Menjalankan pemaparan:
Pelaksanaan kod:
Mula-mula, mari tulis Perkhidmatan yang menukar kertas dinding dengan kerap: 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; } }
Kemudian kami membuat reka letak mudah dengan tiga Butang: activity_main.xml :
<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>
Kemudian datang Aktiviti kami, di mana kami membuat instantiate aManager dan menyediakan acara yang dijadualkan~: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; } } }
Akhir sekali jangan lupa untuk menetapkan Kebenaran kertas dinding dan pendaftaran untuk Perkhidmatan kami: AndroidManifest.xml:
<uses-permission android:name="android.permission.SET_WALLPAPER" /> <service android:name=".WallPaperService"/>
Baiklah, sangat mudah~
5 Muat turun kod sampel dalam bahagian ini
Ringkasan bahagian ini:
Baiklah, bahagian ini memperkenalkan anda kepada beberapa asas Penggunaan WallpaperManager ~ Anda masih perlu lebih banyak perkara sendiri Teroka~Terima kasih~!