Mono的简单例子
一直对移动端开发有些兴趣,但苦于不会Java,好在终于找到了个好玩的。
安装方法略了,先建立一个玩玩
不多说,贴代码了,需要注意的只有些JAVA和C#写法不太一样的地方,不细介绍了,因为没什么经验,乱试的,所以也没什么规范,随便看看就好
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Java.Util; namespace AndroidHotelServiceTest
{
[Activity(Label = "My Activity")]
public class ActivityCalendar : Activity
{
protected override Dialog OnCreateDialog(int id)
{
if (id == 1)
{
return new DatePickerDialog(this, new DDialogLisetener(this), 2013, 11, 11);
}
return base.OnCreateDialog(0);
} protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
// Create your application here
SetContentView(Resource.Layout.CalendarView);
Button button = FindViewById<Button>(Resource.Id.btClose);
button.Click += delegate
{
Intent intent = new Intent();
intent.SetClass(this, typeof(ActivityHotel));
StartActivity(intent);
}; ShowDialog(1); }
} public class DDialogLisetener : DatePickerDialog.IOnDateSetListener
{
private Context _context;
public DDialogLisetener(Context context)
{
_context = context;
} public void OnDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth)
{
String sDayOfWeek = getDayOfWeek(year, monthOfYear, dayOfMonth);
//Toast.makeText(CreateParty.this, "sdf", Toast.LENGTH_LONG).show();
int m_nYear = year;
int m_nMonth = monthOfYear + 1;
int m_nDay = dayOfMonth;
Toast.MakeText(_context, "ddd", ToastLength.Long).Show();
Toast.MakeText(_context, m_nYear + "年" + m_nMonth + "月" + m_nDay + "日 ", ToastLength.Long).Show();
} private string getDayOfWeek(int tmpYear, int tmpMonth, int tmpDay)
{
String myWeek = null;
String sYear = tmpYear.ToString();
// 取年的后两位
String sYearTwo = sYear.Substring(sYear.Length - 2); int y = tmpYear; int m = tmpMonth + 1;
int c = 20;
int d = tmpDay;
int w = (y + (y / 4) + (c / 4) - 2 * c
+ (26 * (m + 1) / 10) + d - 1) % 7; switch (w)
{
case 0:
myWeek = "日";
break;
case 1:
myWeek = "一";
break;
case 2:
myWeek = "二";
break;
case 3:
myWeek = "三";
break;
case 4:
myWeek = "四";
break;
case 5:
myWeek = "五";
break;
case 6:
myWeek = "六";
break;
default:
break;
}
return myWeek; } public void Dispose()
{
this.Dispose();
} public IntPtr Handle
{
get { return IntPtr.Zero; }
}
}
}
参考了不少网上的代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.Media;
using Android.Content.Res;
using Java.IO; namespace AndroidHotelServiceTest
{
public class BeepManager
{
private static Activity m_CurrentActivity;
private static MediaPlayer m_MediaPlayer = null; private static MediaPlayer BuildMediaPlayer(Context context)
{
MediaPlayer player = new MediaPlayer();
player.SetAudioStreamType(Android.Media.Stream.Music);
player.Completion += new EventHandler(mediaplayer_Completion); AssetFileDescriptor assetfiledescriptor = context.Resources.OpenRawResourceFd(0x7f040000);
try
{
player.SetDataSource(assetfiledescriptor.FileDescriptor, assetfiledescriptor.StartOffset, assetfiledescriptor.Length);
assetfiledescriptor.Close();
player.SetVolume(0.1F, 0.1F);
player.Prepare();
m_MediaPlayer = player;
}
catch (IOException ioexception)
{
player = null;
} return player;
} static void mediaplayer_Completion(object sender, EventArgs e)
{
m_MediaPlayer.SeekTo(0);
} public static void PlayBeepSound(Activity activity)
{
m_CurrentActivity = activity;
if (m_MediaPlayer == null)
{
m_MediaPlayer = BuildMediaPlayer(m_CurrentActivity);
}
m_MediaPlayer.Start();
} public static void Stop()
{
if (m_MediaPlayer != null)
{
m_MediaPlayer.Stop();
m_MediaPlayer = null;
}
} //private void prepareToPlay()
//{
// try
// {
// //获取当前音频流的路径后我们需要通过MediaPlayer的setDataSource来设置,然后调用prepareAsync()来完成缓存加载
// String path = pathList.get(currPosition);
// player.setDataSource(path);
// //之所以使用prepareAsync是因为该方法是异步的,因为访问音频流是网络操作,在缓冲和准备播放时需要花费
// //较长的时间,这样用户界面就可能出现卡死的现象
// //该方法执行完成后,会执行onPreparedListener的onPrepared()方法。
// player.prepareAsync(); // }
// catch (IllegalArgumentException e)
// {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// catch (IllegalStateException e)
// {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// catch (IOException e)
// {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
//}
}
}
调用WCF验证登陆
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using System.ServiceModel;
using System.Threading; namespace AndroidHotelServiceTest
{
[Activity(Label = "登陆", MainLauncher = true)]
public class ActivityLogin : Activity
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Login);
// Create your application here Button button = FindViewById<Button>(Resource.Id.login);
EditText txtUser = FindViewById<EditText>(Resource.Id.edtuser);
EditText txtPassword = FindViewById<EditText>(Resource.Id.edtpsd); button.Click += delegate
{
Login(txtUser.Text, txtPassword.Text);
};
} public void Login(string user, string password)
{
BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.None);
var timeout = new TimeSpan(0, 1, 0);
binding.SendTimeout = timeout;
binding.OpenTimeout = timeout;
binding.ReceiveTimeout = timeout; IHotelService service = ChannelFactory<IHotelService>.CreateChannel(binding,
new EndpointAddress("http://172.25.16.50:90/HotelService.svc"));
string loginUser = service.Login(user, password);
if (!string.IsNullOrEmpty(loginUser))
{
Intent intent = new Intent();
intent.SetClass(this, typeof(ActivityHotel));
intent.PutExtra("User", user);
StartActivity(intent);
}
}
}
}
总之,大概就这样了,页面布局什么的也没什么特别的。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:minWidth="25px"
android:minHeight="25px">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="账号:" />
<EditText
android:layout_width="240dip"
android:layout_height="wrap_content"
android:text="aaa"
android:id="@+id/edtuser" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="密码:" />
<EditText
android:layout_width="240dip"
android:layout_height="wrap_content"
android:password="true"
android:id="@+id/edtpsd" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:orientation="vertical">
<CheckBox
android:id="@+id/checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="记住密码" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<Button
android:id="@+id/login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="登录" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
至于服务端,就是VS自动生成的代码加了一个登陆判断而已
[ServiceContract]
public interface IHotelService
{
[OperationContract]
string Login(string user, string password);
}
Mono的简单例子的更多相关文章
- Hibernate4.2.4入门(一)——环境搭建和简单例子
一.前言 发下牢骚,这段时间要做项目,又要学框架,搞得都没时间写笔记,但是觉得这知识学过还是要记录下.进入主题了 1.1.Hibernate简介 什么是Hibernate?Hibernate有什么用? ...
- AgileEAS.NET SOA 中间件平台.Net Socket通信框架-简单例子-实现简单的服务端客户端消息应答
一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...
- spring mvc(注解)上传文件的简单例子
spring mvc(注解)上传文件的简单例子,这有几个需要注意的地方1.form的enctype=”multipart/form-data” 这个是上传文件必须的2.applicationConte ...
- ko 简单例子
Knockout是在下面三个核心功能是建立起来的: 监控属性(Observables)和依赖跟踪(Dependency tracking) 声明式绑定(Declarative bindings) 模板 ...
- mysql定时任务简单例子
mysql定时任务简单例子 ? 1 2 3 4 5 6 7 8 9 如果要每30秒执行以下语句: [sql] update userinfo set endtime = now() WHE ...
- java socket编程开发简单例子 与 nio非阻塞通道
基本socket编程 1.以下只是简单例子,没有用多线程处理,只能一发一收(由于scan.nextLine()线程会进入等待状态),使用时可以根据具体项目功能进行优化处理 2.以下代码使用了1.8新特 ...
- 一个简单例子:贫血模型or领域模型
转:一个简单例子:贫血模型or领域模型 贫血模型 我们首先用贫血模型来实现.所谓贫血模型就是模型对象之间存在完整的关联(可能存在多余的关联),但是对象除了get和set方外外几乎就没有其它的方法,整个 ...
- [转] 3个学习Socket编程的简单例子:TCP Server/Client, Select
以前都是采用ACE的编写网络应用,最近由于工作需要,需要直接只用socket接口编写CS的代码,重新学习这方面的知识,给出自己所用到的3个简单例子,都是拷贝别人的程序.如果你能完全理解这3个例子,估计 ...
- jsonp的简单例子
jsonp的简单例子 index.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8&q ...
随机推荐
- Summary of Critical and Exploitable iOS Vulnerabilities in 2016
Summary of Critical and Exploitable iOS Vulnerabilities in 2016 Author:Min (Spark) Zheng, Cererdlong ...
- spark处理大规模语料库统计词汇
最近迷上了spark,写一个专门处理语料库生成词库的项目拿来练练手, github地址:https://github.com/LiuRoy/spark_splitter.代码实现参考wordmaker ...
- Node.js:dgram模块实现UDP通信
1.什么是UDP? 这里简单介绍下,UDP,即用户数据报协议,一种面向无连接的传输层协议,提供不可靠的消息传送服务.UDP协议使用端口号为不同的应用保留其各自的数据传输通道,这一点非常重要.与TCP相 ...
- 使用mybatis-generator在自动生成Model类和Mapper文件
使用mybatis-generator插件可以很轻松的实现mybatis的逆向工程,即,能通过表结构自动生成对应的java类及mapper文件,可以大大提高工作效率,并且它提供了很多自定义的设置可以应 ...
- WebSocket - ( 一.概述 )
说到 WebSocket,不得不提 HTML5,作为近年来Web技术领域最大的改进与变化,包含CSS3.离线与存储.多媒体.连接性( Connectivity )等一系列领域,而即将介绍的 WebSo ...
- c# 字符串连接使用“+”和string.format格式化两种方式
参考文章:http://www.liangshunet.com/ca/201303/218815742.htm 字符串之间的连接常用的两种是:“+”连接.string.format格式化连接.Stri ...
- Supermap iCloudManager -负载均衡
Supermap icm负载均衡理解: 应用场景:地图出图 子节点1和子节点2中的服务保持一致,一般情况下设置的是匿名用户通过nginx访问服务信息,所以不需要登录. 1.通过nginx分发请求,(轮 ...
- Android—万能ListView适配器
ListView是开发中最常用的控件了,但是总是会写重复的代码,浪费时间又没有意义. 最近参考一些资料,发现一个万能ListView适配器,代码量少,节省时间,总结一下分享给大家. 首先有一个自定义的 ...
- (一)Spark简介-Java&Python版Spark
Spark简介 视频教程: 1.优酷 2.YouTube 简介: Spark是加州大学伯克利分校AMP实验室,开发的通用内存并行计算框架.Spark在2013年6月进入Apache成为孵化项目,8个月 ...
- linux系统oracle-ora12505问题解决方案一
说明:(1)Linux版本 Linux version 2.6.32.12-0.7-default (geeko@buildhost) (gcc version 4.3.4 [gcc-4_3-bran ...