Yo en su día estuve trasteando con Xamarin bajo Visual Studio 2010.
La verdad que el producto es una pasada, se integra perfectamente en Visual Studio y realizar una aplicación es tremendamente rápido y sencillo.
De todos modos hay cosas que se hacen "parecidas" a como se hacen en Java. Por ponerte un pequeño ejemplo:
(ojo, no investigué mucho en el tema)using System;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
namespace AndroidApplication3
{
[Activity(Label = "AndroidApplication3", MainLauncher = true, Icon = "@drawable/icon")]
public class Activity1 : Activity
{
int count = 1;
Button btn1;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);
// Get our button from the layout resource,
// and attach an event to it
Button button = FindViewById<Button>(Resource.Id.MyButton);
btn1 = FindViewById<Button>(Resource.Id.button1);
button.Click += delegate { button.Text = string.Format("{0} clicks!", count++); };
btn1.Click += new EventHandler(btn1_Click);
}
void btn1_Click(object sender, EventArgs e)
{
btn1.Text = string.Format("{0}", DateTime.Now.ToString());
}
}
}
En esa activity hay dos botones, es necesario usar el método FindViewById para acceder a ellos. Los eventos si que pueden ser definidos como se hace normalmente en cualquier código de C# con su EventHandler y tal...
El único problema que encontré yo (y tal y como indicas) es que si quieres usarlo con Visual Studio es necesario la licencia de tipo Business (
1000 pavos), o la Enterprise (
1900 pavos)
AL AÑO, ya que las versiones Started e Indie no tienen soporte para Visual Studio (lo tienen para el Xamarin Studio, pero vamos, la
gracia del tema es poder aprovechar todo lo que ofrece Visual Studio, para mi el mejor producto de Microsoft pero de largo, de aquí a Lima).
Si tienes una buena base de C#, yo me bajaría Eclipse, la SDK de Android y tira millas.
Java y C# no son tan distintos y tal como he comentado antes, tarde o temprano, tendrás que lidiar con particularidades de Android, (Activities, FindViewById, etc) que se hacen igual si o si tanto en Java o en C# usando Xamarin.