PDA

View Full Version : بنامه نویسی android با C#



jd.mn98
جمعه 29 خرداد 1394, 11:57 صبح
سلام دوستان
من طی جستجو هایی که داشتم فهمیدم برای برنامه نویسی آندروید نیاز به ابزار mono یا xamarin هستش
می خوام بدونم آیا اگر این ابزار ها رو استفاده کنیم ، دقیقا میتونیم با کد نویسی C#.net آندروید بنویسیم یا باز هم کد هایی شبیه به جاوا باید بزنیم؟؟

محسن شامحمدی
جمعه 29 خرداد 1394, 22:07 عصر
کدها کاملا با سی شارپ نوشته می شه

jeson_park
شنبه 30 خرداد 1394, 08:13 صبح
سایت tutsplus هم آموزش خوبی گذاشته
An Introduction to Xamarin: Part 1 (http://code.tutsplus.com/tutorials/an-introduction-to-xamarin-part-1--cms-20987)

jd.mn98
شنبه 30 خرداد 1394, 09:23 صبح
صحیح. کد ها سی شارپ نود درصد شبیه جاوا هستن. منظورم اینه که آیا میتونیم مثل winform واسه دکمه ها و دیگر کنترل ها برنامه تعریف کنیم یا مثل Eclipse باید باز با متد هایی مثل OnCreate و OnResume , OnStart , OnPause استفاده کینم؟؟

jeson_park
دوشنبه 01 تیر 1394, 08:16 صبح
صحیح. کد ها سی شارپ نود درصد شبیه جاوا هستن. منظورم اینه که آیا میتونیم مثل winform واسه دکمه ها و دیگر کنترل ها برنامه تعریف کنیم یا مثل Eclipse باید باز با متد هایی مثل OnCreate و OnResume , OnStart , OnPause استفاده کینم؟؟
بله
به نمونه کد زیر نگاه کنید


using System;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;

namespace SampleAndroidApp
{
[Activity(Label = "Ray's Calculator", MainLauncher = true)]
public class MainActivity : Activity
{
private enum Operation { Addition, Subtraction, Division, Multiplication };
private enum LastKeyInput { Digit, Operator, Equal, DecimalPoint, Sign }

decimal? digitMemory = null;
decimal? totalMemory = null;

Operation? operationMemory = null;

LastKeyInput? lastKeyInput = LastKeyInput.Digit;

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 button1 = FindViewById(Resource.Id.button1);

Button buttonDot = FindViewById(Resource.Id.buttonDot);
Button buttonNegative = FindViewById(Resource.Id.buttonNegative);

EditText resultText = FindViewById(Resource.Id.resultText);

Button buttonAdd = FindViewById(Resource.Id.buttonAdd);
Button buttonSubtract = FindViewById(Resource.Id.buttonSubtract);
Button buttonMultiply = FindViewById(Resource.Id.buttonMultiply);
Button buttonDivide = FindViewById(Resource.Id.buttonDivide);
Button buttonEquals = FindViewById(Resource.Id.buttonEquals);
Button buttonClear = FindViewById(Resource.Id.buttonClear);

buttonNegative.Click += delegate
{
//handles if negative sign is the first input after calculation
if (lastKeyInput != LastKeyInput.Digit && lastKeyInput != LastKeyInput.DecimalPoint && lastKeyInput != LastKeyInput.Sign)
{
resultText.Text = "-";
lastKeyInput = LastKeyInput.Sign;
return;
}
//handles multiple negative sign
if (!resultText.Text.Contains("-"))
{
resultText.Text = "-" + digitMemory.ToString();
lastKeyInput = LastKeyInput.Sign;
}

};
buttonDot.Click += delegate
{
//handles if decimal point is the first input after calculation
if (lastKeyInput != LastKeyInput.Digit && lastKeyInput != LastKeyInput.DecimalPoint && lastKeyInput != LastKeyInput.Sign)
{
resultText.Text = ".";
lastKeyInput = LastKeyInput.DecimalPoint;
return;
}
//handles multiple decimal point
if (!resultText.Text.Contains("."))
{
resultText.Text = digitMemory.ToString() + ".";
lastKeyInput = LastKeyInput.DecimalPoint;
}

};
button1.Click += delegate
{
//Renders Text on Screen
RenderCurrentValue(resultText.Text, "1");
resultText.Text = digitMemory.ToString();

//Perform calculation based on current operator
Calculate();
lastKeyInput = LastKeyInput.Digit;
};



button0.Click += delegate
{
RenderCurrentValue(resultText.Text, "0");
resultText.Text = digitMemory.ToString();
Calculate();
lastKeyInput = LastKeyInput.Digit;
};



}

private void Calculate()
{
if (operationMemory != null)
{
switch (operationMemory)
{
case Operation.Addition:
if (totalMemory == null)
{
//Handles first entry
totalMemory = digitMemory;
}
else
{
totalMemory = totalMemory + digitMemory;
}
lastKeyInput = LastKeyInput.Operator;
break;


}
else
{

totalMemory = digitMemory;

}
}

private void RenderCurrentValue(string currentRenderedValue, string character)
{
//display multiple digits
if (lastKeyInput == LastKeyInput.Digit || lastKeyInput == LastKeyInput.DecimalPoint || lastKeyInput == LastKeyInput.Sign)
{
digitMemory = decimal.Parse(currentRenderedValue + character);
}
else
{
digitMemory = decimal.Parse(character);
}
}

private void ResetMemory()
{
totalMemory = null;
digitMemory = null;
operationMemory = null;
lastKeyInput = LastKeyInput.Digit;
}
}

}

jd.mn98
سه شنبه 02 تیر 1394, 09:30 صبح
دوست عزیز تشکر.
به نظر که آسون تر از eclipse میاد ولی خب بعضی از کد هاش و الگوریتم هاش جای تامل داره.