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

简介: 原文:用Xamarin 实现园友的 :Android浮动小球与开机自启动前两天看园子里有筒子写了个 Android浮动小球与开机自启动  , 感觉这种被 360 玩烂的功能原来是如此的简单啊。。。 我不会 Java, 当然也不懂如何 用 ADT 开发 Android App. 但是我看过几天 Xamarin 啊,C# 我还是会的。
原文: 用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。

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

请问该如何实现?

 

谢谢围观。

目录
相关文章
|
6月前
|
Java API 调度
Android系统 自定义开机广播,禁止后台服务,运行手动安装应用接收开机广播
Android系统 自定义开机广播,禁止后台服务,运行手动安装应用接收开机广播
334 0
|
6月前
|
安全 Shell Android开发
Android系统 init.rc开机执行shell脚本
Android系统 init.rc开机执行shell脚本
1144 0
|
Android开发
flutter中实现仿Android端的onResume和onPause方法
flutter中实现仿Android端的onResume和onPause方法
|
3月前
|
存储 Shell Android开发
基于Android P,自定义Android开机动画的方法
本文详细介绍了基于Android P系统自定义开机动画的步骤,包括动画文件结构、脚本编写、ZIP打包方法以及如何将自定义动画集成到AOSP源码中。
78 2
基于Android P,自定义Android开机动画的方法
|
6月前
|
Linux Android开发
Android开机不显示bootloader界面
Android开机不显示bootloader界面
84 0
Android开机不显示bootloader界面
|
6月前
|
Java Android开发
Android 开机动画的启动
Android 开机动画的启动
109 0
|
开发工具 Android开发 iOS开发
使用xamarin开发Android、iOS报错failed to open directory: 系统找不到指定的文件
使用vs2019学习xamarin时,创建新程序。使用模拟器真机等测试都报错如下图错误: ![请在此添加图片描述](https://developer-private-1258344699.cos.ap-guangzhou.myqcloud.com/column/article/5877188/20231030-de8ce5fd.png?x-cos-security-token=r4KyZDEowPT0kGTL0LqE8EnwfN1Nzexadb05dcffed3939ff8d7591c528c01706nvpGSE93QwHpZM8NwhJNTZctNRQa0l3KDhEnqj8P7d8t
122 0
使用xamarin开发Android、iOS报错failed to open directory: 系统找不到指定的文件
|
Android开发
Android应用实现开机自启动的一种较好的方式
Android应用实现开机自启动的一种较好的方式
|
编解码 Java Android开发
Android11.0(R) MTK6771 平板横屏方案修改(强制app横屏 + 开机logo/动画+关机充电横屏 + RecoveryUI 横屏)
Android11.0(R) MTK6771 平板横屏方案修改(强制app横屏 + 开机logo/动画+关机充电横屏 + RecoveryUI 横屏)
481 0
RK3326 android10.0(Q) 开机logo+开关机动画替换
RK3326 android10.0(Q) 开机logo+开关机动画替换
218 0
下一篇
无影云桌面