利用ImageButton组件来实现小球,关键在于其显示的图片是圆形。
因此,要想将浮动窗口实现为其他形状,只需制作相应的图片赋给组件。
对于小球的功能,只是实现了在手机屏幕上随意拖动,单击消失三秒后重现。
3、浮动小球有了,怎么让它启动呢?注意上面实现的类Service1,继承的是Service。
在ManiActivity.java中,让其显现的方式很简单,代码如下:
finish();
Intent intent = new Intent(getApplicationContext(), Service1.class);
startService(intent);
注意,这里对于MainActivity类不需要做任何处理,新建工程时默认就好。当然,要实现其他功能例外。
代码finish();可加可不加,加上之后使得程序一运行就只剩下小球,原来的界面让其消失。
效果图如下,图形找的是红色小火焰。

4、到此,浮动小球就实现了,那怎么让它开机自启动呢?
其实也很简单,用到了BroadcastReceiver。
还是先添加权限:
另外,对于系统的广播消息,要想在开机等时刻能够捕获到,还需添加以下内容:
? ? ? ?
? ? ? ? ? ? ? ?
? ? ? ?
实现代码如下:
package com.XXX.autostart;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class BootBroadcastReceiver extends BroadcastReceiver {
? ? static final String ACTION = "android.intent.action.BOOT_COMPLETED";
? ? @Override
? ? public void onReceive(Context context, Intent intent) {
? ? ? ? if (intent.getAction().equals(ACTION)) {
? ? ? ? ? ? Intent intent1 = new Intent(context, Service1.class);
? ? ? ? ? ? intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
? ? ? ? ? ? context.startService(intent1);
? ? ? ? }
? ? }
}
将手机ReBoot,可以发现红色小球会自行启动,不过速度比较慢(和360安全卫士相比)。