Xamarin 小试牛刀 通知栏消息通知和按钮(基于Java代码人肉转换)
本示例基于网友现有安卓项目人肉翻译,在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代码人肉转换)的更多相关文章
- Jenkins日常运维笔记-重启数据覆盖问题、迁移、基于java代码发版(maven构建)
之前在公司机房部署了一套jenkins环境,现需要迁移至IDC机房服务器上,迁移过程中记录了一些细节:1)jenkins默认的主目录放在当前用户家目录路径下的.jenkins目录中.如jenkins使 ...
- [译]17-spring基于java代码的配置元数据
spring还支持基于java代码的配置元数据.不过这种方式不太常用,但是还有一些人使用.所以还是很有必要介绍一下. spring基于java代码的配置元数据,可以通过@Configuration注解 ...
- 一个基于OCV的人肉选取特征点程序
基于OpenCV写了一个交互式获取图片上的人肉选取的特征,并保存到文件的小程序. 典型应用场景:当在一个精度不高的应用需求中,相机分辨率差或者变形严重,某些棋盘点通过代码检测不出,就可以通过手工选取的 ...
- 基于java代码的springmvc配置
在我的印象中,开发一个web项目首选当然是springmvc,而配置springmvc无非就是web.xml里配置其核心控制器DispatcherServlet.然后把所有的请求都交给它处理,再配个视 ...
- 基于java代码的Spring-mvc框架配置
Spring 版本 4.3.2 maven项目 1.首先上项目目录图,主要用到的配置文件,略去css和js的文件 引包: 2.主要代码: (1)NetpageWebAppInitializer类 ...
- 使用 MVVMLight 消息通知
欢迎阅读我的MVVMLight教程系列文章<关于 MVVMLight 设计模式系列> 在文章的其实我们就说了,MVVMLight的精华就是消息通知机制,设计的非常不错.这个东西在MVVML ...
- 基于纯Java代码的Spring容器和Web容器零配置的思考和实现(3) - 使用配置
经过<基于纯Java代码的Spring容器和Web容器零配置的思考和实现(1) - 数据源与事务管理>和<基于纯Java代码的Spring容器和Web容器零配置的思考和实现(2) - ...
- 基于Java的WebSocket推送
WebSocket的主动推送 关于消息推送,现在的解决方案如轮询.长连接或者短连接,当然还有其他的一些技术框架,有的是客户端直接去服务端拿数据. 其实推送推送主要讲的是一个推的概念,WebSocket ...
- 二叉树及其三种遍历方式的实现(基于Java)
二叉树概念: 二叉树是每个节点的度均不超过2的有序树,因此二叉树中每个节点的孩子只能是0,1或者2个,并且每个孩子都有左右之分. 位于左边的孩子称为左孩子,位于右边的孩子成为右孩子:以左孩子为根节点的 ...
随机推荐
- linux自动启动程序
下面用自启动apache为例: 有两种方法可以让Apache在系统启动时自动启动 1. 在/etc/rc.d/rc.local中增加启动apache的命令,例如:/usr/local/httpd/ ...
- php中print_r 和var_dump 打印变量的区别。
<?php $arr = array(true); var_dump($arr); echo "<br/>"; print_r($arr); 结果如下: 说明 p ...
- cronolog 对 tomcat 7 进行日志切割
一.安装 软件 cronolog-1.6.2.tar.gz tar zxvf cronolog-1.6.2.tar.gz cd cronolog-1.6.2 ./configure && ...
- Frequent Distribution sorted by frequency
import nltk def freq_sorted(text,ranklimit): fd=nltk.FreqDist(text) cumulative = 0.0 for rank, (word ...
- 顽强的的砂锅之——深究finally代码块与return语句的执行顺序!
当问到finally代码块的执行顺序,就算刚刚学编程的小白都能毫不犹豫的说出答案:不管异常发生与否,finally语句块的代码一定会被执行!大体上这样讲是没有错,但是finally块中的代码一定会有效 ...
- Keil STM32调试,使用ST-Link下载程序时提示“flash timeout.reset the target and try it again”
参考: 很郁闷,买来没多久的 STM32F4-DISCOVERY 就挂了? STM32F103RB Jlink调试的时候出现flash timeout.reset the target and t ...
- iOS开发——Localizable.strings
这篇写的不多,但是绝对诚意满满.不会像别人一样,要不不详细,要不罗里吧嗦一堆. 1.创建Localizable.strings文件 Command+N—>iOS—>Resource—> ...
- Linux开发IDE打造
一直以来都是在windows下做开发的,微软提供的IDE vs开发起来确实快捷高效,接触linux也很久了通常都是使用vim进行一些基础文件的编译,现在突然要转到linux做开发还是不太适应的,网上 ...
- iOS中UITextField 使用全面解析 分类: ios技术 2015-04-10 14:37 153人阅读 评论(0) 收藏
//初始化textfield并设置位置及大小 UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 13 ...
- IOS开发根据字体大小等获取文字所占的高度
Model *model = self.modelArr[indexPath.row]; //根据label文字获取CGRect NSMutableParagraphStyle *paragraphS ...