菜鸟进场,方圆十里,寸草不生

写得很详细啦,本来是用RxJava来写的延时,不过考虑到有点门槛就放弃了

import android.animation.ObjectAnimator;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Handler;
import android.os.Message;
import android.util.AttributeSet;
import android.util.Log;
import android.view.ViewGroup;
import android.widget.ImageView;import com.xhs.backupforcesmarthome.R;import java.util.Random;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers;/*** @author zx* @date 2018/3/29 17:09* description*/
public class BubbleBackgroundView extends ViewGroup {private Context context;private Bitmap bitmap;private ScheduledExecutorService scheduledThreadPool;private Thread myThread;private boolean flag = false;public BubbleBackgroundView(Context context, AttributeSet attrs) {super(context, attrs);this.context = context;//初始化泡泡bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.bubble);//初始化线程池scheduledThreadPool = Executors.newScheduledThreadPool(1);//初始化线程myThread = new MyThread();}/*** 设置父控件宽高* @param widthMeasureSpec* @param heightMeasureSpec*/@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {super.onMeasure(widthMeasureSpec, heightMeasureSpec);}/*** 设置子控件位置* @param b* @param i* @param i1* @param i2* @param i3*/@Overrideprotected void onLayout(boolean b, int i, int i1, int i2, int i3) {scheduledThreadPool.schedule(myThread, 2000, TimeUnit.MILLISECONDS);}/*** 线程回调到主线程*/private Handler handler = new Handler() {@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);if (msg.what == 1) {if (getChildCount() >= 20) {removeView(getChildAt(0));}if (getChildCount() < 20) {ImageView imageView = new ImageView(context);imageView.setImageBitmap(bitmap);imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);addView(imageView);setChildLayout(imageView);}}}};/*** 子线程,在线程中进行泡泡生成与添加*/private class MyThread extends Thread{@Overridepublic void run() {super.run();handler.sendEmptyMessage(1);}}/*** 设置子控件的位置* @param imageView 子控件*/private void setChildLayout(ImageView imageView) {//随机距离左面的距离,控制从控件上面出来还是下面出来int left = new Random().nextInt(getWidth() - bitmap.getWidth()) + bitmap.getWidth();//随机距离顶部的距离,控制从左面和右面出来int top = new Random().nextInt(getHeight() - bitmap.getHeight()) + bitmap.getHeight();//随机四个方位int direction = new Random().nextInt(4);//随机泡泡x、y轴的运动时间long a = new Random().nextInt(8000) + 15000;long b1 = new Random().nextInt(8000) + 15000;//随机参数控制是往左飘还是往右飘int c = new Random().nextInt(2);//随机参数控制是往上飘还是往下飘int f = new Random().nextInt(2);int d = 1;int e = 1;if (c == 0) {d = -1;}if (f == 0) {e = -1;}//方位设置switch (direction) {case 0://从上面出来的泡泡imageView.layout(left, 0, left + bitmap.getWidth(), bitmap.getHeight());//控制在y轴上只能往下飘e = 1;break;case 1://从下面出来的泡泡imageView.layout(left, getHeight() - bitmap.getHeight(), left + bitmap.getWidth(), getHeight());//控制在y轴上只能往上飘e = -1;break;case 2://从左面出来的泡泡imageView.layout(0, top, bitmap.getWidth(), bitmap.getHeight() + top);//控制在x轴上只能往右飘d = 1;break;case 3://从右面出来的泡泡imageView.layout(getWidth() - bitmap.getWidth(), top, getWidth(), bitmap.getHeight() + top);//控制在x轴上只能往左飘d = -1;break;default:}//设置动画ObjectAnimator animator = ObjectAnimator.ofFloat(imageView, "translationX", 0, d * (getWidth() + bitmap.getWidth()));animator.setDuration(a);ObjectAnimator animator1 = ObjectAnimator.ofFloat(imageView, "translationY", 0, e * (getHeight() + bitmap.getHeight()));animator1.setDuration(b1);animator.start();animator1.start();}}

自定义容器实现类似Windows屏保功能相关推荐

  1. Android 给App加上屏保功能 类似广告功能的实现。

    一朋友的所做的app中需要每个activity在用户30秒没有任何操作的时候,弹出一个屏保,屏保保持是屏幕长亮,屏保上面可以实现广告啊什么的等等.于是就写了个小demo,基本差不多都实现了,只需要改改 ...

  2. 西门子精彩屏+精简屏+精智屏设置屏保功能的具体方法和步骤

    精彩屏+精简屏+精智屏设置屏保功能的具体方法和步骤 精彩Smart屏设置屏保: Smart屏支持屏保功能,但是不能自定义屏保,只能使用屏中自带的屏保,并且仅可置屏保等待时间.设置步骤如下: 1.从触摸 ...

  3. 关闭wps2019的屏保功能

    有时在上传或下载比较大的文件的时候,往往会离开一会儿,但是wps2019会自动启动画报中心的屏保,影响下载.如何关闭屏保功能呢? 1.点击"更多"按钮: 2.点击"WPS ...

  4. WPF 制作 Windows 屏保

    分享如何使用WPF 制作 Windows 屏保 WPF 制作 Windows 屏保 作者:驚鏵 原文链接:https://github.com/yanjinhuagood/ScreenSaver 框架 ...

  5. Android 11.0 Settings增加屏保功能(屏保时间必须小于休眠时间)

    1.概述 在11.0的定制化产品的需求的需要 要求增加屏保功能,设置屏保前提必须是是需要设置休眠时间大于屏保时间,当屏保时间大于休眠时间时,休眠以后 屏保功能就无效,所以就必须设置好屏保时间 最终效果 ...

  6. android中屏保功能项目,【Android】一段时间不操作弹出【屏保】效果

    仿屏保效果 最近项目的一个小Demo,和大家分享一下,本篇文章主要展示的是一个仿屏保的效果,用户在一段时间不操作会自动弹出屏保页面,当处于屏保页面的时候,[两秒内连续]按两次键盘[回车键]就会退出屏保 ...

  7. 【QT】QT Qtimer定时的使用 含屏保功能实现,鼠标无操作后处理事件

    新建一个工程项目 我们的编程语言里面都有个定时器这样的类或者函数,定时器一般就是设定一个时间间隔,会自动发送一个信号,我们需要处理这个信号,也就是一个槽函数.因为QT是信号和槽的机制.定时操作有很多有 ...

  8. java做windows屏保_java编程加载窗口,制作动画(屏保泡泡)

    1.整体的结构图: 2.编写GameFrame02.java代码: package cn.bjsxt.test; import java.awt.Frame; import java.awt.Grap ...

  9. linux6.5取消屏保,怎么把wps屏保关掉

    1. 如何关掉最新wps屏保 1.打开WPS2019,点击左上角的WPS标签 2.点击应用中心的更多,打开应用中心窗口 3.在应用中心中,找到"WPS画报",点击进入 4.点击左侧 ...

  10. 将爱心代码设为电脑屏保,俘获少女芳心,还能假装黑客大佬,在酷炫的界面中保护隐私

    将爱心代码设为电脑屏保,俘获少女芳心,还能假装黑客大佬,在酷炫的界面中保护隐私 本文介绍 Hacker Screen Saver 一款开源 Windows 屏保的使用.Hacker Screen Sa ...

最新文章

  1. VirtualCopy in WinCE6.0
  2. Python Module — grpcio gRPC 远程调用示例程序
  3. 每日一皮:完美的结对编程!
  4. PHP被忽视的编码规范
  5. git比较当前工作区和之前提交的内容差异
  6. 创建时间指定日期 java,Java避坑之如何创建指定时间Date对象
  7. php xml常用函数的集合及四种方法
  8. [LevelDB] 写批处理过程详解
  9. 链表根据主元切分成3段
  10. oa处理会签流程图_OA协同流程管理解决方案
  11. javaweb php异步处理,Spring-MVC异步请求之Servlet异步处理
  12. php环境缺失msv文件_电脑环境缺失运行库_电脑缺失运行库
  13. 永中集成Office与上访科技部有感
  14. 调用python-nmap实现扫描局域网存活主机
  15. Automation服务器不能创建对象--Excel.application
  16. 软考中级软件设计师基础整理(1.计算机组成与体系结构)
  17. GBase 8c 迁移工具 DMT 简述
  18. Super NES Programming/SNES Specs
  19. Python该怎样学?我如何快速掌握Python的?
  20. 滴水逆向三期和中级和高期教程

热门文章

  1. 杭州师范大学计算机科学与技术怎么样,杭州师范大学2020年本科专业录取分数大排名,计算机类专业最低...
  2. 360随身wifi2驱动 v5.3.0.1035 官方版
  3. UEFI原理与编程实践-PROTOCOL
  4. 7部史诗级自然纪录片,孩子14岁前要看完!
  5. html5 音乐播放器 静态,使用HTML5 Audio标签制作音乐播放器
  6. 位偏移 java_时区和偏移类 / Zone and Offset
  7. ERP软件与需求漫延,如何解决?
  8. c语言倒序输出英文字母表音标,28个英文字母表
  9. 秋季吃哪些食物可以改善心情?
  10. 小A与小姐姐给气球涂色[dp + 快速幂]