用Xamarin 实现园友的 :Android浮动小球与开机自启动

原文:用Xamarin 实现园友的 :Android浮动小球与开机自启动

前两天看园子里有筒子写了个 Android浮动小球与开机自启动  , 感觉这种被 360 玩烂的功能原来是如此的简单啊。。。

我不会 Java, 当然也不懂如何 用 ADT 开发 Android App.

但是我看过几天 Xamarin 啊,C# 我还是会的。。

用 Xamarin 做Android , 只要对着 java 源码, 我还是能翻译一份出来的。

我第一时间安装了 VS2015 , 挺好的,自带的 Android 模拟器, 比那个第三方的 Genymotion 模拟器快很多

不过 Xamarin 依然是收费的, 但是在镇上,大家都知道,哈哈。

先上个图给大家看看我翻译的结果:

照例,源码:

https://github.com/gruan01/Xamarin-Example/tree/master/FloatBall

 

Xamarin 声明一个 Service 要这样写:

1 namespace FloatBall {
2     [Service]
3     [IntentFilter(new string[] { "Xamarin.BallService" })]
4     public class BallService : Service, View.IOnTouchListener, View.IOnClickListener {

后面那两个接口不是必须的。

IntentFilter 也不是必须的。

 

运行这个 Service ,要在 MainActivity 里这样写:

 1 protected override void OnCreate(Bundle bundle) {
 2             base.OnCreate(bundle);
 3            。。。
 4            。。。
 5
 6             this.Finish();
 7
 8             //var intent = new Intent(Application.Context, typeof(BallService));
 9             var intent = new Intent("Xamarin.BallService");
10             this.StartService(intent);
11         }

 

在 Service 里, 如果想获取到 WindowManager 要这样写:

1 private IWindowManager WindowManager {
2             get {
3                 //不是简单的类型转换,一定要用 JavaCast
4                 return this.GetSystemService(Context.WindowService).JavaCast<IWindowManager>();
5             }
6         }

注意,不是简单的强制类型转换, 一定要用 JavaCast

 

给 WindowManager 添加一个子视图

这个真是有点造蛋啊。一开始没有设置 LayoutParameter 的 Type

param.Type = WindowManagerTypes.Phone;

一直报这个错:

android.view.WindowManager$BadTokenException: Unable to add window — token null is not for an application

搜了好多网页,说的基本上都一样, 只是不适用我这个场景。

后来仔细看了一下园友的文章,发现少了 param.Type 这个参数。。。,加上就OK了!

我能说这是个奇葩吗?

 

FrameLayout & Animation

不明白为什么Animation 应到 FrameLayout 上,为什么一点作用都不起。

应用到 ImageView 上效果立马就出来了。

不知道是我写法不对,还是错觉。

 

最后请教一下:

如图所示,我对 FrameLayout 做了 ShapeDrawable。

其实我是想显示出来一个圆型的图片出来。。

请问该如何实现?

 

谢谢围观。

时间: 2024-12-29 16:09:53

用Xamarin 实现园友的 :Android浮动小球与开机自启动的相关文章

Android开机自启动应用

Android启动时,会发出一个系统广播 ACTION_BOOT_COMPLETED,它的字符串常量表示为 "android.intent.action.BOOT_COMPLETED" 开机自启动程序,只需要"捕捉"到这个消息再启动你的程序即可,我们要做的是接收这个消息,并实现一个BroadcastReceiver. 1 xml 配置 在AndroidManifest.xml中Application节点内,添加自定义的广播类: <receiver androi

界面-android浮动窗口如何覆盖

问题描述 android浮动窗口如何覆盖 现在做的项目有一个功能 播放窗口需要在所有界面都显示,不能有延迟,所以我用到了浮动窗口 但是在界面有些地方又需要让浮动窗口覆盖掉(不能用隐藏,隐藏之后surfaceview会停止播放) 我想问问有什么办法可以控件浮动窗口在哪个控件下面? 或者让他不显示之类的? 没有多少分了,抱歉 解决方案 可以不必覆盖的,隐藏掉即可

Android对开机自启动的限制

 谈到如何实现程序的开机自启动,我想大多数朋友都会认为小菜一碟,不就是注册一个BOOT_COMPLETED消息嘛! 在AndroidManifest.xml里面加入一个receiver,就像这样: <SPAN style="FONT-SIZE: 18px"> <receiver android:name="BootReceiver"> <intent-filter> <action android:name="an

android 如何做到QQ类似那么强大的开机自启动。

问题描述 android 如何做到QQ类似那么强大的开机自启动. 10C android 如何做到QQ类似那么强大的开机自启动.普通的通过的添加权限,和BOOT_COMPLETED的Receiver好像在真机上根本没有用. 解决方案 你接收开机广播,然后自动你需要的功能 解决方案二: 不仅仅是开机自启动,QQ 黑科技太多了,之前不是说在屏幕上有个一像素的小点,根本杀不掉. 而且像QQ 那样的大公司,会和手机有商务合作,加入白名单.另外启动其他的应用程序可能也会启动QQ. 解决方案三: 在配置文件

测试-Android开机自启动启动不起来,急急急急求帮助

问题描述 Android开机自启动启动不起来,急急急急求帮助 代码如下: 广播: import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; public class BootBroadcastReceiver extends BroadcastReceiver { static final String ACTION = "android.int

Android应用如何开机自启动、自启动失败原因

本文主要介绍Android应用如何开机自启动.自启动失败的原因.adb命令发送BOOT_COMPLETED. 问题:应用程序是否可以在安装后自启动,没有ui的纯service应用如何启动?答案马上揭晓^_*1.Android应用如何开机自启动 (1).在AndroidManifest.xml中注册 AndroidManifest.xml中注册BOOT_COMPLETED Action 注意不仅要添加android.intent.action.BOOT_COMPLETED对应的action,还需要

android开发-安卓开发中程序不能开机自启动问题

问题描述 安卓开发中程序不能开机自启动问题 已经设置该程序为系统程序 使用了广播方法` public class BootBroadcastReceiver extends BroadcastReceiver { static final String action_boot="android.intent.action.BOOT_COMPLETED"; @Override public void onReceive(Context context, Intent intent) {

Android开机自启动服务的实现方法_Android

android实现开机自启动可能是移动操作系统中最简单的了,我们只需要监听一个开机启动的Broadcast(广播)即可.首先写一个Receiver(即广播监听器),继承BroadcastReceiver,如下所示: view source print? 复制代码 代码如下: public class BootReceiver extends BroadcastReceiver { private PendingIntent mAlarmSender; @Override public void

程序-android 开机自启动问题 急求

问题描述 android 开机自启动问题 急求 为什么同一个设备 同一个程序 开机自启动时灵时不灵呢?要疯了 解决方案 调试下可能在自启动下有异常出现 解决方案二: 一般回事什么异常 关键是有时是可以启动的 偶尔会不启动 解决方案三: 我个人觉得是那个可以使用的那个软件可以进行设置,或者的话使用电脑管家也可以设置,这是我的经验 解决方案四: 你设置一下启动的优先级别看看 让它晚一点启动