@Override
public void onDestroy()
{
// TODO Auto-generated method stub
super.onDestroy();
if(mFloatLayout != null)
{
mWindowManager.removeView(mFloatLayout);
}
}
}
这里是利用ImageButton组件来实现小球,关键在于其显示的图片是圆形。
因此,要想将浮动窗口实现为其他形状,只需制作相应的图片赋给组件。
对于小球的功能,只是实现了在手机屏幕上随意拖动,单击消失三秒后重现。
3、浮动小球有了,怎么让它启动呢?注意上面实现的类Service1,继承的是Service。
在ManiActivity.java中,让其显现的方式很简单,代码如下:
finish();
Intent intent = new Intent(getApplicationContext(), Service1.class);
startService(intent);
注意,这里对于MainActivity类不需要做任何处理,新建工程时默认就好。当然,要实现其他功能例外。
代码finish();可加可不加,加上之后使得程序一运行就只剩下小球,原来的界面让其消失。
效果图如下,图形找的是红色小火焰。
4、到此,浮动小球就实现了,那怎么让它开机自启动呢?
其实也很简单,用到了BroadcastReceiver。
还是先添加权限:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
另外,对于系统的广播消息,要想在开机等时刻能够捕获到,还需添加以下内容:
<receiver android:name=".BootBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
实现代码如下:
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安全卫士相比)。