My Experience Of Programming

...وبلاگ یه توسعه دهنده

My Experience Of Programming

...وبلاگ یه توسعه دهنده

در حال حاضر بیشتر برنامه نویسان اندروید با ویژگی Instant Run که در اندروید استدیو۲ معرفی شد، آشنا هستند. با استفاده از این ویژگی زمان Build کردن پروژه ها بسیار کوتاهتر می شود. درواقع به جای اینکه با هر تغییر همه ی مراحل Build به صورت کامل انجام شود، کلاس هایی که تغییر یافته اند بعد از کامپایل شدن به گوشی منتقل شده و جایگزین کلاس های قدیمی می شوند.

البته این قابلیت ایده ی نوینی نیست و در گذشته شرکت Zero Turnaround با تمرکز بر روی کاهش مدت زمان Build پروژه های Java EE، محصول خود با را با نام  JRebelعرضه کرده بود. همچنین این شرکت در تابستان سال ۹۴ نسخه ی آزمایشی محصول Jrebel for Android را در اختیار برنامه نویسان اندروید قرار داد. با توجه به اینکه شرکت Zero Turnaround زودتر از گوگل کار بر روی این ویژگی را آغاز کرده است، در حالات بیشتری می توانید از آن کمک بگیرید. برای اطلاعات بیشتر می توانید به این مقاله که در رابطه با مقایسه ی JRebel for android و Instant run است، رجوع کنید.

توصیه من این هست اگر براتون ممکنه حتما لایسنسو بخرید ولی اگر به هردلیلی براتون امکان پذیر نیست از لینک های پایین استفاده کنید.

برای نصب و استفاده از این پلاگین، مراحل زیر را انجام دهید:

لینک دانلود پلاگین

لینک دانلود لایسنس

  1. فایل پلاگین کرک شده و لایسنس را از لینک های زیر دریافت کنید.
  2. از منوی File به تنظیمات اندروید استدیو رفته و در بخش Plugins با کلیک بر روی دکمه ی Install plugin from disk و انتخاب فایل پلاگین، آن را نصب کنید.
  3. اگر پلاگین به درستی نصب شده باشد، بعد از ری استارت کردن اندروید استدیو پنجره ی فعالسازی باز می شود.اگر پنجره باز نشد، می توانید در منو Tools زیرمنو Jrebel for android را مشاهده کنید. سپس در آن زیرمنو activate را انتخاب کنید.
  4. در این پنجره به تب I have a license رفته و بعد از انتخاب مسیر فایل لایسنس به وسیله ی دکمه ی Browse بر روی دکمه ی فعال سازی کلیک کنید.
  5. اگر مراحل فعالسازی با موفقت انجام شده باشد، زمان تریال پلاگین در تب قبلی، پایان سال ۲۱۱۶ میلادی ذکر شده است.

موفق باشید./

۰ نظر موافقین ۰ مخالفین ۰ ۱۶ دی ۹۵ ، ۲۲:۵۶
رضا اسفندیاری

اگر مدتی سابقه برنامه نویسی در اندروید را داشته باشید احتمالاً از موارد زیر خسته شده باشید :

  1. پیدا کردن View ها با findViewById و اجبار به عمل Cast : در بسیاری از موراد فراموش کردن این مورد یا حتی استفاده جا به جا باعث خطای آزار دهنده NullPointerException می شود ، همچنین گاهی اشتباه در عمل Cast نیز باعث خطای ClassCastException می شود.
  2. استفاده از سرویس های سیستمی با استفاده از متد getSystemService و تبدیل آن ها به سرویس مورد نظر نیز آزار دهنده است.
  3. و موارد مشابه دیگر

اگر کمی سابقه برنامه نویسی در محیط های Java EE یا حتی JavaFX یا حتی فریم ورک هایی مانند Spring را داشته باشید استفاده از Annotation ها برای شما جذاب تر باشد.

Annotation ها دنیای جاوا را متحول کرده اند و استفاده از آن ها بسیار متداول شده است ، در این آموزش با فریم ورک عالی AndroidAnnotations آشنا می شویم که با استفاده از Annotation ها زندگی اندرویدی شما را متحول می کند و شدیداً استفاده از آن را به همه اندروید کاران توصیه می کنم.

یه مثال ساده استفاده از Annotation در ساخت  یک اکتیویتی:

package safecomp.ir.annotationsexample;

import org.androidannotations.annotations.EActivity;

import android.app.Activity;

@EActivity(R.layout.activity_main)
public class MainActivity extends Activity {

}

احتمالاً از کوتاهی بیش از حد کد بالا تعجب کنید ، یا شاید فکر کنید من جایی اشتباه کرده باشم ولی نگران نباشید دستور EActivity@ به فریم ورک می گه که این کد جاوایی به کدام فایل ایکس ام ال مربوط می شه و override کردن متد onCreate و فراخوانی متد setContentView را فریم ورک خودش انجام میده.

البته این یه مثال بسیار ساده بود از این فریم ورک قدرتمند برای مطالعه بیشتر میتونید برید اینجا.

موفق باشید./

۱ نظر موافقین ۰ مخالفین ۰ ۰۶ آذر ۹۵ ، ۱۸:۲۱
رضا اسفندیاری

سلام ،امیدوارم که حالتو خوب باشه.

برای انجام کارهای سه بعدی در اندروید به طور کلی شما باید از OPENGL استفاده کنید که من قبلا بهش اشاره کردم و سختی های خاص خودشو داره و شما حتما باید با مبحث گرافیک اشنایی داشته باشید که به مشکل بر نخورید البته میتونید از JOGL یا JPCT هم استفاده کنید یا اگه دنبال راه حل ساده تر هستید از موتور هایی مثل JMonkey یا LibGDX استفاده کنید.

ولی گذشته از این مباحث من هدفم از نوشتن این مطلب این بود که بدون درگیر شدن در مباحث مربوط به گرافیک بتونیم انیمیشن های ساده ی سه بعدی ایجاد کنیم که البته با یکم خلاقیت میتونن اشکال پیچیده  رو هم به وجود بیارن 

3dCube

خوب برای این کار یه کتابخونه عالی هست که میتونید از اینجا دان کنید.

فقط یادتون باشه این کتابخونه با فرگمنت کار میکنه.

موفق باشید./

۰ نظر موافقین ۰ مخالفین ۰ ۰۵ مهر ۹۵ ، ۲۲:۲۶
رضا اسفندیاری

سلام
امیدوارم حالتون خوب باشه.چند وقت پیش در حین کار رو یه پروژه احتیاج پیدا کردم به یک ویو شبیه مکعب که بتونه انیمیشن کاشی های منوی استارت ویندوز رو  شبیه سازی کنه .

خوب پس از کلی سرچ انچنان مطلب بدرد بخوری پیدا نکردم جز یه کتابخونه که اینکارو انجام میداد اونم به صورت خیلی محدود  یعنی من زیاد شی ایجاد شده رو نمیتونستم شخصی سازیش کنم بعد فقط این نبود من میخواستم هر شی با هر نوع انیمیشنی رو که دوست داشjم بتونم ایجاد کنم .

پس رفتم دنبال یه چیز بهتر که رسیدم به OpenGL ابزاری فوق العاده  که از پس هر کاری بر میاد.ولی خوب کار باهاش اصلا ساده نیست و بر اساس توابع و فرمولهای ریاضی و مختصات اسکرین کار میکنه.

خوب من قصد ندارم چیزی اینجا بنویسم چون یه منبع خوب دیدم که همه چیزو گفته  ادرس همونو اینجا میذارم استفاده کنید.

موفق باشید ./

ادرس سایت

۰ نظر موافقین ۰ مخالفین ۰ ۱۶ شهریور ۹۵ ، ۲۱:۴۷
رضا اسفندیاری

یکی از مباحث جذاب تو برنامه نویسی اندورید قطعا RecyclerView هست که با ویژگی هاش خیلی سریع جای  ListView  رو گرفت و خیلی از مشکلهای اونو برطرف کرد و قابلیت های جذابی بهش اضافه کرد یکی از این قابلیت ایجاد header , footer بود .

برای اینکه بتونید از این قابلیت استفاده کنید کافیه این کتابخونه رو به پروژتون اضافه کنید./

موفق باشید و لذت ببرید./

۰ نظر موافقین ۱ مخالفین ۰ ۱۰ شهریور ۹۵ ، ۱۴:۲۱
رضا اسفندیاری

این راهکار در مورد ListView,GridView,RecyclerView, قابل استفاده هست.
در این روش ما از کتابخانه MUGEN استفاده میکنیم. که به راحتی مشکلتو نو حل میکنه و نیازی به استفاده از کلاس   Endless Recycler On Scroll Listener  نیست،چون این کلاس مشکلات خاص خودشو داره به خصوص در RecyclerView اگه لایه انتخابیتون برای نمایش ایتم هاتون از نوع   Staggered Grid Layout Manager باشه با مشکلات زیادی روبرو میشید .
خوب برای شروع کد پایین رو تو gradle  پروژتون قسمت bulid.gradle قرار بدید

compile 'com.vinaysshenoy:mugen:1.0.2'

حالا کد پایین رو تو اکتیویتی که view مورد نظر رو تعریف کردید قرار بدید


BaseAttacher attacher =Mugen.with(اسم ویو,newMugenCallbacks(){
@Override
publicvoid onLoadMore(){
//محل نوشتن کد مورد نظرتون وقتی اسکرول به اخر رسید

}

@Override
publicboolean isLoading(){
return isLoading;
//حتما متغیر isLoading رو که boolean هست تعریف کنید
}

@Override
publicboolean hasLoadedAllItems(){
returnfalse;
}
}).start();

attacher.setLoadMoreOffset(1);//وقتی این تعداد ایتم پایین بود
attacher.setLoadMoreEnabled(true);
attacher.start();

کار تمومه.لذت ببرید./
اگه مشکلی داشتید کامنت بزارید./
برای دیدن سایر قابلیت ها و اطلاعات بیشتر در مورد این کتابخونه به اینجا برید.

۰ نظر موافقین ۰ مخالفین ۰ ۰۶ شهریور ۹۵ ، ۱۲:۲۷
رضا اسفندیاری