首页 > 移动开发 > Android > 自定义系统屏保DreamService
2021
11-28

自定义系统屏保DreamService

继承 DreamService来实现一个自定义屏保

简介

Dreams是Android设备的新型互动屏保模式。当设备置入底座或充电闲置状态时(屏幕没有关闭),此模式自动激活。白日梦模式每次显示一个,可以是纯粹的视觉效果,在用户触摸时消失,也可以是响应用户所有输入的交互式应用。您的白日梦将运行在您应用的进程内,并可以访问所有的AndroidUI工具包,可以使用视图、布局和动画等。所以它比动态壁纸或应用窗口小部件更具表现力。

作用:
Dreams是当充电的设备空闲,或者插入底座时显示的互动屏保。在展览或陈列时,Dreams为APP提供一个定制的展示方式。
比如现在各个手机厂商定义很炫酷的充电动画!

DreamService的生命周期

  • 1.onAttachedToWindow()
    初始化设置;
    1. onDreamingStarted():启动动画和计时器 ;互动屏保已经启动,这里可以开始播放动画或者其他操作
  • 3.setContentView()置Daydream场景
  • 4.setInteractive(boolean):默认情况下,用户触摸时Daydream会退出。如果你希望与用户交互,则调用setInteractive(true)
  • 5.onDreamingStopped()
    在停止 onDreamingStarted() 里启动的东西
  • 6.onDetachedFromWindow()
    清除你在onAttachedToWindow()中构建的所有东西 可能会调用的一些重要方法(比如 handlers 和 listeners)
  • 7.setFullscreen(boolean):隐藏状态栏
  • 8.setScreenBright(boolean):默认情况下,Daydream是全亮度模式,设置为false会降低屏幕亮度

manifest 声明

为了能让系统调用,你的 DreamService 应该在 APP 的 manifest 中注册,必须在其中加入具有”android.service.dreams.DreamService”动作的intent-filter。当目标api>=21,必须在manifest中申请BIND_DREAM_SERVICE权限:

 <service
     android:name=".MyDream"
     android:exported="true"
     android:icon="@drawable/my_icon"
     android:label="@string/my_dream_label"
  android:permission="android.permission.BIND_DREAM_SERVICE">
     <intent-filter>
         <action android:name="android.service.dreams.DreamService" />
         <category android:name="android.intent.category.DEFAULT" />
     </intent-filter>
     <!-- Point to additional information for this dream (optional) -->
     <meta-data
         android:name="android.service.dream"
         android:resource="@xml/my_dream" />
 </service>

MyDayDream.java 互动屏保的定义

public class MyDayDream extends DreamService {
    @Override
    public void onAttachedToWindow() {
        super.onAttachedToWindow();
        // Exit dream upon user touch
        setInteractive(false);
        // Hide system UI
        setFullscreen(true);
        // Set the dream layout
        setContentView(R.layout.my_day_dream);
    }
}

最后,在手机中设置-->显示-->屏保 中选择自定义的屏保;。

最后编辑:
作者:搬运工

留下一个回复

你的email不会被公开。