自定义系统屏保DreamService

2020-04-14  本文已影响0人  momxmo

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

简介

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

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

DreamService的生命周期

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

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

上一篇下一篇

猜你喜欢

热点阅读