原文:用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 要这样写:

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

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

IntentFilter 也不是必须的。

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

 protected override void OnCreate(Bundle bundle) {
base.OnCreate(bundle);
。。。
。。。 this.Finish(); //var intent = new Intent(Application.Context, typeof(BallService));
var intent = new Intent("Xamarin.BallService");
this.StartService(intent);
}

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

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

注意,不是简单的强制类型转换, 一定要用 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。

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

请问该如何实现?

谢谢围观。

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

  1. Android浮动小球与开机自启动

    看着手机上的360浮动小球,不评价其具体的功能与实用性,至少在UI设计与交互方面是个不小的创新. 如图片左上角所示,球中还会显示当前手机的运行状况,向下拉动还会有弹射来达到加速.清理等目的. 那好,先 ...

  2. Android 开机自启动应用

    Android启动时,会发出一个系统广播 ACTION_BOOT_COMPLETED,它的字符串常量表示为 “android.intent.action.BOOT_COMPLETED” 开机自启动程序 ...

  3. Android应用开机自启动问题

    本文主要介绍Android应用如何实现开机自启动.自启动失败的原因以及通过ADB命令模拟发送BOOT_COMPLETED开机广播. 1.Android应用如何实现开机自启动 (1) 实现一个广播类,接 ...

  4. 匹夫细说C#:从园友留言到动手实现C#虚函数机制

    前言 上一篇文章匹夫通过CIL代码简析了一下C#函数调用的话题.虽然点击进来的童鞋并不如匹夫预料的那么多,但也还是有一些挺有质量的来自园友的回复.这不,就有一个园友提出了这样一个代码,这段代码如果被编 ...

  5. 发布园友设计的新款博客皮肤BlueSky

    园友#a为大家设计了一款“简单.纯粹,一点淡雅,一点宁静”的博客皮肤——BlueSky,欢迎您的享用!感谢#a的精心设计! 如果您有兴趣为大家设计博客皮肤,请将您设计的html/css/images文 ...

  6. 回复《我要阻止做java开发的男朋友去创业型公司工作吗?》园友问题

    真的非常开心能收到这么多园友的关心,看到这么多的回复顿感身边处处充满爱.也非常感谢大家踊跃的帮我出谋划策,小女子在此有礼了! 我先来回答一下性别的问题(前面已经暴露了……),我是前端程序媛.大三时和男 ...

  7. 打开别人Xamarin项目找不到android.jar文件

    打开别人Xamarin项目找不到android.jar文件 错误信息:Could not find android.jar for API Level 23.打开非本机创建的Xamarin项目,编译的 ...

  8. android浮动搜索框

    android浮动搜索框的配置比较繁琐,需要配置好xml文件才能实现onSearchRequest()方法. 1.配置搜索的XML配置文件​,新建文件searchable.xml,保存在res/xml ...

  9. 用C#开发的双色球走势图(原创)值得园友拥有(二)接上一篇

    昨晚由于时间的原因只写了一部分内容,今天将这一部分内容补充完毕,多谢各位园友的支持. 这是用C#开发的双色球走势图(原创)值得园友拥有 新的园友可以看昨晚写的内容,以免脱节.首先回复园友的评论,有说好 ...

随机推荐

  1. J2EE项目中异常处理

     为什么要在J2EE项目中谈异常处理呢?可能许多java初学者都想说:“异常处理不就是try….catch…finally吗?这谁都会啊!”.笔者在初学java时也是这样认为的.如何在一个多层的j2e ...

  2. BingMap的GeocodeService进行地理位置正向和反向检索--后台实现

    一.加入GeocodeService的Web服务引用 地理编码服务(GeocodeService)是以WCF技术公布的一个Web服务,地图编码服务提供了以一个有效的物理地址在地图上匹配其相应的地图地址 ...

  3. 使用命令行将Excel数据表导入Mysql中的方法小结

    从Excel数据表导入MySQL,已经做过好几次了,但每次都会碰到各种问题:invalid utf8 character string, data too long, ...,浪费了不少时间 为了提高 ...

  4. 简单天气应用开发——解析HeWeather JSON

    借助和风天气API成功获取到了我想要的天气信息,但在怎么提取出我想要的数据上又遇到了问题. {"HeWeather data service 3.0":[{"basic& ...

  5. JavaWEB HTTP请求中POST与GET的区别

    From 的get 和post方法.在数据传输过程中分别对应了HTTP协议中的GET和POST方法. 二者主要区别: GET从服务其获取数据;POST上传数据. GET将表单中的数据按照variabl ...

  6. 寻找数列中第k大的数算法分析

    问题描述:给定一系列数{a1,a2,...,an},这些数无序的,现在求第k大的数. 看到这个问题,首先想到的是先排序,然后直接输出第k大的数,于是得到啦基于排序的算法 算法一: #include&l ...

  7. Windows上右键git菜单出来的原因

    Windows上右键git菜单出来的原因 Git下载地址https://code.google.com/p/msysgit/downloads/list?q=full+installer+offici ...

  8. php基础知识(有代码有注释)

    回顾 数组: 数据的组合 数组定义: 三种方式(常用array()) 数组访问: 下标 数组分类: 关联数组, 索引数组和混合数组 数组循环遍历: foreach遍历(foreach原理) 二维数组: ...

  9. 什么是RAW数据源

    RAW数据源 顾名思义,数据源就是数据的源头,怎么理解那? 大家可以把它想象成一个接口,会给我们返回数据,这个数据是动态的. 举个最简单的例子,比如我要在网页中加载出网站的标题,到时候每个页面都要用到 ...

  10. Android开发之TextView高级应用

    Android开发之TextView高级应用 我们平时使用TextView往往让它作为一个显示文字的容器,但TextView的功能并不局限于此.以下就和大家分享一下TextView的一些使用技巧. A ...