Android 屏保实现
短信预约 -IT技能 免费直播动态提醒
一、原理
作者:阳光大男孩!!!
当达到某一条件时超过一段时间时,弹出popwindow,大小为全屏,当条件不满足或者用户点击时,让popwindow消失。
二、屏保界面实现上图中的转圈动画是转圈的,使用的是这位大佬的,详情使用,可以看看https://www.jianshu.com/p/4732d8ae61fe
新建layout文件,如下
三、逻辑实现
定义一个全局变量判断是否正在显示屏保
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;
}
作者:阳光大男孩!!!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341