sorooshpardaz

توسعه دهنده اندروید
  • تعداد ارسال ها

    14
  • تاریخ عضویت

  • آخرین بازدید

اعتبار در انجمن

0 Neutral

درباره sorooshpardaz

  • درجه
    Member
  1. [align=justify][rtl]ما در عصر دیجیتال زندگی می کنیم و در دنیایی هستیم که تمام اطلاعات در حال اشتراک گذاری می باشند زندگی ما به مانند کتابی باز در شبکه های اجتماعی قرار دارد، افراد از طریق مدیریت شبکه های اجتماعی لحظه ها و اطلاعات خود را باهم تقسیم می کنند.[/rtl][/align] [align=justify][rtl]امروزه زدگی بدون اپلیکیشن های موبایل تقریبا ناممکن است و هم افراد و هم کسب و کارها نیازمند اپلیکیشن می باشند از طرفی تمامی برنامه های موبایلی که اطلاعات خود را در آن ها اشتراک گذاری می کنیم برای داشتن عملکردی صحیح می بایست از اطلاعات محرمانه و شخصی ما استفاده کنند. افرادی که محتاط اند هنگام نصب یک نرم افزار وقتی با پیام هایی برای دسترسی به اطلاعات شخصی روبرو می شوند مسیر نصب و ثبت نام را ادامه نمی دهند و برنامه را از روی گوشی خود حذف می کنند[/rtl][/align] [align=justify]چرا این اتفاق می افتد؟[/align] [align=justify][rtl]زیرا که این برنامه ها هنگام نصب از کاربر سوالات متعددی برای دسترسی به اطلاعت شخصی می پرسند.[/rtl][/align] [align=justify][rtl]سوالاتی از قبیل:[/rtl][/align] [align=justify][rtl]- آیا اجازه می دهید برنامه به مکان شما دست یابد؟[/rtl][/align] [align=justify][rtl]- آیا اجازه می دهید برنامه به مخاطبان شما دسترسی یابد؟[/rtl][/align] [align=justify][rtl]- آیا اجازه دسترسی برنامه به دوربین خود را می دهید؟[/rtl][/align] [align=justify][rtl]این سوالات در واقع باعث می شود کاربر بتواند از تمام ویژگی و امکانات برنامه استفاده کند اما بدلیل اینکه افراد از اهداف برنامه مطلع نیستند یک تصور منفی در ذهن شان ایجاد می شود و باعث می شود برنامه را حذف کنند.[/rtl][/align] [align=justify][rtl]به منظور داشتن تعامل سالمی با کاربر باید قبل از دریافت مجوز استفاده از اطلاعات، برنامه با کاربر تعامل خوبی داشته باشد تا کاربر به برنامه اطمینان پیدا کند و مراحل ثبت نام یا نصب را ادامه دهد. در واقع برنامه باید مانع ثبت نام کردن کاربر شود و قبل از ثبت نام به او بگوید که از اطلاعات شخصی اش استفاده می شود تا اعتماد کاربر را جلب کند.[/rtl][/align] [align=justify][rtl]در این پست قصد داریم 5 روش از روش های مناسب جلب اعتماد کاربر و ایجاد تعامل بهتر با کاربر از طریق اپلیکیشن را بیان کنیم.با سروش پرداز همراه باشید.[/rtl][/align] [align=justify]1.راه استراتژیک[/align] [align=justify][rtl]د این روش ابتدا با درج پیغامی، برنامه به کاربر اطلاع می دهد که میخواهد از اطلاعات محرمانه و شخصی اش استفاده کند و تمام این موارد را برای کاربر ذکر می کند که برنامه از چه مواردی استفاده میکند.[/rtl][/align] [align=justify][rtl][/rtl][/align] [align=justify]2.زمان صحیح[/align] [align=justify][rtl]یکی از موارد کسب مجوز می تواند زمانی باشد که برنامه نیاز داشته باشد تا از اطلاعات محرمانه استفاده کند در این زمان می توان با کسب اخذ مجوز از کاربر برنامه ادامه دهد یا متوقف شود.[/rtl][/align] [align=justify][rtl] [/rtl][/align] [align=justify]3.دسترسی های ضروری[/align] [align=justify][rtl]برخی دسترسی ها برای ادامه فعالیت برنامه ضروری هستند، برای اینکار می توان فقط امکان دسترسی برنامه به اطلاعات مورد نظر را از کاربر بخواهد و نه اطلاعات بیشتر[/rtl][/align] [align=justify][rtl][/rtl][/align] [align=justify][rtl]اگر برنامه ای برای اجرا به اطلاعات بیشتری احتیاج دارد می تواند این اطلاعات را در مراحل مختلف و هرجا که لازم شد از کاربر دریافت کند.[/rtl][/align] [align=justify][rtl]امکان اینکه کاربران در طول برنامه و زمانیکه به یک مشخصه از برنامه احتیاج دارند درخواست دسترسی برنامه را بپذیرند بیشتر از این است که در ابتدای نصب برنامه، درخواست تمام دسترسی ها را داشته باشد. مشابه آنچه در تصویر زیر می بینید.[/rtl][/align] [align=justify][rtl][/rtl][/align] [align=justify]4.درج توضیحات[/align] [align=justify][rtl]یکی دیگر از روش های تعامل موثر با کاربر و کسب مجوز از کاربر از طریق درج توضیحات می باشد. می توان در ابتدای برنامه توضیحات کوتاهی در مورد نحه عملکرد برنامه و دلایل استفاده از اطلاعات شخصی را توضیح داد کاربر با دیدن این توضیحات اعتماد بیشتری به برنامه پیدا می کند و پس از درج این توضیحات می توان پیام کسب مجوز را به کاربر نشان داد.[/rtl][/align] [align=justify][rtl][/rtl][/align] [align=justify]5.درج توضیحات تصویری[/align] [align=justify][rtl]می توانید قبل از اخذ اجازه تصویری از نحوه کارکرد برناه درصورت اخذ مجوز و یا اخذ نکرن آن نشان دهید تا کاربر از نحوه و جریان کاری برنامه بصورت مصور آگاهی یابد.[/rtl][/align] [align=justify][rtl][/rtl][/align] [align=justify][rtl] [/rtl][/align] [align=justify][rtl] [/rtl][/align] [align=justify][rtl]در نهایت اینکه؛ تمامی برنامه های موبایل منحصر بفرد هستند و هرکدام کارکرد ویژه خود را دارند که برای کار به نحو صحیح، نیاز به استفاده از برخی اطلاعات شخصی و محرمانه افراد هستند اما نکته مهم در این میان طریق صحیح تعامل با کاربر و دریافت مجوز از او برای اجرای صحیح برنامه می باشد. شما می بایست در اپلیکیشن خود مطمئن شوید که روش صحیحی را برای کسب اعتماد کاربر انتخاب کرده اید و مطمئن شوید که کاربر برنامه را نیمه کاره رها نخواهد کرد.[/rtl][/align] [align=justify][rtl]منبع:سروش پرداز | برنامه نویس اندروید[/rtl][/align]
  2. در مقاله قبل در مورد پایگاه داده برنامه های اندروید صحبت کردیم و گفتیم پایگاه داده مورد استفاده برنامه های اندرویدی Sqlite می باشد، مولفه های مختلف Sqlite را معرفی کردیم در این مقاله یک نمونه مثال از این پایگاه داده را به همراه کدهای آن توضیح می دهیم. مثال استفاده شده ساخت یک پایگاه داده برای ذخیره مخاطبین تلفن همراه است با استفاده از این پایگاه داده می توان اطلاعات تماس تلفن همراه را درج، حذف، ویرایش کرد. برای تست این مثال می بایست آن را روی دستگاه واقعی دوربین دار تست کنید. با استفاده از اندروید استودیو یک برنامه کاربردی تحت عنوان com.example.sairamkrishna.myapplication بسازیم. برای ساخت این برنامه و پایگاه داده به ترتیب مراحل زیر را انجام می دهیم: 1.برای ساخت این پروژه مطمئن شوید که اندروید SDK از آخرین نسخه پشتیبانی کند تا با API های نسخه بالا همخوانی داشته باشند. 2.فایل SRC/MainActivity.java را می گذاریم تا توسط آن همه مولفه های XML و اخرین تماس ها را دریافت کند. Src/DBHelper.java.3 را می سازیم، که عملکرد دیتابیس را مدیریت می کند. 4.یک مولفه جدید با عنوان DisplayContact.java ایجاد می کنیم تا تماس های روی صفحه را نمایش دهد. 5.تغییر res/layout/activity_main و res/layout/activity_display_contact.xml که برای اضافه شدن مولفه های xml است. 6.تغییر فایل res/values/string.xml برای افزودن اجزای رشته ای ضروری است. 7.قرار دادن فایل res/menu/display_contact.xml برای ایجاد منوهای ضروری 8.ایجاد منو res/menu/mainmenu.xml برای قرار دادن امکان درج مخاطب 9.اجرای نرم افزار بر روی یک دستگاه اندرویدی و نصب برنامه روی آن در ادامه کدهای مربوط به مرحل بالا را قرار می دهیم. با نوشتن این کدها مرحله به مرحله دیتا بیس ما ایجاد می شود. محتوای MainActivity.java. را با استفاده از کدهای زیر ویرایش می کنیم. package com.example.sairamkrishna.myapplication; import android.content.Context; import android.content.Intent; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; import java.util.ArrayList; import java.util.List; public class MainActivity extends ActionBarActivity { public final static String EXTRA_MESSAGE = "MESSAGE"; private ListView obj; DBHelper mydb; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mydb = new DBHelper(this); ArrayList array_list = mydb.getAllCotacts(); ArrayAdapter arrayAdapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1, array_list); obj = (ListView)findViewById(R.id.listView1); obj.setAdapter(arrayAdapter); obj.setOnItemClickListener(new OnItemClickListener(){ @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) { // TODO Auto-generated method stub int id_To_Search = arg2 + 1; Bundle dataBundle = new Bundle(); dataBundle.putInt("id", id_To_Search); Intent intent = new Intent(getApplicationContext(),DisplayContact.class); intent.putExtras(dataBundle); startActivity(intent); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item){ super.onOptionsItemSelected(item); switch(item.getItemId()) { case R.id.item1:Bundle dataBundle = new Bundle(); dataBundle.putInt("id", 0); Intent intent = new Intent(getApplicationContext(),DisplayContact.class); intent.putExtras(dataBundle); startActivity(intent); return true; default: return super.onOptionsItemSelected(item); } } public boolean onKeyDown(int keycode, KeyEvent event) { if (keycode == KeyEvent.KEYCODE_BACK) { moveTaskToBack(true); } return super.onKeyDown(keycode, event); } } در زیر محتوای فایل DisplayContact.java برای تطبیق با برنامه اصلاح شده است: package com.example.addressbook; import android.os.Bundle; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.database.Cursor; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; public class DisplayContact extends Activity { int from_Where_I_Am_Coming = 0; private DBHelper mydb ; TextView name ; TextView phone; TextView email; TextView street; TextView place; int id_To_Update = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_display_contact); name = (TextView) findViewById(R.id.editTextName); phone = (TextView) findViewById(R.id.editTextPhone); email = (TextView) findViewById(R.id.editTextStreet); street = (TextView) findViewById(R.id.editTextEmail); place = (TextView) findViewById(R.id.editTextCity); mydb = new DBHelper(this); Bundle extras = getIntent().getExtras(); if(extras !=null) { int Value = extras.getInt("id"); if(Value>0){ //means this is the view part not the add contact part. Cursor rs = mydb.getData(Value); id_To_Update = Value; rs.moveToFirst(); String nam = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_NAME)); String phon = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_PHONE)); String emai = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_EMAIL)); String stree = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_STREET)); String plac = rs.getString(rs.getColumnIndex(DBHelper.CONTACTS_COLUMN_CITY)); if (!rs.isClosed()) { rs.close(); } Button b = (Button)findViewById(R.id.button1); b.setVisibility(View.INVISIBLE); name.setText((CharSequence)nam); name.setFocusable(false); name.setClickable(false); phone.setText((CharSequence)phon); phone.setFocusable(false); phone.setClickable(false); email.setText((CharSequence)emai); email.setFocusable(false); email.setClickable(false); street.setText((CharSequence)stree); street.setFocusable(false); street.setClickable(false); place.setText((CharSequence)plac); place.setFocusable(false); place.setClickable(false); } } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. Bundle extras = getIntent().getExtras(); if(extras !=null) { int Value = extras.getInt("id"); if(Value>0){ getMenuInflater().inflate(R.menu.display_contact, menu); } else{ getMenuInflater().inflate(R.menu.main, menu); } } return true; } public boolean onOptionsItemSelected(MenuItem item) { super.onOptionsItemSelected(item); switch(item.getItemId()) { case R.id.Edit_Contact: Button b = (Button)findViewById(R.id.button1); b.setVisibility(View.VISIBLE); name.setEnabled(true); name.setFocusableInTouchMode(true); name.setClickable(true); phone.setEnabled(true); phone.setFocusableInTouchMode(true); phone.setClickable(true); email.setEnabled(true); email.setFocusableInTouchMode(true); email.setClickable(true); street.setEnabled(true); street.setFocusableInTouchMode(true); street.setClickable(true); place.setEnabled(true); place.setFocusableInTouchMode(true); place.setClickable(true); return true; case R.id.Delete_Contact: AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage(R.string.deleteContact) .setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { mydb.deleteContact(id_To_Update); Toast.makeText(getApplicationContext(), "Deleted Successfully", Toast.LENGTH_SHORT).show(); Intent intent = new Intent(getApplicationContext(),MainActivity.class); startActivity(intent); } }) .setNegativeButton(R.string.no, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { // User cancelled the dialog } }); AlertDialog d = builder.create(); d.setTitle("Are you sure"); d.show(); return true; default: return super.onOptionsItemSelected(item); } } public void run(View view) { Bundle extras = getIntent().getExtras(); if(extras !=null) { int Value = extras.getInt("id"); if(Value>0){ if(mydb.updateContact(id_To_Update,name.getText().toString(), phone.getText().toString(), email.getText().toString(), street.getText().toString(), place.getText().toString())){ Toast.makeText(getApplicationContext(), "Updated", Toast.LENGTH_SHORT).show(); Intent intent = new Intent(getApplicationContext(),MainActivity.class); startActivity(intent); } else{ Toast.makeText(getApplicationContext(), "not Updated", Toast.LENGTH_SHORT).show(); } } else{ if(mydb.insertContact(name.getText().toString(), phone.getText().toString(), email.getText().toString(), street.getText().toString(), place.getText().toString())){ Toast.makeText(getApplicationContext(), "done", Toast.LENGTH_SHORT).show(); } else{ Toast.makeText(getApplicationContext(), "not done", Toast.LENGTH_SHORT).show(); } Intent intent = new Intent(getApplicationContext(),MainActivity.class); startActivity(intent); } } } } در مقاله بعدی می توانید ادامه آموزش را دنبال کنید.
  3. SQLite یک پایگاه داده منبع باز است که برای ذخیره فایل های متنی در برنامه نویسی موبایل مورد استفاده قرار می گیرد.این پایگاه داده برای ایجاد پایگاه داده های برنامه های موبایل اندروید مورد استفاده قرار می گیرد.SQLite از تمام ویژگی های پایگاه داده های دیگر پشتیبانی می کندو برای ایجاد ارتباط میان هر پایگاه داده ای دیگری مثل JDBC,ODBC نیاز به هیچ جز اضافه ای ندارد. پایگاه داده - بسته اصلی این بسته اصلی android.database.sqllite می باشد که شامل کلاس های مختلف برای مدیرتی پایگاه داده است. ساخت پایگاه داده برای ساخت پایگاه داده های برنامه های اندروید فقط نیاز به فراخوانی نام پایگاه داده با استفاده از متد OpenOrCreateDatabase و یک پارامتر است.همانطور که نمونه آن را در کد زیر می بینید SQLiteDatabase mydatabase = openOrCreateDatabase("your database name",MODE_PRIVATE,null); توابع و متد های دیگری در پایگاه داده SQLLite وجود دارد که دستورهای دیگری را اجرا می کنند: openDatabase(String path, SQLiteDatabase.CursorFactory factory, int flags, DatabaseErrorHandler errorHandler) این متد پایگاه داده های موجود دیگر را با مقدار داده ای flag باز می کند.حالت flag شامل دو حالت OPEN_READWRITE و OPEN_READONLY می باشد. openDatabase(String path, SQLiteDatabase.CursorFactory factory, int flags) این دستور، مانند دستور بالا پایگاه داده را باز می کند با این تفاوت که هیچ کنترلی روی بررسی اشتباهات و مشکلات موجود در پایگاه داده ندارد. openOrCreateDatabase(String path, SQLiteDatabase.CursorFactory factory) این دستور نه تنها پایگاه داد را باز می کند بله در صورتیکه پایگاه داده اگر موجود نباشد آن را می سازد.این دستور مشابه دستور بالا عمل میکند. openOrCreateDatabase(File file, SQLiteDatabase.CursorFactory factory) این دستور نیز مشابه دستور بالا است با این تفاوت که بجای رشته، فایل object را بعنوان پارامتر ورودی دریافت می کند. ()file.getPath درج اطلاعات در دیتابیس با استفاده از دستور execSQL که در پایگاه داده SQLite وجود دارد می توان دستور insert را نوشت. mydatabase.execSQL("CREATE TABLE IF NOT EXISTS TutorialsPoint(Username VARCHAR,Password VARCHAR);"); mydatabase.execSQL("INSERT INTO TutorialsPoint VALUES('admin','admin');"); دستور بالا اطلاعات را درون جدول درج میکند، دستور دیگری که مشابه دستور بالا عمل می کند دستور زیر است execSQL(String sql, Object[] bindArgs) این دستور علاوه بر درج اطلاعات، اطلاعت قبلی موجو در دیتابیس را ویرایش یا جایگزین می کند. دریافت اطلاعات جداول برای دریافت اطلاعات یک جدول از یک شی کلاس Cursor استفاده می کنیم.برای اینکار از متد rawQuery استفاده می کنیم Cursor resultSet = mydatbase.rawQuery("Select * from TutorialsPoint",null); resultSet.moveToFirst(); String username = resultSet.getString(1); String password = resultSet.getString(2); کد بالا با استفاده از دستور MoveToFirst تابع را به ابتدای سطر جدول می برد و از انجا شروع به خواندن اطلاعات و ذخیره آنها در دو متغیر username و password ذخیره می کند. دستورات دیگری که ایمشابه کد بالا عمل می کنند عبارتند از: getColumnCount(): مجموع تعداد ستون های جدول را بازمیگرداند. getColumnIndex(String columnName): یک عدد شاخص از یک ستون با نام آن ستون را باز می گرداند. getColumnName(int columnIndex): یک ستون با index آن را باز می گرداند. getColumnNames(): آرایه ای از نام های تمام ستون های جدول را باز میگرداند. getCount(): تعداد کل ردیف های را که اشاره گر در آنها قرار دارد باز می گرداند. getPosition(): موقعیت اشاره گر را در جدول باز می گرداند. isClosed(): اگر اشاره گر به انتها رسیده باشد مقدار true و اگر غیر این باشد مقدار false را باز می گرداند. مدیریت عملیات پایگاه داده برای مدیریت تمام عملیات درون پایگاه داده یک کلاس کمکی به نام SQLLiteOpenerHelper وجود دارد که تمام عملیات درون ایگاه داده را بطور خودکار ایجاد و به روزرسانی می کند.کد آن در زیر آمده است: public class DBHelper extends SQLiteOpenHelper { public DBHelper(){ super(context,DATABASE_NAME,null,1); } public void onCreate(SQLiteDatabase db) {} public void onUpgrade(SQLiteDatabase database, int oldVersion, int newVersion) {} } در مقاله بعدی یک نمونه مثال که شامل ایجاد جدول،درج و اصلاح اطلاعات و خواندن آنها از درون جدول است، را باهم مرور میکنیم.با سروش پرداز همراه باشید.
  4. در دو قسمت قبل آموزش ساخت بازی فلاپی برد، مراحل مختلف ساخت بازی را توضیح دادیم در قسمت اول نحوه ایجاد محیط فیزیکی، پرنده را آموختیم و در قسمت دوم نحوه حرکت دادن به پرنده و کدهای مربوط به حرکت پرنده با زدن ضربه را نوشتیم در این قسمت که قسمت سوم و آخر این مجموعه است موانعی را در بازی ایجاد می کنیم. آخرین عنصری که در بازی قرار می گیرد لوله می باشد که بصورت موانعی در صحنه بازی قرار دارند به نحوی که پرنده نباید با آنها برخورد کند و در صورت برخورد پرنده بازی ریستارت می شود. برای انجام اینکار دو تصویر گرافیکی pipe1.png و pipe2.png را به پروژه اضافه می کنیم. از دیدگاه گرافیکی، لوله ها در فضای بازی عناصری خاص هستند چراکه اجزایی مثل زمین، آسمان و پرنده ها در بازی ثابت و بدون تغییر هستند اما لوله ها متغیر هستند، بنابراین با تعریف دو عنصر گرافیکی pipe1 و pipe2 یک لوله از بالا صفحه نمایش را گسترش می دهد و لوله دیگر از پایین صفحه نمایش. لوله ها با دو متد با نام SKSprintNode S تعریف شده اند و این دو متد را در متد خالی SKNode (بعنوان والد) قرار می دهیم. تعیین فاصله بین لوله ها می تواند دلخواه باشد که ما در اینجا این فاصله را 100 انتخاب کردیم @implementation MyScene static NSInteger const kVerticalPipeGap = 100; -(id)initWithSize:(CGSize)size { لوله ها در خارج از صفحه نمایش قرار می گیرند. یک جفت از لوله ها در قسمت بیرونی سمت راست صفحه نمایش قرار میگیرند.دستور zPosition به نحوی برای لوله ها انتخاب شده است که همیشه در پشت زمین بازی قرار گیرند. // Create pipes SKTexture* _pipeTexture1 = [sKTexture textureWithImageNamed:@"Pipe1"]; _pipeTexture1.filteringMode = SKTextureFilteringNearest; SKTexture* _pipeTexture2 = [sKTexture textureWithImageNamed:@"Pipe2"]; _pipeTexture2.filteringMode = SKTextureFilteringNearest; SKNode* pipePair = [sKNode node]; pipePair.position = CGPointMake( self.frame.size.width + _pipeTexture1.size.width * 2, 0 ); pipePair.zPosition = -10; CGFloat y = arc4random() % (NSInteger)( self.frame.size.height / 3 ); SKSpriteNode* pipe1 = [sKSpriteNode spriteNodeWithTexture:_pipeTexture1]; [pipe1 setScale:2]; pipe1.position = CGPointMake( 0, y ); pipe1.physicsBody = [sKPhysicsBody bodyWithRectangleOfSize:pipe1.size]; pipe1.physicsBody.dynamic = NO; [pipePair addChild:pipe1]; SKSpriteNode* pipe2 = [sKSpriteNode spriteNodeWithTexture:_pipeTexture2]; [pipe2 setScale:2]; pipe2.position = CGPointMake( 0, y + pipe1.size.height + kVerticalPipeGap ); pipe2.physicsBody = [sKPhysicsBody bodyWithRectangleOfSize:pipe2.size]; pipe2.physicsBody.dynamic = NO; [pipePair addChild:pipe2]; SKAction* movePipes = [sKAction repeatActionForever:[sKAction moveByX:-1 y:0 duration:0.02]]; [pipePair runAction:movePipes]; [self addChild:pipePair]; پرنده با برخورد با لوله ها، با حرکت صفحه نمایش از صفحه خارج می شود. میخواهیم این لوله ها بصورت منظم در صفحه نمایش داده شوند و دیگر حرکت نکنند برای انجام اینکار مجددا از SKAction استفاده می کنیم.اما به شیوه ای متفاوت : برای تولید مجدد و منظم لوله ها در صفحه بازی باید حالت و حرکت لوله ها را ذخیره کنیم: @interface MyScene () { SKSpriteNode* _bird; SKColor* _skyColor; SKTexture* _pipeTexture1; SKTexture* _pipeTexture2; SKAction* _moveAndRemovePipes; } @end عملکرد _moveAndRemovePipes درست بعد از کد قبلی اضافه می شود CGFloat distanceToMove = self.frame.size.width + 2 * _pipeTexture1.size.width; SKAction* movePipes = [sKAction moveByX:-distanceToMove y:0 duration:0.01 * distanceToMove]; SKAction* removePipes = [sKAction removeFromParent]; _movePipesAndRemove = [sKAction sequence:@[movePipes, removePipes]]; متد spawn برای ایجاد لوله های جدید است: -(void)spawnPipes { SKNode* pipePair = [sKNode node]; pipePair.position = CGPointMake( self.frame.size.width + _pipeTexture1.size.width, 0 ); pipePair.zPosition = -10; CGFloat y = arc4random() % (NSInteger)( self.frame.size.height / 3 ); SKSpriteNode* pipe1 = [sKSpriteNode spriteNodeWithTexture:_pipeTexture1]; [pipe1 setScale:2]; pipe1.position = CGPointMake( 0, y ); pipe1.physicsBody = [sKPhysicsBody bodyWithRectangleOfSize:pipe1.size]; pipe1.physicsBody.dynamic = NO; [pipePair addChild:pipe1]; SKSpriteNode* pipe2 = [sKSpriteNode spriteNodeWithTexture:_pipeTexture2]; [pipe2 setScale:2]; pipe2.position = CGPointMake( 0, y + pipe1.size.height + kVerticalPipeGap ); pipe2.physicsBody = [sKPhysicsBody bodyWithRectangleOfSize:pipe2.size]; pipe2.physicsBody.dynamic = NO; [pipePair addChild:pipe2]; [pipePair runAction:_movePipesAndRemove]; [self addChild:pipePair]; } برا ی اطمینان از اینکه spawnPipesکار خود را بدرستی انجام میدهد و بصورت دائم لوله ها را تولید می کند با استفاده از متد SKActionکه به SKScene اینکار را انجام می دهیم: SKAction* spawn = [sKAction performSelector:@selector(spawnPipes) onTarget:self]; SKAction* delay = [sKAction waitForDuration:2.0]; SKAction* spawnThenDelay = [sKAction sequence:@[spawn, delay]]; SKAction* spawnThenDelayForever = [sKAction repeatActionForever:spawnThenDelay]; [self runAction:spawnThenDelayForever]; این متد spawnPipes نامیده می شود که عملکرد آن به اینصورت است که حین بازی دو ثانیه متوقف می شود و سپس دوباره شروع به کار میکند. همانطور که در تصویر زیر می بینید لوله ها بصورت مرتب و منظم در صحنه بازی قرار می گیرند. تشخیص برخورد و پاسخ حال ما نیاز داریم پس از برخورد پرنده با موانع، تغییراتی را در صحنه بازی مشاهده کنیم که برای انجام این کار از متد SKPhysicsContactDelegate استفاده می کنیم. علاوه براین نیاز داریم، چندین مجموعه را با مدل های مختلف برای نمایش واکنش صفحه نمایش، به کدها اضافه کنیم: @interface MyScene () { SKSpriteNode* _bird; SKColor* _skyColor; SKTexture* _pipeTexture1; SKTexture* _pipeTexture2; SKAction* _movePipesAndRemove; } @end @implementation MyScene static const uint32_t birdCategory = 1 << 0; static const uint32_t worldCategory = 1 << 1; static const uint32_t pipeCategory = 1 << 2; static NSInteger const kVerticalPipeGap = 100; -(id)initWithSize:(CGSize)size { if (self = [super initWithSize:size]) { /* Setup your scene here */ self.physicsWorld.gravity = CGVectorMake( 0.0, -5.0 ); self.physicsWorld.contactDelegate = self; با استفاده از category می توان دسته بندی های مختلفی را تعریف کرد و تعیین کرد در صورت برخورد این اجزا با یکدیگر چه اتفاقی بیفتد .مانند آنچه در کد بالا توضیح داده شده است. ما در اینجا برای سه عنصر لوله، جهان(که همان محیط بازی است) و پرنده، category تعریف کردیم دقت کنید که نیازی نیست برای همه عناصر کتگوری تعریف شود، فقط عناصری که برای واکنش نشان دادن حین برخورد دخالت دارند، مهم هستند. برای متوقف کردن حرکت پرنده پس از برخورد، مولفه speed را برای متد SKAction تعریف می کنیم به نحوی که وقتی سرعت برابر صفر شد SKAction متوقف شود. @interface MyScene () { SKSpriteNode* _bird; SKColor* _skyColor; SKTexture* _pipeTexture1; SKTexture* _pipeTexture2; SKAction* _movePipesAndRemove; SKNode* _moving; } @end تمام عناصر ایجاد شده از ابتدا کدنویسی به این گره پدر متصل می شوند. _skyColor = [sKColor colorWithRed:113.0/255.0 green:197.0/255.0 blue:207.0/255.0 alpha:1.0]; [self setBackgroundColor:_skyColor]; _moving = [sKNode node]; [self addChild:_moving]; SKTexture* birdTexture1 = [sKTexture textureWithImageNamed:@"Bird1"]; birdTexture1.filteringMode = SKTextureFilteringNearest; ... // Create ground ... for( int i = 0; i < 2 + self.frame.size.width / ( groundTexture.size.width * 2 ); ++i ) { ... [_moving addChild:sprite]; } // Create skyline ... for( int i = 0; i < 2 + self.frame.size.width / ( skylineTexture.size.width * 2 ); ++i ) { ... [_moving addChild:sprite]; -(void)spawnPipes { ... [pipePair runAction:_movePipesAndRemove]; [_moving addChild:pipePair]; } حال تمامی عناصر به جز پرنده را به گره پدر متصل کردیم و بدین ترتیب هر اتفاقی برای گره پدر بیفتد بر روی فرزندان نیز اعمال می شوداز طرفی می خواهیم حرکات پرنده فقط یکبار در بازی متوقف شود که بصورت کد زیر انجام می شود. (void)didBeginContact:(SKPhysicsContact *)contact { if( _moving.speed > 0 ) { _moving.speed = 0; // Flash background if contact is detected ... } حتما متوجه شده اید که پرنده را به گره ی _moving متصل نکردیم اینکار برای این است که می خواهیم پرنده همچنان حرکت داشته باشد و تا زمانیکه مقدار _moving.speed>0 است کنترل تحت نظر بازیکن باشد و با ضربه به صفحه نمایش بتواند حرکات پرنده را کنترل کند. منبع:بلاگ سروش پرداز|برنامه نویسی ios
  5. اگر مایل بودید میتونید از تیم برنامه نویسی اندروید و ios سروش پرداز کمک بگیرید. https://sorooshpardaz.com/mobile-app-android-ios-programming 021-86084238
  6. در این قسمت از آموزش برنامه نویسی اندروید میخواهیم برنامه موبایل خود را با یک واسط گرافیکی ساده ایجاد نماییم. واسط گرافیکی یا همان UI یکی از مهمترین اجزای یک نرم افزار موبایل و یا بازی موبایل می باشد. قسمت های گذشته را میتوانید از بلاگ آموزش برنامه نویسی موبایل (اندروید) قسمت دوم مطالعه کنید می خواهیم اپلیکیشنی بسازیم که با زدن یک دکمه متنی را در صفحه نمایش دهد. بخش اول که شامل ساخت UI میباشد را در این قسمت توضیح می دهیم. برای این منظور مراحل زیر را طی می کنیم: - ابتدا نرم افزار Android Studio را اجرا کرده در منوی مربوطه گزینه Start a new Android Studio Project را انتخاب می کنیم. در پنجره بعدی نوع اکتیویتی اصلی برنامه را Blank Activity انتخاب می کنیم. - پس از باز شدن پروژه در قسمت بالا سمت چپ محیط نرم افزار Android Studio صفحه روی گزینه app کلیک کرده در لیست باز شده مسیر زیر را انتخاب می کنیم. app -> res -> layout -> content_main.xml - در ابتدا روی متن Hello World برنامه پیشین کلیک کرده و delete را بزنید. - در فهرست قسمت Pallete لیست ابزارهای مختلف UI محیط برنامه نویسی اندروید موجود می باشد و می توان به راحتی با Drag & Drop در اکتیویتی اصلی برنامه از آنها برای شکل دهی به اپلیکیشن خود بهره بگیریم. - در ابتدا از منوی Pallete یک متن بزرگ (Large Text) را انتخاب میکنیم. با کلیک در صفحه نمایش متن مورد نظر در محل مورد نظر قرار می گیرد. - در مرحله بعدی گزینه Button را از لیست انتخاب کرده و روی صفحه نمایش قرار می دهیم. با دو بار کلیک روی Text و Button متن پیش فرض آن ها را می توان تغییر داد. در قسمت بعدی برنامه نویسی نرم افزار موبایل خود را توضیح خواهیم داد تا با زدن کلید فانکشنی را صدا زند مثلا متن موجود را تغییر دهد. این برنامه نویسی شامل کد نویسی به زبان Java می باشد.
  7. در این قسمت از بلاگ آموزش برنامه نویسی اندروید و برنامه نویسی موبایل میخواهیم به سراغ معرفی عناصر برنامه نویسی اندروید و کامل کردن کدهای برنامه ی جلسه قبل میپردازیم. امید است پس از پایان آموزش بتوانید برنامه موبایل (اپلیکیشن اندروید) را ایجاد کنید. باما همراه باشید... در پوشه ی res – layout اکنیویتی که با پسوند .xml ساخته شده را باز میکنیم.در این کلاس عناصر مختلفی را میبینیم که در پالت سمت چپ برنامه موجود هستند. و در قسمت اصلی اکتیویتی نمای گرافیکی ) UI برنامه را مشاهده میکنیم. [/align کار اصلی ما با قسمت Widgets و قسمت Text Fields است. در قسمت Widgets عناصر مختلف از جمله: Textview – button – imageview – checkbox – radioButton و... را مشاهده میکنیم.همچنین در قسمت text fields : و ... را میبینیم. Plain Text – Password – email – phone هر کدام از ابزارهای این قسمت را میتوانیم از طریق drag کردن به محیط برنامه مان بکشانیم و در محل مورد نظر قرار دهیم. بطور مثال برای استفاده از یک باکس برای وارد کردن ایمیل از عنصر TextView استفاده میکنیم. برای وارد کردن پسوورد از عنصر Password در قسمت Text Fields استفاده میکنیم.با استفاده از این بخش میتوانیم واسط گرافیکی برنامه مان را طراحی کرده تا به طور خودکار کدهای مربوط به هر بخش در فایل .java ساخته شوند. با وارد کردن عنصر Button یک دکمه وارد صفحه میشود که میتوانیم متن درونش را تغییر دهیم و یا سایزش را به طور دلخواه تغییر دهیم. در این بخش دو عنصر text یکی از نوع ایمیل و دیگری از نوع پسوورد تعریف شده اند و یک button به عنوان دکمه ی ورود زیر این دو عنصر وارد شده است. در قسمت properties هر عنصر در سمت چپ می توان نام ، id ، سایز و رنگ آن و... را تغییر داد. در قسمت تنظیمات بالای برنامه امکاناتی خوب نظیر مشاهده ی برنامه در انواع دیوایس ها و موبایل ها وجود دارد که به کمک آن میتوان برنامه ی خود را در تمام موبایل ها مشاهده کرد. در برنامه ی فوق فرم ورودی ساخته شد که کاربر پس از وارد کردن اطلاعات خود از جمله ایمیل و پسوورد میتواند با کلیک کردن بر روی دکمه ی Sign In به پنل کاربری خود وارد شود. آیا این مقاله آموزش برنامه نویسی اندروید برای شما مفید بوده است؟ منبع:سروش پرداز| برنامه نویسی اندروید
  8. کتابخانه تست پشتیبان اندروید، یک بستر گسترده را برای تست برنامه های اندروید فراهم می کند. این کتابخانه با استفاده از مجموعه ای از رابط های برنامه کاربردی به شما امکان ساختن سریع کدها و تست برنامه را می دهد این کتابخانه شامل تست رابط کاربری و JUnit4 نیز می باشد. می توانید این کتابخانه را از طریق API از داخل اندروید استودیو IDE یا خط فرمان فراخوانی کنید. همچنین کتابخانه پشتیبان تست اندروید از طریق Android SDK قابل دسترسی است. در این مقاله آموزش برنامه نویسی موبایل و مقاله بعدی اطلاعاتی در مورد کتابخانه پشتیبان تست در اندروید، نحوه استفاده از آنها و محیط تست و اطلاعاتی که این کتابخانه به ما می دهد، توضیح می دهیم. کتابخانه Testing Support اندروید شامل ابزار زیر می باشد: AndroidJUnitRunner: سازگار با JUnit4 برای اجرای اندروید Espresso: محیط تست UI ، محیطی مناسب برای تست رابط کاربری در یک برنامه UI Automator: محیطی برای تست UI، مناسب برای تست روابط متقابل برنامه های کاربردی و نصب شده در سراسر سیستم AndroidJUnitRunner کلاسی است که JUnit را تست می کند. این کلاس JUnit 3 یا 4 را در دستگاههای اندرویدی تست می کند و شامل محیط های تست UI و Espresso نیز می باشد. این کلاس همچنین امکازه بارگذاری پکیج ها و برنامه ها را روی وسیله، حین تست می دهد. کلاس AndroidJUnitRunner جایگزین کلاس InstrumentationTestRunner که فقط از JUnit 3 پشتیبانی می کرد، می باشد. JUnit support کتابخانه Test سازگار با JUnit 3 و JUnit 4(تا JUnit 4.10) می باشد.اما نباید همزمان هم JUnit 3 و هم JUnit 4 را باهم در یک پکیج تست کنید چرا که نتایج نامشخص می دهد. اگر در حال ایجاد ابزاری برای تست JUnit 4 می باشید باید کلاس تست خود را با دستور @RunWith(AndroidJUnit4.class) بنویسید. قطعه کد زیر نشان می دهد که چگونه یک ابزار اتدازه گیری از JUnit 4 عمگرهای اضافه شده به کلاس CalculatorActivity را بررسی می کند. import android.support.test.runner.AndroidJUnit4; import android.support.test.runner.AndroidJUnitRunner; import android.test.ActivityInstrumentationTestCase2; @RunWith(AndroidJUnit4.class) public class CalculatorInstrumentationTest extends ActivityInstrumentationTestCase2<CalculatorActivity> { @Before public void setUp() throws Exception { super.setUp(); // Injecting the Instrumentation instance is required // for your test to run with AndroidJUnitRunner. injectInstrumentation(InstrumentationRegistry.getInstrumentation()); mActivity = getActivity(); } @Test public void typeOperandsAndPerformAddOperation() { // Call the CalculatorActivity add() method and pass in some operand values, then // check that the expected value is returned. } @After public void tearDown() throws Exception { super.tearDown(); می توانید از کلاس JUnit support برای دسترسی به اطلاعات تست خود استفاده کنید. این کلاس شامل ابزارهای شی گرایی برای تست متن برنامه و آرگومان های خط فرمان برنامه می باشد، این ابزار زمانی مفید است که تست با استفاده از UI Automator نوشته شده یا وابسته به متن و ابزار باشد. فیلتر کردن تست در تست های JUnit 4.x می توانید با استفاده از یک سری پیکربندی تست خود را محدود کنید تا ایجاد کدهای شرطی را در متن کاهش دهید. @RequiresDevice: مشخص می کند که تست فقط در محیط فیزیکی اجرا شود :@SdkSupress به برنامه می گوید که تست بر روی اندروید API در سطحی پایین تر از سطح معمول انجام شود SmallTest , @MediumTest , و @LargeTest برای تنظیم اینکه چه مدت زمان و چندبار، برنامه تست شود. Test sharding یک کلاس کد را به چندین قطعه کوچکتر تقسیم می کند و شما می توانید این قطعات را به تنهایی یا با یکدیگر تست کنید هر کد تقسیم شده با یک شماره، شناسایی می شود زمانی که تست اجرا می شود با نوشتن عبارت –e و سپس شماره کد، می توانید آن کد را مشخص کنید. در مثال زیر کدی به 10 قطعه کد تقسیم شده و تنها قسمت دوم این تست می شود. adb shell am instrument -w -e numShards 10 -e shardIndex 2 در مقاله بعدی کلاس های دیگر این کتابخانه را معرفی می کنیم، با همراه باشید.
  9. آموزش برنامه نویسی موبایل (اندروید) قسمت پنجم در این قسمت از بلاگ آموزش برنامه نویسی اندروید و برنامه نویسی موبایل میخواهیم به سراغ معرفی عناصر برنامه نویسی اندروید و کامل کردن کدهای برنامه ی جلسه قبل میپردازیم. امید است پس از پایان آموزش بتوانید برنامه موبایل (اپلیکیشن اندروید) را ایجاد کنید. باما همراه باشید... در پوشه ی res – layout اکنیویتی که با پسوند .xml ساخته شده را باز میکنیم.در این کلاس عناصر مختلفی را میبینیم که در پالت سمت چپ برنامه موجود هستند. و در قسمت اصلی اکتیویتی نمای گرافیکی ) UI برنامه را مشاهده میکنیم. ([/align] کار اصلی ما با قسمت Widgets و قسمت Text Fields است. در قسمت Widgets عناصر مختلف از جمله: Textview – button – imageview – checkbox – radioButton و... را مشاهده میکنیم.همچنین در قسمت text fields : و ... را میبینیم. Plain Text – Password – email – phone هر کدام از ابزارهای این قسمت را میتوانیم از طریق drag کردن به محیط برنامه مان بکشانیم و در محل مورد نظر قرار دهیم. بطور مثال برای استفاده از یک باکس برای وارد کردن ایمیل از عنصر TextView استفاده میکنیم. برای وارد کردن پسوورد از عنصر Password در قسمت Text Fields استفاده میکنیم.با استفاده از این بخش میتوانیم واسط گرافیکی برنامه مان را طراحی کرده تا به طور خودکار کدهای مربوط به هر بخش در فایل .java ساخته شوند. با وارد کردن عنصر Button یک دکمه وارد صفحه میشود که میتوانیم متن درونش را تغییر دهیم و یا سایزش را به طور دلخواه تغییر دهیم. در این بخش دو عنصر text یکی از نوع ایمیل و دیگری از نوع پسوورد تعریف شده اند و یک button به عنوان دکمه ی ورود زیر این دو عنصر وارد شده است. در قسمت properties هر عنصر در سمت چپ می توان نام ، id ، سایز و رنگ آن و... را تغییر داد. در قسمت تنظیمات بالای برنامه امکاناتی خوب نظیر مشاهده ی برنامه در انواع دیوایس ها و موبایل ها وجود دارد که به کمک آن میتوان برنامه ی خود را در تمام موبایل ها مشاهده کرد. در برنامه ی فوق فرم ورودی ساخته شد که کاربر پس از وارد کردن اطلاعات خود از جمله ایمیل و پسوورد میتواند با کلیک کردن بر روی دکمه ی Sign In به پنل کاربری خود وارد شود. آموزش برنامه نویسی اندروید -قسمت پنجم آیا در مورد این قسمت از آموزش سوال یا نظری دارید؟
  10. آموزش برنامه نویسی اندروید قسمت چهارم در این قسمت از بلاگ آموزش برنامه نویسی اندروید و برنامه نویسی موبایل قصد داریم تا وارد کدهای جاوا و توابع اندروید بشویم تا خط به خط شما با کدهای یک برنامه ساده آشنا بشوید. میخواهیم یک فرم ورود بسازیم که کاربر پس از وارد کردن اطلاعات کاربری استفاده از دکمه های ورود وارد پنل خود شود. در قسمت های قبلی آموزش برنامه نویسی اندروید برنامه موبایل خود را با یک واسط گرافیکی ساده ایجاد کردیم در ایت قسمت قصد داریم تا در ابتدا در اکتیویتی اصلی برنامه که با پسوند .java ساخته شده میرویم. در ابتدای صفحه کلاس های اندروید import شده. برای خروجی سالم از برنامه حتما باید این کلاس ها و توابع ایمپورت شوند. http://cdn.persiangig.com/preview/Vs2D2OaRQs/1.png[/img] *برنامه هایی مانند Android Studio در حین نوشتن متد ها به صورت پیش فرض ایمپورت کردن این کلاس ها را به برنامه نویس پیشنهاد میدهد. (ctrl+space)* خط package com.example.pourya.myapplication; که در ابتدای برنامه قرار دارد نام پکیج برنامه میباشد که در آن تغییری ایجاد نمیکنیم. در ادامه کلاس اصلی اکتیویتی که از کلاس های پدر ارث بری کرده نوشته شده است. تمام متدها در و حلقه ها در این کلاس نوشته میشوند.در ادامه متدی مینویسیم که یک رشته (string) دریافت میکند. برای اطلاعات کاربر مانند نام کاربری،پسورد،ایمیل و... با استفاده از کدهای زیر مقدار تعریف میکنیم: متد setContentView را override یا بازنویسی میکنیم و دکمه ای برای فرم میسازیم. (در اینجا از دکمه ی google+ استفاده شده.} ابتدا در فایل .xml دکمه ای وارد صفحه میکنیم و id آن را plus_sign_in_button انتخاب میکنیم. سپس به فایل .java باز میگردیم و یک شی با نام دلخواه از نوع SignIn میسازیم و با استفاده از متد findViewById آیدی دکمه ای که ساختیم را به آن میدهیم. در ادامه شرطی برای دکمه نوشته شده که به برنامه میگوید اگر سرویس گوگل پلی فعال بود تابعsetOnClickListener را برای نمایش دکمه ی ورود فراخوانی کن. و در غیر اینصورت Visibility دکمه را بر حالت GONE قرار بده. بعد از ساخت دکمه نوبت به ساخت فرم ورود میرسد.با استفاده از عناصر editText و textView برای نام کاربری و پسوورد باکس های مخصوص به خودشان را میسازیم. Id آن ها را با نام های دلخواه نام گذاری میکنیم. در فایل .xml هر عنصری را که وارد صفحه میکنیم کد مخصوص به آن عنصر در فایل .java به طور پیشفرض ساخته میشود. به طور مثال در کد زیر برای دکمه ی خروج ابتدا یک متغییر تغریف کردیم با نام mSignOutButtons و آن را با استفاده از متدfindViewById فراخوانی کردیم در فرم ساخته شده. Id را موقع ساخت دکمه در فایل .xml تخصیص داده ایم. سپس فایل .java این دکمه را در جایی که قرار داده شده نمایش میدهد. mSignOutButtons = findViewById(R.id.plus_sign_out_buttons); در جلسه بعدی این برنامه را تمام کرده و به سراغ معرفی عناصر اندروید در واسط گرافیکی آن میپردازیم. آیا این مطلب آموزشی برای شما مفید بوده است؟ مطلب ویرایش شد تبلیغات درون متن غیر مجاز میباشد
  11. آموزش برنامه نویسی اندروید قسمت سوم در این قسمت از آموزش برنامه نویسی اندروید میخواهیم برنامه موبایل خود را با یک واسط گرافیکی ساده ایجاد نماییم. واسط گرافیکی یا همان UI یکی از مهمترین اجزای یک نرم افزار موبایل و یا بازی موبایل می باشد. قسمت های گذشته را میتوانید از بلاگ آموزش برنامه نویسی موبایل (اندروید) قسمت دوم مطالعه کنید می خواهیم اپلیکیشنی بسازیم که با زدن یک دکمه متنی را در صفحه نمایش دهد. بخش اول که شامل ساخت UI میباشد را در این قسمت توضیح می دهیم. برای این منظور مراحل زیر را طی می کنیم: - ابتدا نرم افزار Android Studio را اجرا کرده در منوی مربوطه گزینه Start a new Android Studio Project را انتخاب می کنیم. در پنجره بعدی نوع اکتیویتی اصلی برنامه را Blank Activity انتخاب می کنیم. - پس از باز شدن پروژه در قسمت بالا سمت چپ محیط نرم افزار Android Studio صفحه روی گزینه app کلیک کرده در لیست باز شده مسیر زیر را انتخاب می کنیم. app -> res -> layout -> content_main.xml در ابتدا روی متن Hello World برنامه پیشین کلیک کرده و delete را بزنید. - در فهرست قسمت Pallete لیست ابزارهای مختلف UI محیط برنامه نویسی اندروید موجود می باشد و می توان به راحتی با Drag & Dropدر اکتیویتی اصلی برنامه از آنها برای شکل دهی به اپلیکیشن خود بهره بگیریم. - در ابتدا از منوی Pallete یک متن بزرگ (Large Text) را انتخاب میکنیم. با کلیک در صفحه نمایش متن مورد نظر در محل مورد نظر قرار می گیرد. در مرحله بعدی گزینه Button را از لیست انتخاب کرده و روی صفحه نمایش قرار می دهیم. با دو بار کلیک روی Text و Button متن پیش فرض آن ها را می توان تغییر داد. در قسمت بعدی برنامه نویسی نرم افزار موبایل خود را توضیح خواهیم داد تا با زدن کلید فانکشنی را صدا زند مثلا متن موجود را تغییر دهد. این برنامه نویسی شامل کد نویسی به زبان Java می باشد. آموزش برنامه نویسی اندروید آیا در مورد این مطلب نظر یا سوالی دارید؟
  12. آموزش برنامه نویسی موبایل (اندروید) قسمت دوم در ادامه آموزش برنامه نویسی موبایل در قسمت قبلی به معرفی برنامه نویسی اندروید و نرم افزار های توسعه دهنده ی آن پرداختیم در این مقاله سعی داریم تا نحوه ی نصب نرم افزار اندروید SDK و android studio بر روی سیستم عامل ویندوز توضیح دهیم. android studio در واقع یک شبیه ساز از محیط موبایل در سیستم عامل ویندوز میباشد. معمولا نرم­افزار android studio بهمراه SDK نصب میشود اما حتما باید قبل از آن باید نرم افزار JDK که مخفف Java Deployment Kit برروی سیستم نصب شده باشد. گام اول ) از آنجا که نمیتوان به صورت مستقیم از سایت گوگل این نرم افزار را دانلود کرد باید بصورت غیر مستقیم آخرین نسخه آنرا دریافت کرد. گام دوم ) همانطور که در بالا گفته شد در هنگام نصب نرم افزار از شما میخواهد تا محل نصب فایل JDK وارد کنید سپس مراحل نصب را به سادگی دنبال کنید. گام سوم) بعد از اتمام مراحل نصب تصویر زیر که حاوی پیام خوش آمد گویی به محیط برنامه است نشان داده میشود.[/align] گام چهارم) در گام بعدی بایستی نام پروژه یا همان نرم افزار موبایل را که میخواهید تولید کنید و محل ذخیره آنرا تعیین کنید. گام پنجم) در این مرحله شما باید برای برنامه نویسی موبایل خود سطحی را در نظر بگیرید به عنوان مثال و همانطور که در تصویر زیر قابل مشاهده است شما میتواند سطح برنامه موبایل خود را انتخاب نمایید گام ششم ) حال به صفحه ای وارد میشوید که باید فعالیت خود را از میان قالب های پیش فرض انتخاب کنید. که معمولا blank activity انتخاب میشود. گام هفت) مطابق لیست باید موارد نام فعالیت ،اسم لیوت،تایتل و نام منو انتخاب شود. گام هشتم) به برنامه android studio خوش آمدید. شما میتوانید ایده های خود را در قالب برنامه نویسی اندروید به نرم افزار موبایل تبدیل کنید امیدواریم از آموزش برنامه نویسی اندروید نهایت استفاده را برده باشید. برنامه نویسی اندروید آیا در مورد این مطلب نظر یا سوالی دارید؟
  13. آموزش برنامه نویسی موبایل (اندروید) قسمت اول با گسترش اسمارت فون ها و تبلت ها در بین مردم ، خود بخود اپلیکیشن های موبایل توسعه پیدا کرده و مردم از دستگاه های تلفن هوشمند خود انتظارات بیشتری از ارسال پیام و برقراری تماس دارند، از همین رو برنامه نویسی موبایل رونق زیادی گرفت و در مسیر صعودی خود قرار دارد. یکی از سیستم عامل های پر طرفدار در بین کاربران موبایل سیستم عامل اندروید میباشد که توسط کمپانی گوگل بیشتر از 80% سیستم عامل های گوشی های موبایل را به خود اختصاص داده است.در این مقاله قصد داریم تا به معرفی و محیط برنامه نویسی اندروید بپردازیم. اندروید در لغت به معنای "انسان نما" میباشد و یک برنامه با سورس باز است که دارای کتاب خانه ای پی آی میباشد که به برنامه نویسان موبایل کمک میکند تا اپلیکیشن های اندرویدی خود را تولید کنند. توسعه دهندگان و برنامه نویسان میتوانند در محیط SDK که یک پلتفرم قدرتمند در برنامه نویسی موبایل است نرم افزار موبایل اندروید خود را تولید کنند. SDK مخفف عبارت Software Development Kit میباشد که مجموعه ای از سیستم عامل ها پلتفرم ها و فریم ورک ها را در خود جای داده است.[/align] اکنون زمان آن رسیده است تا با فراهم کردن مقدمات اولین برنامه ی اندرویدی خود را ایجاد کنید. موارد مورد نیاز برای تولید نرم افزار اندروید: Android SDK :1 Java Deployment Kit (JDK) 5 or 6 : 2[/align] که میتوان آنها را در محیط windows یا linux نصب کرد این نرم افزارها توسط گوگل کاملا رایگان عرضه شده اند در قسمت بعدی شروع یک اپلیکیشن موبایل را آغاز میکنیم. با ما همراه باشید...