Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
ÎҵĵÚÒ»¸ö Mono for Android Ó¦ÓÃ
 
×÷ÕߣºÕÅÖ¾Ãô À´×ÔÓÚ£º²©¿ÍÔ° ·¢²¼ÓÚ 2015-9-21
  2046  次浏览      28
 

Mono for Android ³õÌåÑ飬 ѧϰÔõôʹÓà Mono for Anrdoid ´´½¨ android Ó¦Ó㬠ÈçºÎʹÓà Intent Æô¶¯ Activity £¬ ÈçºÎÔÚ Activity Ö®¼ä´«µÝ²ÎÊý¡£

×¼±¸¿ª·¢»·¾³

ÏÂÔØ²¢°²×° Mono for Android

ÔÚ OSX ϵͳÏÂ×¼±¸ Mono for Android ¿ª·¢»·¾³Ê±±È½ÏÈÝÒ׵ģ¬ ֻҪȥ Xamarin ÏÂÔØÒ»¸öÔÚÏß°²×°³ÌÐò£¬ °²×°³ÌÐò»á×Ô¶¯ÏÂÔØ²¢°²×°ËùÓеÄÎļþ£¬ ÉõÖÁ°üÀ¨ JDK¡¢ Android SDK µÈ£¬ ûʲôºÃ˵µÄ£¬ Ò»¾ä»°£¬ ºÜ¼òµ¥¡£

ÅäÖà Android Ä£ÄâÆ÷

Æô¶¯ MonoDevelop £¬ ÔÚ Tools ²Ëµ¥ÏÂÕÒµ½µã»÷ ¡°Open AVD Manager¡± £¬ ½«»áÆô¶¯ ¡°Android Virtual Device Manager¡±£¬ ´´½¨Ò»¸öÐ嵀 Android ÐéÄâÉ豸£¬ Name Ϊ Droid4.1£¬ Target Ñ¡Ôñ 4.1£¬ SD ¿¨Ñ¡Ôñ 256£¬ Skin Ñ¡ÔñÄÚÖÃµÄ WXGA720 £¬ µÈµÈ£¬ Ò»ÇпÉÒԲο¼ Google µÄÎĵµ¡£

ÐèҪעÒâµÄÊÇ£¬ ÒªÌí¼ÓÒ»¸öÓ²¼þÑ¡Ïî GPU emulation £¬ ²¢ÉèÖÃΪ true £¬ ¿ªÆô GPU Ä£Ä⣬ ¿ÉÒÔ¼Ó¿ìÄ£ÄâÆ÷ÔËÐÐËÙ¶È£¬ ·ñÔòÄ£ÄâÆ÷ÔËÐÐÕæµÄ»áºÜÂý¡£

´´½¨ºÃÁËÖ®ºó£¬ ÏÈÔËÐÐÒ»ÏÂÄ£ÄâÆ÷£¬ È·ÈÏÒ»ÇÐÅäÖÃÕý³£ÁË£¬ Õû¸ö¿ª·¢»·¾³¾ÍËã×¼±¸ºÃÁË¡£

´´½¨ Mono for Android Ó¦ÓÃ

´ò¿ª MonoDevelop £¬ Ñ¡Ôñн¨½â¾ö·½°¸£¬ ×ó±ßµÄ·ÖÀàÑ¡Ôñ "Mono for Android" £¬ ÓÒ±ßÑ¡Ôñ "Mono for Android Application" £¬ ʹÓÃĬÈϵÄÄ£°åн¨Ò»¸ö Mono for Android Ó¦ÓóÌÐò£¬ ÈçÏÂͼËùʾ£¬ ÏîÄ¿Ãû³ÆÎª ¡°MyFirstApp¡± ¡£

ÊìϤĬÈÏÏîĿģ°å

ÏÖÔÚ£¬ ÏȲ»Òª×öÆäËüµÄ£¬ ÏÈÀ´ÊìϤһÏÂÕâ¸öÏîÄ¿£¬ ´ò¿ªÏîÄ¿ÊôÐÔ¶Ô»°¿ò£¬ ¿´¿´Ã¿¸ö½Úµã¶¼ÓÐʲôÉèÖÃÏ ÖØµãÊìϤÏÂÃæ¼¸¸ö½Úµã£º

Build/General £¬ Ñ¡Ôñ Target Framework £¬ÉèÖñàÒëÓ¦ÓÃʹÓÃµÄ Android SDK °æ±¾£»

Build/Mono for Android Build £¬ ÉèÖÃÈç Linker ¡¢ ²¿Êð·½Ê½¡¢ ÒÔ¼°¸ß¼¶±êÇ©ÏÂµÄµÄ CPU¼Ü¹¹¡¢ ¹ú¼Ê»¯µÈ£»

Build/Mono for Android Application £¬ ÉèÖÃÓ¦ÓóÌÐòÐÅÏ¢£¬ Ò²¾ÍÊÇ AndroidManifest.xml ÎļþµÄÐÅÏ¢£»

ÏîĿĬÈϵÄĿ¼½á¹¹ÈçÏÂÈçËùʾ£º

×¢Òâ Assets ºÍ Resource Ŀ¼£º

Assets Ŀ¼£¬ Èç¹ûÓ¦ÓÃÐèÒªÓõ½¶þ½øÖÆ×ÊÔ´Îļþ£¬ ±ÈÈçÌØÊâ×ÖÌå¡¢ÉùÒôµÈ£¬ ·ÅÔÚÕâ¸öĿ¼Ï£¬ ²¢½« BuildAction ÉèÖÃΪ AndrioidAsset £¬ ×ÊÔ´½«»áºÍÓ¦ÓóÌÐòÒ»Æð²¿Ê𣬠ÔÚÔËÐÐʱ¿ÉÒÔͨ¹ý AssetManager ʹÓÃÀàËÆÏÂÃæµÄ´úÂë½øÐзÃÎÊ£º

public class ReadAsset : Activity
{
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
InputStream input = Assets.Open ("my_asset.txt");
}
}

ÁíÍ⣬×ÖÌåÎļþ¿ÉÒÔÕâÑù¼ÓÔØ£º

Typeface tf = Typeface.CreateFromAsset(
Context.Assets, "fonts/samplefont.ttf");

Resource Ŀ¼, °üº¬Ó¦ÓóÌÐòËùÐèµÄͼƬ¡¢ ²¼¾ÖÃèÊö¡¢ ¶þ½øÖÆÎļþºÍ×Ö·û´®×ÖµäµÈ×ÊÔ´Îļþ¡£ ±ÈÈ磬 Ò»¸ö¼òµ¥µÄ Android Ó¦Óðüº¬Ò»¸ö½çÃæÃèÊöÎļþ (main.axml) £¬ Ò»¸ö¹ú¼Ê»¯µÄ×Ö·û´®×Öµä (strings.xml) ÒÔ¼°Í¼±ê (icon.png) £¬ ÕâЩÎļþ°´ÕÕÏÂÃæµÄ½á¹¹±£´æÔÚ ¡°Resource¡± Ŀ¼ÄÚ£º

Resources/
drawable/
icon.png
layout/
main.axml
values/
strings.xml

ΪÁËÈñàÒëϵͳÄܹ»½«×ÊÔ´Îļþʶ±ð³ö Android ×ÊÔ´£¬ ÐèÒª½«Æä±àÒ붯×÷ (Build Action) ÉèÖÃΪ ¡°Android Resource¡±¡£ ÉÏÃæµÄĿ¼½á¹¹¾­¹ý±àÒëÖ®ºó£¬ ½«»áÉú³ÉÀàËÆÏÂÃæµÄÎļþ£º

public class Resource {

public class Drawable {
public const int icon = 0x123;
}

public class Layout {
public const int main = 0x456;
}

public class Strings {
public const int FirstString = 0xabc;
public const int SecondString = 0xbcd;
}
}

ʹÓà Resource.Drawable.icon ¿ÉÒÔÒýÓà drawable/icon Îļþ£¬ Resource.Layout.main ¿ÉÒÔÒýÓà /layout/main.axml Îļþ£¬ ¶øÊ¹Óà Resource.Strings.FirstString Ôò¿ÉÒÔÒýÓà values/strings.xml ÎļþÖеĵÚÒ»¸ö×Ö·û´®¡£

ÒÔÉÏÕâЩºÍ Android SDK ÎĵµÖнéÉܵͼÊÇ´óͬСÒìµÄ£¬ ÔÚ Mono for Android »·¾³ÏÂÓÖ¼ÓÉÏÁËһЩ .Net ÌØÓеķç¸ñ¶øÒÑ£¬ ¶ÔÓÚÓо­ÑéµÄ .Net ¿ª·¢ÈËÔ±À´Ëµ£¬ Ò»¿´¾Í¶®ÁË¡£

´´½¨ Activity ¼° View

ÓëÆäËüƽ̨µÄÓ¦ÓóÌÐò²»Í¬£¬ ÕâЩƽ̨ÉϵÄÓ¦ÓóÌÐòͨ³£¶¼ÓÐÒ»¸öµ¥Ò»µÄÈë¿Ú main º¯Êý£¬ Ó¦ÓóÌÐò¶¼ÓÉÕâ¸öÈë¿Úº¯ÊýÆô¶¯£¬ ´´½¨´°¿Ú¡¢ ά»¤½çÃæ¡£ ¶ø Android ³ÌÐòÔò²»Í¬£¬ Ò»¸ö Android ³ÌÐòÓÉһЩËÉÉ¢µÄ Activity ÌṩµÄ½çÃæ×é³É£¬ Òò´Ë¿´ÆðÀ´Óеã¶ùÏñ Web Ó¦ÓóÌÐò£¬ ÈκÎÒ»¸ö Activity ¶¼¿ÉÒÔͨ¹ý URL Æô¶¯¡£

ÏÖÔÚÀ´Ð½¨Ò»¸ö Activity £¬ Ôڲ˵¥À¸ÉÏÑ¡Ôñ File -> New -> File £¬ ÔÚµ¯³öµÄн¨Îļþ¶Ô»°¿òÖÐÑ¡Ôñ Android Activity £¬ ÈçÏÂͼËùʾ£º

н¨µÄ Activity µÄ´úÂëÈçÏ£º

[Activity(Label = "MyFirstApp", MainLauncher = true)]
public class MainActivity : Activity {

protected override void OnCreate(Bundle bundle) {
base.OnCreate(bundle);
}

}

×¢Òâ MainActivity µÄ ActivityAttribute ±ê¼Ç£¬ ÕâÀïÖ¸¶¨ÁËÁ½¸öÊôÐÔ£¬ Label="MyFirstApp" ±íʾ Activity µÄÏÔʾÃû³Æ£¬ MainLauncher=true ±íʾÔÚÓ¦ÓóÌÐòÁбíÖÐÏÔʾ£¬ ÔÚ±àÒëʱ£¬ Mono for Android »á¸ù¾ÝÕâЩ±ê¼ÇÉú³ÉÒ»¸ö AndroidManifest.xml £¬ ²¢´ò°üµ¹×îÖÕµÄ Android Ó¦ÓóÌÐòÖС£

ÏÖÔÚÀ´´´½¨ MainActivity µÄÊÓͼ£¬ ÏÈÑ¡ÖÐÏîÄ¿µÄ Resources/layout Ŀ¼£¬ Ôڲ˵¥À¸ÉÏÑ¡Ôñ File -> New -> File £¬ ÔÚµ¯³öµÄн¨Îļþ¶Ô»°¿òÖÐÑ¡Ôñ Android Layout £¬ ÈçÏÂͼËùʾ£º

ÎļþÃûÊäÈë MainActivityLayout £¬ MonoDevelop ĬÈÏ»á´ò¿ªÉè¼ÆÊÓͼ£¬ ÏÈÇл»µ½´úÂëÊÓͼ£¬ Õ³ÌùÏÂÃæµÄ´úÂ룺

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:layout_width="0dp"
android:layout_height="wrap_content"
android:id="@+id/MessageEditText"
android:layout_weight="1"
android:hint="@string/MessageEditTextHint" />
<Button
android:text="@string/SendButtonText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/SendButton" />
</LinearLayout>

È»ºóÇл»µ½Éè¼ÆÊÓͼ£¬ ¿´ÆðÀ´ÈçÏÂͼËùʾ£º

ÔÚ MainActivity.cs ÎļþÖÐµÄ base.OnCreate(bundle) ÏÂÃæ¼ÓÈëÏÂÃæÒ»¾ä´úÂ룬 Èà MainActivity ʹÓà MainActivityLayout £º

this.SetContentView(Resource.Layout.MainActivityLayout);

ÓÃͬÑùµÄ·½·¨£¬ ´´½¨ SecondActivity ÒÔ¼° SecondActivityLayout £¬ SecondActivityLayout µÄ´úÂëÒÔ¼°Éè¼Æ½çÃæÈçÏ£º

<?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">
<TextView
android:text="Large Text"
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/MessageTextView" />
</LinearLayout>

ʹÓà Intent Æô¶¯ Activity ²¢´«µÝ²ÎÊý

Èç¹ûÏÖÔÚÔËÐгÌÐò£¬ ½«Ö»ÄÜ¿´µ½ MainActivity £¬ ¿´²»µ½ SecondActivity £¬ Èç¹ûÒªÏëÆô¶¯ SecondActivity £¬ ¾ÍÐèÒªÓõ½ Intent ¡£ Android ͨ¹ý Intent À´Æô¶¯ Activity £¬ ÒÔ¼°ÔÚ Activity Ö®¼ä´«µÝ²ÎÊý¡£

´ò¿ª MainActivity £¬ Ìí¼ÓһЩ´úÂ룬 ʹÆä¿´ÆðÀ´ÈçÏÂËùʾ£º

[Activity(Label = "MyFirstApp", MainLauncher = true)]
public class MainActivity : Activity {

public const string ExtraMessage = "Cn.Beginor.MyFirstApp.MainActivity.ExtraMessage";

protected override void OnCreate(Bundle bundle) {
base.OnCreate(bundle);
// ÉèÖò¼¾ÖÎļþ
this.SetContentView(Resource.Layout.MainActivityLayout);
var sendBtn = this.FindViewById<Button>(Resource.Id.SendButton);
// Ϊ·¢ËͰ´Å¥Ìí¼Óʼþ´¦Àíº¯Êý
sendBtn.Click += SendButtonClick;
}

void SendButtonClick (object sender, EventArgs e) {
// »ñÈ¡Óû§ÊäÈëµÄÐÅÏ¢
var msgEditText = this.FindViewById<EditText>(Resource.Id.MessageEditText);
if (msgEditText == null) {
return;
}
var msg = msgEditText.Text;
// ´´½¨ Intent ²¢´«µÝÓû§ÊäÈëµÄÐÅÏ¢
var intent = new Intent(this, typeof(SecondActivity));
intent.PutExtra(ExtraMessage, msg);
// Æô¶¯µÚ¶þ¸ö Activity
this.StartActivity(intent);
}
}

ÔÙ´ò¿ª SecondActivity £¬ Ìí¼Ó½ÓÊÕ ExtraMessage ²¢ÏÔʾµÄ´úÂ룺

protected override void OnCreate(Bundle bundle) {
base.OnCreate(bundle);
// ÉèÖò¼¾ÖÎļþ
this.SetContentView(Resource.Layout.SecondActivityLayout);
// ´Ó Intent ÖлñÈ¡ ExtraMessage
var intent = this.Intent;
var msg = intent.GetStringExtra(MainActivity.ExtraMessage);
// ½« ExtraMessage ÏÔʾÔÚ TextView ÉÏ
var textView = this.FindViewById<TextView>(Resource.Id.MessageTextView);
textView.Text = msg;
}

ÏÖÔÚÔËÐÐÕâ¸ö³ÌÐò£¬ ¿ÉÒÔ¿´µ½Ê×ÏÈÆô¶¯µÄÊÇ MainActivity £¬ ÏÔʾ½çÃæÈçÏ£º

µã»÷ Send °´Å¥£¬ »áÆô¶¯ SecondActivity £¬ ²¢½«ÊäÈëµÄÐÅÏ¢ÏÔʾÔÚ½çÃæÉÏ£º

×ܽá

Mono for Android ³õÌåÑé¸Ð¾õ²»´í£¬ ¶ÔÓÚÓо­ÑéµÄ .Net ¿ª·¢ÈËÔ±À´½²£¬ ÉÏÊÖµÄËٶȷdz£¿ì£¬ Ö»ÒªÉÔ΢ѧϰһÏ Android µÄ UI ·½ÃæµÄ֪ʶ¾Í¿ÉÒÔÁË¡£ MonoDevelop µÄ½çÃæºÍ VS ºÜÏàËÆ£¬ ÉÏÊÖÒ²ÊǺÜÈÝÒ×µÄÊÂÇé¡£ »¹ÊÇÄǾ仰£¬ Mono for Android ×î´óµÄºÃ´¦ÊÇ¿ÉÒÔÀûÓÃÏÖÓÐµÄ .Net ´úÂ룬 CodePlex ÒÔ¼° Github ÉÏÓзḻµÄ×ÊÔ´¿ÉÒÔÀûÓ㬠Èç¹ûÄãÊìϤ .Net ¿ª·¢£¬ Mono for Android Ò²ÊÇÖµµÃÒ»ÊԵġ£

   
2046 ´Îä¯ÀÀ       28
 
Ïà¹ØÎÄÕÂ

ÊÖ»úÈí¼þ²âÊÔÓÃÀýÉè¼ÆÊµ¼ù
ÊÖ»ú¿Í»§¶ËUI²âÊÔ·ÖÎö
iPhoneÏûÏ¢ÍÆËÍ»úÖÆÊµÏÖÓë̽ÌÖ
AndroidÊÖ»ú¿ª·¢£¨Ò»£©
 
Ïà¹ØÎĵµ

Android_UI¹Ù·½Éè¼Æ½Ì³Ì
ÊÖ»ú¿ª·¢Æ½Ì¨½éÉÜ
androidÅÄÕÕ¼°ÉÏ´«¹¦ÄÜ
Android½²ÒåÖÇÄÜÊÖ»ú¿ª·¢
Ïà¹Ø¿Î³Ì

Android¸ß¼¶Òƶ¯Ó¦ÓóÌÐò
Androidϵͳ¿ª·¢
AndroidÓ¦Óÿª·¢
ÊÖ»úÈí¼þ²âÊÔ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

androidÈË»ú½çÃæÖ¸ÄÏ
AndroidÊÖ»ú¿ª·¢£¨Ò»£©
AndroidÊÖ»ú¿ª·¢£¨¶þ£©
AndroidÊÖ»ú¿ª·¢£¨Èý£©
AndroidÊÖ»ú¿ª·¢£¨ËÄ£©
iPhoneÏûÏ¢ÍÆËÍ»úÖÆÊµÏÖ̽ÌÖ
ÊÖ»úÈí¼þ²âÊÔÓÃÀýÉè¼ÆÊµ¼ù
ÊÖ»ú¿Í»§¶ËUI²âÊÔ·ÖÎö
ÊÖ»úÈí¼þ×Ô¶¯»¯²âÊÔÑо¿±¨¸æ

Android¸ß¼¶Òƶ¯Ó¦ÓóÌÐò
AndroidÓ¦Óÿª·¢
Androidϵͳ¿ª·¢
ÊÖ»úÈí¼þ²âÊÔ
ǶÈëʽÈí¼þ²âÊÔ
AndroidÈí¡¢Ó²¡¢ÔÆÕûºÏ

ÁìÏÈIT¹«Ë¾ android¿ª·¢Æ½Ì¨×î¼Ñʵ¼ù
±±¾© Android¿ª·¢¼¼Êõ½ø½×
ijÐÂÄÜÔ´ÁìÓòÆóÒµ Android¿ª·¢¼¼Êõ
ijº½Ì칫˾ Android¡¢IOSÓ¦ÓÃÈí¼þ¿ª·¢
°¢¶û¿¨ÌØ LinuxÄÚºËÇý¶¯
°¬Ä¬Éú ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ
Î÷ÃÅ×Ó Ç¶Èëʽ¼Ü¹¹Éè¼Æ