Android 屏保实现 - Go语言中文社区

Android 屏保实现


在这里插入图片描述

一、原理

当达到某一条件时超过一段时间时,弹出popwindow,大小为全屏,当条件不满足或者用户点击时,让popwindow消失。

二、屏保界面实现

上图中的转圈动画是转圈的,使用的是这位大佬的,详情使用,可以看看https://www.jianshu.com/p/4732d8ae61fe
新建layout文件,如下

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:background="@color/color_bg"
    android:layout_height="match_parent">

    <LinearLayout
        android:id="@+id/popwindow_linear_id"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:orientation="vertical">
        <com.example.androidx.widget.HwLoadingView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:hlv_color="@color/colorAccent"
            app:hlv_size="200dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

    </LinearLayout>
</LinearLayout>

三、逻辑实现

定义一个全局变量判断是否正在显示屏保

private boolean isShowScreenProtectPopWindow = false;

逻辑判断

     if (不满足出现屏保的条件) {
        start = System.currentTimeMillis();
        if (isShowScreenProtectPopWindow) {
            screenPrtectPopwindow.dismiss();
        }
        isShowScreenProtectPopWindow = false;
    } else {
        long end = System.currentTimeMillis();
        //如果满足条件超过5s
        if (end - start > 5000 && !isShowScreenProtectPopWindow) {
            showScreenProtectPopWindow();
        }
    }
}

弹窗方法

   public void showScreenProtectPopWindow() {
        View view = getLayoutInflater().inflate(R.layout.screen_protect, null);

        DisplayMetrics dm = getResources().getDisplayMetrics();
        int w_screen = dm.widthPixels;
        int h_screen = dm.heightPixels;


        screenPrtectPopwindow = new PopupWindow(view, w_screen, h_screen, true);
        screenPrtectPopwindow.setFocusable(false);
        //获得屏保界面,设置点击监听
        LinearLayout linearLayout = view.findViewById(R.id.popwindow_linear_id);
        linearLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                screenPrtectPopwindow.dismiss();
                isShowScreenProtectPopWindow = false;
                start = System.currentTimeMillis();
            }
        });
        screenPrtectPopwindow.showAtLocation(view, Gravity.BOTTOM, 0, 0);
        isShowScreenProtectPopWindow = true;
    }
版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_43889841/article/details/104659109
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢