用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 要这样写:
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浮动小球与开机自启动的更多相关文章
- Android浮动小球与开机自启动
看着手机上的360浮动小球,不评价其具体的功能与实用性,至少在UI设计与交互方面是个不小的创新. 如图片左上角所示,球中还会显示当前手机的运行状况,向下拉动还会有弹射来达到加速.清理等目的. 那好,先 ...
- Android 开机自启动应用
Android启动时,会发出一个系统广播 ACTION_BOOT_COMPLETED,它的字符串常量表示为 “android.intent.action.BOOT_COMPLETED” 开机自启动程序 ...
- Android应用开机自启动问题
本文主要介绍Android应用如何实现开机自启动.自启动失败的原因以及通过ADB命令模拟发送BOOT_COMPLETED开机广播. 1.Android应用如何实现开机自启动 (1) 实现一个广播类,接 ...
- 匹夫细说C#:从园友留言到动手实现C#虚函数机制
前言 上一篇文章匹夫通过CIL代码简析了一下C#函数调用的话题.虽然点击进来的童鞋并不如匹夫预料的那么多,但也还是有一些挺有质量的来自园友的回复.这不,就有一个园友提出了这样一个代码,这段代码如果被编 ...
- 发布园友设计的新款博客皮肤BlueSky
园友#a为大家设计了一款“简单.纯粹,一点淡雅,一点宁静”的博客皮肤——BlueSky,欢迎您的享用!感谢#a的精心设计! 如果您有兴趣为大家设计博客皮肤,请将您设计的html/css/images文 ...
- 回复《我要阻止做java开发的男朋友去创业型公司工作吗?》园友问题
真的非常开心能收到这么多园友的关心,看到这么多的回复顿感身边处处充满爱.也非常感谢大家踊跃的帮我出谋划策,小女子在此有礼了! 我先来回答一下性别的问题(前面已经暴露了……),我是前端程序媛.大三时和男 ...
- 打开别人Xamarin项目找不到android.jar文件
打开别人Xamarin项目找不到android.jar文件 错误信息:Could not find android.jar for API Level 23.打开非本机创建的Xamarin项目,编译的 ...
- android浮动搜索框
android浮动搜索框的配置比较繁琐,需要配置好xml文件才能实现onSearchRequest()方法. 1.配置搜索的XML配置文件,新建文件searchable.xml,保存在res/xml ...
- 用C#开发的双色球走势图(原创)值得园友拥有(二)接上一篇
昨晚由于时间的原因只写了一部分内容,今天将这一部分内容补充完毕,多谢各位园友的支持. 这是用C#开发的双色球走势图(原创)值得园友拥有 新的园友可以看昨晚写的内容,以免脱节.首先回复园友的评论,有说好 ...
随机推荐
- openssl命令行Base64编解码
openssl对base64编解码的规范支持较差,用它编解码的结果别的语言如php处理很不方便,注意的几点整理如下 1,如果php加密结果做base64编码长度小于64,则需要添加一个换行符opens ...
- (译)Node.js的 EventEmitter 教程
原文标题:Node.js EventEmitter Tutorial 原文链接:http://www.hacksparrow.com/node-js-eventemitter-tutorial.htm ...
- objective-C学习笔记(六)继承与多态
封装 encapsulation 隐藏对象内部实现细节,对外仅提供公共接口访问. (说白了就是属性啊,方法啊全都写在类内,对外只提供访问,不需要了解细节) 继承 inheritance 一个类 ...
- N个任务掌握java系列之统计一篇文章中单词出现的次数
问题:统计一篇文章中单词出现的次数 思路: (1)将文章(一个字符串存储)按空格进行拆分(split)后,存储到一个字符串(单词)数组中. (2)定义一个Map,key是字符串类型,保存单词:valu ...
- java中对象模型与数据库中的关系模型
实体类还需要配置到hibernate.cfg.xml中,以便Hibernate初始化实体类与数据库表的映射关系.如果只配置了映射关系,而没有配置到hibernate.cfg.xml中,Hibernat ...
- js表格排序 & 去除字符串空格
// a:列数 bool:排序升序判断参数 true false Str:支持多列 function newUnitSort(a, bool, str) { var oTable = document ...
- java freemark生成word文档
1.下载freemarker-2.3.19.jar 2.把要填充的内容用 ${title},${no}代替 3.用word 打开,保存为2003xml 4.打开生成xml文件,看下有没有把表达式 ...
- codevs 1515 跳 贪心+lucas
题目链接 一个人初始在(0, 0), 想到(n, m)去, 没到一个格子, 花费的值为C(n, m), 求最小值. C(n, m)的定义为, 如果n==0||m==0, 则为1, 否则C(n, m) ...
- React使用笔记2-React Components的生命周期
Date: 2015-11-27 21:23 Category: Web Tags: JavaScript Author: 刘理想 [toc] 1. React Components的生命周期 Rea ...
- wsdl透明解析
1.逐个分析wsdl文件中的元素: <types>:数据类型定义的容器,一般使用 xml schema类型系统. <message>:通信消息的数据结构的抽象化定义,使用< ...