本示例基于网友现有安卓项目人肉翻译,在Xamarin中替换和修改了很多方法的命名,比如某些属性需要去掉getName的get前缀, 有些方法名称需要使用Pascal命名法替换Java的Camel 命名规范

另外在内部类的使用方式上也有一些区别,但是整体上来说,大部分的方法名称都与Java 原版Android一致,所以如果有现有的Android 项目需要转换到Xamarin 还是很容易的.此处给Xamarin 66个赞

参考Java版本:http://blog.csdn.net/wxdjaqgs/article/details/44561101

博主提供了源码下载

我所做的只是将需要的图片文件贴过来.然后开始翻译代码

由于IOS品台的打包流程还没有去研究,所以本次试验没有使用ios 测试.以后有时间补上

贴代码:

using System;
using Android.App;
using Android.Content;
using Android.Widget;
using Android.OS; namespace App3
{ [Activity(Label = "App3", MainLauncher = true, Icon = "@drawable/icon")]
public class MainActivity : Activity
{
public static String ACTION_BTN = "com.example.notification.btn.login"; public static String INTENT_NAME = "btnid"; public const int INTENT_BTN_LOGIN = ; static NotificationBroadcastReceiver mReceiver; public static NotificationManager NotifyManager; protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);
Button button = (Button)FindViewById(Resource.Id.btn_notification);
button.Click += (sender, e) => { notification(); }; } private void intiReceiver()
{
mReceiver = new NotificationBroadcastReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.AddAction(ACTION_BTN);
ApplicationContext.RegisterReceiver(mReceiver, intentFilter);
} public void unregeisterReceiver()
{
if (mReceiver != null)
{
ApplicationContext.UnregisterReceiver(mReceiver);
mReceiver = null;
}
} private void notification()
{
unregeisterReceiver();
intiReceiver(); RemoteViews remoteViews = new RemoteViews(PackageName, Resource.Layout.notification);
remoteViews.SetTextViewText(Resource.Id.tv_up, "首都机场精品无线");
remoteViews.SetTextViewText(Resource.Id.tv_down, "已免费接入"); Intent intent = new Intent(ACTION_BTN);
intent.PutExtra(INTENT_NAME, INTENT_BTN_LOGIN);
PendingIntent intentpi = PendingIntent.GetBroadcast(this, , intent, PendingIntentFlags.UpdateCurrent);
remoteViews.SetOnClickPendingIntent(Resource.Id.btn_login, intentpi); Intent intent2 = new Intent();
intent2.SetClass(this, typeof(MainActivity));
intent2.SetFlags(ActivityFlags.NewTask | ActivityFlags.ClearTask);
PendingIntent intentContent = PendingIntent.GetActivity(this, , intent2, PendingIntentFlags.UpdateCurrent); Notification.Builder builder = new Notification.Builder(this); builder.SetOngoing(false);
builder.SetAutoCancel(false);
builder.SetContent(remoteViews);
builder.SetTicker("正在使用首都机场无线");
builder.SetSmallIcon(Resource.Drawable.id_airport); Notification notification = builder.Build();
notification.Defaults = NotificationDefaults.Sound;
notification.Flags = NotificationFlags.NoClear;
notification.ContentIntent = intentContent;
NotifyManager = (NotificationManager)GetSystemService(Context.NotificationService); NotificationManager notificationManager = NotifyManager;
notificationManager.Notify(, notification);
} class NotificationBroadcastReceiver : BroadcastReceiver
{
public override void OnReceive(Context context, Intent intent)
{ String action = intent.Action;
if (action.Equals(ACTION_BTN))
{
int btn_id = intent.GetIntExtra(INTENT_NAME, );
switch (btn_id)
{
case INTENT_BTN_LOGIN:
Toast.MakeText(context, "从通知栏点登录", ToastLength.Short).Show(); if (mReceiver != null)
{
context.ApplicationContext.UnregisterReceiver(mReceiver);
mReceiver = null;
}
NotificationManager notificationManager = NotifyManager;
notificationManager.Cancel();
break;
} }
}
} } }

Xamarin 小试牛刀 通知栏消息通知和按钮(基于Java代码人肉转换)的更多相关文章

  1. Jenkins日常运维笔记-重启数据覆盖问题、迁移、基于java代码发版(maven构建)

    之前在公司机房部署了一套jenkins环境,现需要迁移至IDC机房服务器上,迁移过程中记录了一些细节:1)jenkins默认的主目录放在当前用户家目录路径下的.jenkins目录中.如jenkins使 ...

  2. [译]17-spring基于java代码的配置元数据

    spring还支持基于java代码的配置元数据.不过这种方式不太常用,但是还有一些人使用.所以还是很有必要介绍一下. spring基于java代码的配置元数据,可以通过@Configuration注解 ...

  3. 一个基于OCV的人肉选取特征点程序

    基于OpenCV写了一个交互式获取图片上的人肉选取的特征,并保存到文件的小程序. 典型应用场景:当在一个精度不高的应用需求中,相机分辨率差或者变形严重,某些棋盘点通过代码检测不出,就可以通过手工选取的 ...

  4. 基于java代码的springmvc配置

    在我的印象中,开发一个web项目首选当然是springmvc,而配置springmvc无非就是web.xml里配置其核心控制器DispatcherServlet.然后把所有的请求都交给它处理,再配个视 ...

  5. 基于java代码的Spring-mvc框架配置

     Spring 版本 4.3.2   maven项目 1.首先上项目目录图,主要用到的配置文件,略去css和js的文件 引包: 2.主要代码: (1)NetpageWebAppInitializer类 ...

  6. 使用 MVVMLight 消息通知

    欢迎阅读我的MVVMLight教程系列文章<关于 MVVMLight 设计模式系列> 在文章的其实我们就说了,MVVMLight的精华就是消息通知机制,设计的非常不错.这个东西在MVVML ...

  7. 基于纯Java代码的Spring容器和Web容器零配置的思考和实现(3) - 使用配置

    经过<基于纯Java代码的Spring容器和Web容器零配置的思考和实现(1) - 数据源与事务管理>和<基于纯Java代码的Spring容器和Web容器零配置的思考和实现(2) - ...

  8. 基于Java的WebSocket推送

    WebSocket的主动推送 关于消息推送,现在的解决方案如轮询.长连接或者短连接,当然还有其他的一些技术框架,有的是客户端直接去服务端拿数据. 其实推送推送主要讲的是一个推的概念,WebSocket ...

  9. 二叉树及其三种遍历方式的实现(基于Java)

    二叉树概念: 二叉树是每个节点的度均不超过2的有序树,因此二叉树中每个节点的孩子只能是0,1或者2个,并且每个孩子都有左右之分. 位于左边的孩子称为左孩子,位于右边的孩子成为右孩子:以左孩子为根节点的 ...

随机推荐

  1. OC与Swift创建pod

    Cocoa pods 是iOS最常用的类库管理工具   OC的使用   删除源   sudo gem sources -r https://rubygems.org/ 添加源(使用淘宝的镜像,记住要用 ...

  2. ComboBox值排序

    ComboBox值排序先是想通过冒泡排序,但是冒泡排序是int类型,又打算通过下标,进行字符串排序,然后想到了一个简单的办法……先存入ArrayList排序Sort清空ComboBox再遍历存入 ...

  3. CentOS 6.4 x64 Percona-Server-5.6.15 源码安装

    首先下载 Percona-Server-5.6 http://www.percona.com/downloads/Percona-Server-5.6/LATEST/source/ 然后必须先安装cm ...

  4. IO之同步、异步、阻塞、非阻塞 (2)

    [原创链接: http://www.smithfox.com/?e=191, 转载请保留此声明, 谢谢! ] I/O Model 是一个很大的话题, 也是一个实践性很强的事情, 网上有各种说法和资料, ...

  5. CodeForces 626D Jerry's Protest

    计算前两盘A赢,最后一盘B赢的情况下,B获得的球的值总和大于A获得的球总和值的概率. 存储每一对球的差值有几个,然后处理一下前缀和,暴力枚举就好了...... #include<cstdio&g ...

  6. MYSQL 主从服务器配置工作原理

    一.        主从配置的原理: Mysql的 Replication 是一个异步的复制过程,从一个 Mysql instace(我们称之为 Master)复制到另一个 Mysql instanc ...

  7. AFNetworking封装思路简析

    http://blog.csdn.net/qq_34101611/article/details/51698473 一.AFNetworking的发展 1. AFN 1.0版本 AFN 的基础部分是 ...

  8. C++中string类的使用方法

    如果所比较的两个string 相等,则返回0: 操作string 大于参数string,返回 正数:操作string 小于参数string,返回负数. (1) 比较操作string 与 _Str 或C ...

  9. UVa 543 - Goldbach's Conjecture

    题目大意:给一个偶数,判断是否是两个素数的和. 先用sieve方法生成一个素数表,然后再进行判断即可. #include <cstdio> #include <vector> ...

  10. 4)Javascript设计模式:Decorator模式

    function MacBook() { this.cost = function() { return 997; } } var macbook = new MacBook(); function ...