جستجو در انجمن

در حال نمایش نتایج برای برچسب های 'آموزش برنامه نویسی اندروید'.



تنظیمات بیشتر جستجو

  • جستجو بر اساس برچسب

    برچسب ها را با , از یکدیگر جدا نمایید.
  • جستجو بر اساس نویسنده

نوع محتوا


برنامه نویسی اندروید | آموزش برنامه نویسی اندروید | آموزش اندروید

  • اندروید
    • ابزار های برنامه نویسی اندروید
    • آموزش برنامه نویسی اندروید
    • رفع مشکلات و سوالات
    • امنیت در اندروید
    • پروژه های اندروید
  • پشتیبانی اندروید
    • اندروید Lollipop
    • اندروید marshmallow
    • اندروید nougat
    • اندروید Oreo
  • کاتلین (Kotlin)
    • آموزش های برنامه نویسی Kotlin
    • سوالات و رفع مشکلات Kotlin
  • مباحث مرتبط با اندروید
    • ابزارها و سایتهای مفید
    • گرافیک موبایل
    • آموزش های ویدئویی
    • برنامه نویسی جاوا
  • تکنولوژی های اندروید
    • وب موبایل
    • توسعه اندروید با #C
    • توسعه اندروید با Basic4Android
  • متفرقه
    • اپلیکیش های ایرانی
    • برنامه نویسی
    • درخواست همکاری
    • مباحث متفرقه
    • مهارتهای فروش و بازاریابی
  • پشتیبانی محصولات مارکت
    • پرسش و پاسخ مرتبط با مارکت انجمن اندروید ایران
    • پشتیبانی مارکت پروژه های اندروید
    • پشتیبانی مارکت آموزش اندروید
    • پشتیبانی مارکت گرافیک موبایل
  • انجمن اندروید ایران
    • اخبار و اعلانات
    • صندوق پيشنهادات و انتقادات
    • تازه‌های دنیای کامپیوتر و فناوری
    • قوانین انجمن تخصصی اندروید ایران

دسته ها

  • پروژه اندروید
    • سورس پروژه اندروید
    • کامپوننت های اندروید
    • کتابخانه های اندروید
  • آموزش اندروید
    • فیلم آموزشی کاربردی
    • مقالات آموزشی اندروید
  • گرافیک موبایل
    • قالب طراحی اپلیکیشن
  • اپلیکیشن های اندروید
    • کاربردی
    • کسب و کار
    • آموزش
    • کتاب‌ها و منابع
    • ویدئو و رسانه
    • بازی‌

تقویم ها

  • Community Calendar

153 نتیجه پیدا شد

  1. دوره برنامه نویسی اندروید یکی از جذاب ترین دوره های آموزشی میباشد که مخاطبان دوره میتوانند در این دوره اصول طراحی اپلیکیشن های تحت اندروید را طراحی و پیاده سازی نموده و شروع به کسب درآمد در حوزه اپلیکیشن های موبایل نمایند.کاربران این دوره میتوانند با کسب مهارت های مطرح شده در سرفصلهای دوره گام بزرگ و سریعی جهت ورود به بازار اپلیکیشن های اندرویدی برداشته و با انتشار برنامه های طراحی شده خود در فضای مجاری کسب درآمد کنند.هم اینک ده ها هزار نرم افزار تحت موبایل در فضای اینترنتی منتشر شده که تعداد بی شماری از این نرم افزارها با دانلود های حیرت آور منبع درآمدهای چندین میلیونی برای طراح خود بوده اند.اگر قصد ورود به بازار نرم افزارهای موبایل دارید هم اینک در دروه آموزشی برنامه نویسی اندروید شرکت کنید. ثبت نام در دوره اهداف کلی این دوره: آموزش سیستم عامل اندروید آشنایی با UIاندروید، براساس XML اشنایی کامل با ساختار اندروید و پیاده سازی انواع اپلیکیشن پیاده سازی دیتابیس SQLite تسلط به وب سرویس های وب در اندروید آشنایی با فرگمنت طراحی برنامه برای دستگاه های اندرویدی توانایی ورود به بازار کار طراحی اپلیکیشن اندروید ثبت نام در دوره مشخصات دوره : مدرس (مدرسان) : فرزاد سرسیفی پیشنیاز: آشنایی با مفاهیم برنامه نویسی - آشنایی با زبان جاوا مدت زمان دوره: 9 جلسه ( کارگاه کاملا عملی تحت پروژه) به صورت کارگاهی (در مجموع 36 ساعت)(ظرفیت 10 نفر) تاریخ برگزاری: (دوره از 6 شهریور ماه 1396 به مدت 9 جلسه - روزهای دوشنبه 17 الی 21 و چهارشنبه ساعت 17 الی 21 ) مدرک: در پایان دوره مدرک پایان دوره از طرف انستیتو آموزشگاه اندروید ایران ارائه میگردد. سه دانشجو نمونه اول به شرکت های معروف ایرانی جهت همکاری معرفی می گردند. به شرکت کنندگان در دوره کد ویژه خرید محصولات شاپ دروید داده می شود و می توانند برای همیشه محصولات این فروشگاه را با تخفیف 50 درصدی تهیه کنند. ویژگی : آموزش در لابراتوار مجهز به سیستم های روز به صورت شبکه تحت NetSupport و متصل به اینترنت و کاملا اینتراکتیو تحت پروژه عملی انجام خواهد گرفت. مکان برگزاری : این دوره آموزشی با همکاری آموزشگاه ویستا برگزار خواهد شد ثبت نام در دوره راهنمای ثبت نام: ثبت نام خود را میتوانید از طریق فرم زیر انجام دهید.پس از واریز وجه نام شما در لیست ثبت نام قرار خواهد گرفت و قبل از شروع دوره با شما تماس حاصل خواهد شد و از طریق پیامک اطلاع رسانی میشود. جهت کسب هر نوع اطلاعاتی در خصوص دوره میتوانید با ایمیل info@android-learn.ir وشماره های تماس ۸۸۵۰۸۰۸۰ -۸۸۵۵۴۲۱۷ -۸۸۵۵۴۲۱۳ تلگرام همراه 09100046764 تماس حاصل نمایید. سرفصلهای دوره آموزشی برنامه نویسی اندروید به صورت کاملا عملی: ثبت نام در دوره فصل اول)فریمورک اندروید و راه اندازی اندروید استودیو آشنایی با اندروید لایه های نرم افزاری اندروید کتابخانه های اندروید ورژن های مختلف اندروید از ابتدا تا Marshmellow نصب و راه اندای اندروید استودیو نیازمندی مورد نیاز برای اندروید استودیو آشنایی با اندروید استودیو ماشین مجازی اندروید AVD ماشین مجازی genymotion آشنایی با دیباگ پروژه در اندروید استودیو فصل دوم) SDK اندروید و اکتیویتی ساختار پروژه های اندروید آشنایی با فایل مانیفست ساختار فایل مانیفست آشنایی با SDK اندروید آشنایی با اکتیوتی و مفهوم اکتویتی در اپلیکیشن های اندروید چرخه حیات اکتیوتی Life Cycle فصل سوم) فرگمنت،View ها و ListView آشنایی با فرگمنت View ها در اندروید آشنایی با ویجت های اندروید سایر استاندارد تصاویر در اندروید فصل چهارم)Intent ها و Intent filters آشنایی با Intent انتقال اطلاعات توسط Intent ارتباط بین اکتیویتی ها با Intent Register کردن IntentFilter فصل پنجم) Layout های اندروید و View های سفارشی آشنایی با مفاهیم Layout طراحی واسط کاربری برای سایز های مختلف Layout های چند زبانه ساخت View های سفارشی فصل ششم) منابع اندروید،Theme و متریال دیزاین معرفی منابع اندروید Theme های اندروید Style ها بکار گیری Material Design در طراحی اپلیکیشن Shape and Selector فصل هفتم)Ui اندروید-دیالوگ ها،منوها و WebView دیالوگ ها AlertDialog دیالوگ های سفارشی اکتیویتی دیالوگ ها منوها OptionMenu ContextMenu نمایشگر داخلی WebView فصل هشتم)ذخیره سازی اطلاعات و پردازش های پس زمینه ای روش های ذخیره سازی اطلاعات در اندروید خواندن و نوشتن در فایل SharedPrefrences ارتباط با اینترنت سرویس های پس زمینه Service BroadCastReciver فصل نهم)ذخیره سازی اطلاعات با دیتابیس Sqlite معرفی دیتابیس در اندروید پیاده سازی دیتابیس Sqlite در اندروید افزودن اطلاعات به دیتابیس ویرایش اطلاعات در دیتابیس حذف اطلاعات در دیتابیس نمایش اطلاعات در دیتابیس فصل دهم)Notification در اندروید پیاده سازی Notification در اندروید Notification های سفارشی طراحی واسط کاربری برای Notification آشنایی با Pending Intent Notification در اندروید 5 فصل یازدهم)Sms،شبکه ها ،بلوتوث ، wifi،ویبره ارسال SMS دریافت پیامک روشن کردن بلوتوث روشن کردن Wifi Detect کردن wifi کنترل کردن ویبره دستگاه فصل دوازدهم)وب سرویس ها- JSON مفهوم وب سرویس انواع وب سرویس ها ارتباط با وب سرویس آشنایی با وب سرویس JSON آشنایی با JSON Array آشنایی با JSON Object آشنایی با Volley دریافت اطلاعات وب سرویس Volley ارسال اطلاعات به سرور Volley Image Loader volley Image Loader Picasoo آشنایی با HttpGet و HttpPost آشنایی با HttpResponse ثبت نام در دوره فصل سیزدهم)گوگل مپ و موقعیت یابی گوگل مپ گوگل مپ ورژن دو آشنایی با Google Play Service Api گوگل مپ آشنایی با Keytool برای تعریف Sha تعریف api در مانیفست افزودن Permission های مورد استفاده به مانیفست آشنایی با MarkerOptions ایجاد نقاط(point) روی نقشه آشنایی با CameraOption تنظیم کردن Zoom نقشه ایجاد نماهای Normal،Satellite،Terrain،Hybrid بدست آوردن مکان جاری و نمایش آن روی نقشه آشنایی با Lat و Lang آشنایی با LocationListener بدست آوردن موقیت جاری از روی GPS و Internet فصل چهاردهم)آشنایی با تغییرات اندروید5 Material Design Toolbar MenuDrawer Shade Animation CardView and RecycleBinView FloatingActionButton SnackBar CordinatorLayout این دوره توصیه میشود به : اشخاصی كه علاقه مند به آشنایی و كار حرفه ای با اندروید هستند. اشخاصی كه قصد فراگیری كامل طراحی اپلیکیشن های موبایل از ابتدا توسط اندروید دارند. اشخاصی كه قصد راه اندازی اپلیکیشن موبایل شخصی خود توسط اندروید دارند. اشخاصی كه میخواهند با فراگیری حرفه ای شروع به كسب درآمد نموده و به عنوان توسعه دهنده اندروید فعالیت كنند. شركتها و سازمانهایی كه قصد راه اندازی اپلیکیشن موبایل اندروید اختصاصی خود را دارند. دانشجویان رشته های كامپیوتر كه قصد فراگیری كامل توسعه اپلیکیشن های اندروید دارند. اشخاصی كه قصد پیاده سازی ایده های اپلیکیشن های موبایل را در قالب اندروید دارند. اشخاصی كه قصد دارند وب سایت خود را به اپلیکیشن های موبایل اندروید تبدیل كنند. و... دانشجویان موفق دوره های قبلی آموزشگاه اندروید ایران نام و نام خانوادگی تاریخ دوره رزومه و برنامه های تولید شده محسن جهانی بهار 93 مصاحبه با وب سایت appvs علیرضا غمخوار مرداد 93 توسعه دهنده شرکت رهنما.برنامه تولید شده کفش دوزک گروه برنامه نویسی ادامدن تابستان 94 https://cafebazaar.ir/developer/noorali/?l=fa دانشجویان گذرانند این دوره قابلیت پیاده سازی اپلیکیش های به صورتی تحت دیتابیس و کاملا پویا را خواهند داشت و آماده ورود به بازار کار میباشند. ثبت نام در دوره
  2. درود به همه کاربران انجمن اندروید ایران به عنوان یکی دیگر از هدایای سری جدید انجمن اندروید ایران پروژه کتاب ساز اندروید را برای شما آماده و در اختیار شما عزیزان قرار گرفت. از آنجایی که هدف انجمن اندروید ایران فقط و فقط خدمت به اندروید ایران است و رشد و توسعه آن در گرو همکاری همه عزیزان است لذا به عنوان یک عضو کوچک از این خانواده بزرگ تلاش خود را انجام میدهیم تا خدمتی صادقانه به شما عزیزان ارائه دهیم. چندین وقت بود نیاز بود راهی آسان برای ساخت و ایجاد اپلیکیشن های بر پایه تولید محتوا ایجاد شود،بر همین دلیل انجمن پی سی دروید این نیاز را با ارائه روش "کتاب ساز اندروید" نیز برای توسعه دهندگان گرامی اندروید رفع خواهد کرد. امید است دوستان گرامی بتواند اپلیکیشن های جذابی را در آینده تولید نمایند و باعت پیشرفت صنعت موبایل در کشور باشد از امکانات این کتاب ساز : ورق زدن صفخات بصورت راست به چپ قرار دادن تصاویر و متون در صفحات قرار دادن متون فارسی و ... امکان قرار دادن نامحدود صفحات استفاده از دیتابیس برای نمایش اطلاعات برای استفاده از این پروژه باید حتما کتابخانه FilpBook را نیز به پروژه خود اضافه کنید،کتابخانه مورد نظر نیز در پیوست قرار گرفته است. دانلود پروژه: http://p30droid.com/Uploader/do.php?id=359 کتابخانه پروژه: http://p30droid.com/Uploader/do.php?id=360 پیروز و سربلند باشید. انجمن اندروید ایران
  3. نصب پلاگین Kotlin در اندروید استودیو در صورتی که نسخه اندروید استودیو کمتر از 3 باشد حتما میبایستی پلاگین Kotlin را در اندروید استودیو نصب کنید از منوی پلاگین های intellij گزینه plugin را نصب کنید روی گزینه Install jetBrains Plugin کلیک کنید سپس در کادر زیر Kotlin را جستجو کنید سپس گزینه install را انتخاب کنید تا پلاگین Kotlin بر روی اندروید استودیو نصب کنید و بتوانید از Kotlin در برنامه نویسی اندروید استفاده کنید
  4. کتابخانه BottomNavigationView در داخل کتابخانه deisgn از ورژن 25 به بالاتر وجود دارد داکیومنت گوگل : https://developer.android.com/reference/android/support/design/widget/BottomNavigationView.html برای پیاده سازی استفاده از BottomNavigationView میابیستی مراحل زیر را بطور کامل انجام دهید : 1- ابتدا Dependencyها را در فایل app->build.gradle وارد نمایید compile 'com.android.support:appcompat-v7:25.1.0' compile 'com.android.support:design:25.1.0' compile 'com.android.support:support-v4:25.1.0' 2- فرگمنت ها : همانطور که مطلع هستید برای نمایش تب های هر کدام از گزینه های BottomNavigationView میبایستی فرگمنت های مربوطه را طراحی کرد. در این مثال فرض میگیریم 3 تب داریم پس باید 3 فرگمنت ایجاد کنیم. Fragment 1: fragment_item_one.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.truiton.bottomnavigation.ItemOneFragment"> <ImageView android:id="@+id/truiton_image" android:layout_width="300dp" android:layout_height="300dp" android:layout_centerInParent="true" android:src="@mipmap/truiton"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/truiton_image" android:layout_centerHorizontal="true" android:text="Fragment 1" android:textSize="30sp"/> </RelativeLayout> import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class ItemOneFragment extends Fragment { public static ItemOneFragment newInstance() { ItemOneFragment fragment = new ItemOneFragment(); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_item_one, container, false); } } Fragment 2: fragment_item_two.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.truiton.bottomnavigation.ItemTwoFragment"> <ImageView android:id="@+id/truiton_image" android:layout_width="300dp" android:layout_height="300dp" android:layout_centerInParent="true" android:src="@mipmap/truiton"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/truiton_image" android:layout_centerHorizontal="true" android:text="Fragment 2" android:textSize="30sp"/> </RelativeLayout> import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class ItemTwoFragment extends Fragment { public static ItemTwoFragment newInstance() { ItemTwoFragment fragment = new ItemTwoFragment(); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_item_two, container, false); } } Fragment 3: fragment_item_three.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.truiton.bottomnavigation.ItemThreeFragment"> <ImageView android:id="@+id/truiton_image" android:layout_width="300dp" android:layout_height="300dp" android:layout_centerInParent="true" android:src="@mipmap/truiton"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/truiton_image" android:layout_centerHorizontal="true" android:text="Fragment 3" android:textSize="30sp"/> </RelativeLayout> import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class ItemThreeFragment extends Fragment { public static ItemThreeFragment newInstance() { ItemThreeFragment fragment = new ItemThreeFragment(); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_item_three, container, false); } } 3- منو ها: در این مرحله میبایستی منوها را ایجاد نمایید از مسیر res->menu bottom_navigation_items.xml <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/action_item1" android:icon="@drawable/ic_account_box_black_24dp" android:title="@string/item_1"/> <item android:id="@+id/action_item2" android:icon="@drawable/ic_account_circle_black_24dp" android:title="@string/item_2"/> <item android:id="@+id/action_item3" android:icon="@drawable/ic_assignment_ind_black_24dp" android:title="@string/item_3"/> </menu> 4- در این مرحله طراحی ظاهر کاربری اکتیویتی اصلی را انجام میدهیم : در این مرحله از تگ BottomNavigationView استفاده میکنیم <?xml version="1.0" encoding="utf-8"?> <RelativeLayout android:id="@+id/activity_main" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.truiton.bottomnavigation.MainActivity"> <FrameLayout android:id="@+id/frame_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@+id/navigation" android:animateLayoutChanges="true"> </FrameLayout> <android.support.design.widget.BottomNavigationView android:id="@+id/navigation" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:background="@color/colorPrimary" app:itemIconTint="@color/nav_item_state_list" app:itemTextColor="@color/nav_item_state_list" app:menu="@menu/bottom_navigation_items"/> </RelativeLayout> 5- در این مرحله میبایستی BottomNavigation را در اکتیویتی تعریف نماییم import android.os.Bundle; import android.support.annotation.NonNull; import android.support.design.widget.BottomNavigationView; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; import android.support.v7.app.AppCompatActivity; import android.view.MenuItem; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.navigation); bottomNavigationView.setOnNavigationItemSelectedListener (new BottomNavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { Fragment selectedFragment = null; switch (item.getItemId()) { case R.id.action_item1: selectedFragment = ItemOneFragment.newInstance(); break; case R.id.action_item2: selectedFragment = ItemTwoFragment.newInstance(); break; case R.id.action_item3: selectedFragment = ItemThreeFragment.newInstance(); break; } FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); transaction.replace(R.id.frame_layout, selectedFragment); transaction.commit(); return true; } }); //Manually displaying the first fragment - one time only FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); transaction.replace(R.id.frame_layout, ItemOneFragment.newInstance()); transaction.commit(); //Used to select an item programmatically //bottomNavigationView.getMenu().getItem(2).setChecked(true); } } خروجی : با سپاس فرزاد سرسیفی
  5. مشاهده فایل سورس پروژه ذکرشمار ذکرشمار نرم افزاری است برای ارتباط با خدا. این نرم افزار شامل ذکر ایام هفته و تعدادی اذکار صوتی دیگر است. شما می توانید از این اذکار زیبا برای خود تسبیحی بسازید و حتی می توانید ذکر دلخواه خود را به آن اضافه کنید. به این ترتیب ذکر ویاد خدا همیشه و همه جا همراه شما و گره گشای مشکلات شما خواهد بود. البته لازم به ذکر است که تعداد اذکار در این نسخه که نسخه اولیه می باشد، محدود است اما امید است که به لطف خدا در نسخه های بعدی افزایش یابد. این برنامه بدین صورت عمل میکند که با حرکت انگشت دانه های تسبیح حرکت میکنند و بعد از 33 حرکت تسبیح تمام میشود و به اول تسبیح برمیگردیم.همچنین دارای ویبره بعد انداختن هر دانه تسبیح همراه با شمارنده تعداد تسبیح های انداخته شده میباشد. دریافت نسخه دمو : Tasbih.apk ارسال کننده Farzad Sarseifi ارسال ۱۷/۰۳/۳۱ دسته سورس پروژه اندروید
  6. در آموزش قبلی آموختیم که زبان کاتلین دارای چه قدرت هایی میباشد .بر همین اساس در این جلسه آموزشی یاد خواهیم گرفت که به چه صورتی بتوانیم از کاتلین در اندروید استودیو استفاده کنیم ابتدا محیط اندروید استودیو را باز کنید Android studio 3.0 تیک گزینه کاتلین را انتخاب کنید و سپس گزینه finish را انتخاب کنید تا پروژه ساخته شود برای ورژن های اندروید استودیو 2 .x به بالاتر شما حتما باید پلاگین کاتلین را نصب کنید از طریق مسیر file->Settings->plugin و گزینه kotlin را جستجو نمایید Project level app.gradle 1- تعریف کردن ورژن kotlin در زمانی که از ورژن های 1.1.3-2 استفاده میکنید 2- Dependency کاتلین را اضافه میکنیم app level app.gradle 1- پلاگن کاتلین اضافه میشود به ماژول ها 2- kotlin یک کتابخاه استاندارد میباشد.برای اینکه بیشتر در مورد این کتابخانه بدانیم از ادرس kotlinlang.org استفاده کنید پسوند فایل های کاتلین kt میباشد. در تصویر زیر تفاوت کاتلین و جاوا مشخص میشود 1- تمامی ارث بری ها با color (دو نقطه) انجام میشود(extends در جاوا) 2- وقتی یک متد overrideمیشود حتما میبایستی از کلمه کلیدی override استفاده کنیم 3- حتما باید بعد از تعریف کرد یک آبجکت از ? (علامت سوال) استفاده کنید. حالا خروجی به این صورت میباشد
  7. عملگرها در کاتلین در این جلسه آموزشی قصد داریم که در کاتلین بیاموزیم به چه صورتی میتوانیم از کاتلین استفاده کنیم.اما قبل از اینکه این مطلب آموزشی را شروع حتما آموزشی های زیر را مطالعه نمایید تا بتوانید تمامی مفاهیم پیش رو را بیاموزید Binary operators کاتلین یک زبان قدرتمند برای عملگرهای شرطی میباشد. بقیه زبان ها مشابه جاوا ، کاربر نمی تواند عملگرهای ریاضیات در برای نوع های اصلی استفاده کند اگر شما میخواهید از عملگرها برای ارایه استفاده کنید نمی توانید اینکا را انجام دهید،اما در کاتلین این براحتی ممکن میباشد .کاتلین مجموعه کاملی از عملگرها را شامل میشود اگر شما از کاتلین 1.1 استفاده میکنید میبایستی از متد rem() بجای mod() استفاده کنید و این دستور deprecate شده است data class Test(){ operator fun plus(increment : Int): Test{ return Test(count + increment ) } operator fun times(multiply : Int): Test{ return Test(count + multiply) } } var test=Test(10) println(test+10) //output -> Test(count =20) println(test*2) //output -> Test(count =12) Increment and Decrements بله، ++ و -- عملگرات بسیار کاربردی هستند،اما در کاتلین میتوانید با استفاده از متدهای زیر اینکار را انجام دهید Assignments operators با استفاده از Assignments operators میتوانید مقادیر متغیرها را تغییر داد،شما میتوانید اینکار را با صدا زدن متدهای مربوطه انجام داد Rest of Operators در کاتلین خیلی زیادی متد و کاربردی وجود وجود دارید که در اینجا با تعدادی از آنها آشنا خواهیم شد نتیجه گیری : در این آموزش آموختیم که در کاتلین به چه صورتی میتوان از function های Operator ها استفاده کرد
  8. نگارش 1.0.0

    0 دانلود

    یکی از Layout های اندروید که برای چیده مان المان ها یا ویجت ها، میتوانیم از آن استفاده کنیم RelativeLayout میباشد و همانطور که از اسم آن مشخص میباشد، بطور نسبی ویجت ها را میتوانیم با طراز بندی های خاصی بچینیم. در RelativeLayout میتوانید با استفاده از ویژگی های above,below,left,right تعیین کنید که ویجت ها به چه صورتی کنار هم قرار بگیرند. نکته: RelativeLayout بسیار قابل انعطاف میباشد و میتوان بسیار راحت ویجت ها را با قاعده های آن در صفحه بطور ترو تمیز چید. هر کدام از آیتم های بالا دارای اصول و قاعده های مربوط به خود میباشند که میبایستی تمامی آنها را یادگرفته و بتوانیم تشخیص دهیم در چه زمانی از کدام Layout استفاده نماییم روش تعریف RelativeLayout در اندروید: برای تعریف کردن RelativeLayout میبایستی که تگ آن را تعریف نماییم. <RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content"> پس از تعریف، بایستی المان را در داخل این Viewgroup و نسبت های مربوطه را برای هرکدام از ویجت ها قرار داد. قرار دادن خصوصیت Id: Id یکی از مهمترین ویژگی های هر Layout یا ویجت میباشد که باید به آنها نسبت دهیم تا بتوانیم در قسمت Layout و اکتیویتی به آنها دستیابی پیدا کنیم و عملکرد هر کدام را تعریف نماییم. طریقه تعریف Id: {xtypo_code}android:id="@+id/name" بعد از تعریف کردن id مربوطه، name یک مقدار رشته ای برای آن در فایل R ایجاد میکند و از این طریق میتوان به آنها دسترسی پیدا کرد. خصوصیات RelativeLayout: android:layout_above : این خصوصیت تعیین میکند که این ویجت در بالای کدام view یا ویجت دیگر قرار بگیرد. android:layout_below : این خصوصیت تعیین میکند که این ویجت در پایین کدام view یا ویجت قرار بگیرد. android:layout_centerHorizontal : این خصوصیت تعیین میکند که این view یا ویجت بطور افقی وسط چین شود. android:layout_centerVertical : این خصوصیت تعیین میکند که این view یا ویجت بطور عمودی وسط چین شود. android:layout_centerInParent : این خصوصیت تعیین میکند که این view یا ویجت، بطور عمودی و افقی وسط چین شود و دقیقا مشابه استفاده از دو ویژگی centerHorizontal و centerVertical میباشد. android:layout_toLeftOf : این خصوصیت تعیین میکند که این view یا ویجت سمت چپ کدام view باشد. android:layout_toRightOf: این خصوصیت تعیین میکند که این view یا ویجت سمت راست کدام view باشد. android:layout_alignParentRight : این خصوصیت تعیین میکند که این view یا ویجت سمت راست والد خود باشد. Margin : Margin برای ایجاد کردن فاصله بین View ها از طرف خارج خود میباشد یا بطور ساده تر میتوان گفت بین ویجت ها از جهت های بالا، پایین، راست و چپ فاصله ایجاد میکند و به هر اندازه که نیاز باشد، میتوان سایز های مورد نظر خود را به آن اختصاص داد. در این بخش یک مثال را بطور عملی اجرا خواهیم نمود تا بطور کامل روش استفاده از RelativeLayout را بیاموزید. ابتدا یک پروژه جدید اندروید را ایجاد کنید. بر روی پوشه res/layout راست کلیک کنید و سپس گزینه Android xml file را انتخاب کنید و یک اسم برای Layout خود انتخاب کنید. و یا بصورت افقی : <RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content"> <EditText android:layout_height="wrap_content" android:text="Email" /> <TextView android:layout_height="wrap_content" android:layout_below="@id/label" /> <Button android:layout_height="wrap_content" android:layout_below="@id/inputEmail" android:layout_alignParentLeft="true" android:layout_marginRight="10px" android:text="Login" /> <Button android:layout_toRightOf="@id/btnLogin" android:layout_alignTop="@id/btnLogin" android:text="Cancel" /> <Button android:layout_alignParentBottom="true" android:text="Register new Account" android:layout_centerHorizontal="true"/> خروجی ارتباط layout با اکتیویتی: setContentView(R.layout.relative_layout); با این دستور براحتی تعیین میکنید، هنگامی که این Activity اجرا شود، کدام Layout ظاهر شود. در ادامه همراه شاپ دروید باشید این آموزش از چه قسمت هایی تشکیل شده است؟ در این آموزش با مفاهیم Layout در اندروید و RelativeLayout بطور کامل آشنا خواهید شد و قادر خواهید بود رابط های گرافیکی مختلفی را پیاده سازی نمایید. از جمله آیتم های موجود میتوان به موارد زیر اشاره کرد: مفهوم RelativeLayout در اندروید انواع Layout های موجود در اندروید برای پیاده سازی رابط های کاربری استفاده از خصوصیت های CenterVertical و CenterHorizontal در RelativeLayout آشنایی و استفاده از Margin آشنایی با id و طریقه تعریف کردن id ها طراز بندی ویجت ها کنار هم حل مشکل بهم ریختگی View ها در RelativeLayout مشخصات ویدئو عنوان:آشنایی با RelativeLayout در اندروید مدرس:فرزاد سرسیفی مدت:21 دقیقه سطح:حرفه ای

    50٬000 ریال

  9. سلام یه مدت پیش داشتم توی اینترنت گشت میزدم که به یک کتابخانه ای خیلی خوبی برخورد کردم که کار رو برای ارتباط با سرور بهتر از هر کتاب خانه ای راحت تر کرده اینجا آموزش این کتاب خانه رو به صورت متنی قرار خواهم داد ولی بعدا به صورت ویدئو در قالب یک پروژه کامل این کتاب خانه رو آموزش میدم. ویژگی های مهم این کتاب خانه جدا کردن متد های پست ، گت ، داشتن دانلود منیجر در خود کتاب خانه ، و هم چنین آپلود منیجر که این کتاب خونه رو از همه متمایز کرده و سرعت خوبی هم داره خب بریم سر آموزش اول مییایم به وسیله گردل کتاب خونه رو به پروژه اضافه میکنیم compile 'com.amitshekhar.android:android-networking:1.0.0' بعد به منی فیست دسترسی به اینترنت رو میدیم <uses-permission android:name="android.permission.INTERNET" /> بعد از اضافه شدن کتابخانه به پروژه و تعریف دسترسی حالا توی اکتیویتی که میخوایم عملیات ارسال و دریافت رو انجام بدیم اول میای کد زیر رو توی بخش OnCreate پروژه قرار میدیم تا کتابخانه اینشیالایز بشه AndroidNetworking.initialize(getApplicationContext()); بعد از این که کتابخانه آماده شد حالا میریم سراغ متد های ارسال و دریافت ابتدا متد GET AndroidNetworking.get("http://yourDomin.com/{pageNumber}") .addPathParameter("pageNumber", "0") .addQueryParameter("limit", "3") .addHeaders("token", "1234") .setTag("test") .setPriority(Priority.LOW) .build() .getAsJSONArray(new JSONArrayRequestListener() { @Override public void onResponse(JSONArray response) { // do anything with response } @Override public void onError(ANError error) { // handle error } }); بجای yourDomin.com باید ادرس دامنه و فایل رو قرار بدید مقادیر ارسالی رو در این سه بخش قرار میدیم .addPathParameter("pageNumber", "0") .addQueryParameter("limit", "3") .addHeaders("token", "1234") البته این سه پارامتر قابل اضافه شدن هستند حالا متد Post AndroidNetworking.post("http://yourDomin.com/createAnUser") .addBodyParameter("firstname", "Amit") .addBodyParameter("lastname", "Shekhar") .setTag("test") .setPriority(Priority.MEDIUM) .build() .getAsJSONObject(new JSONObjectRequestListener() { @Override public void onResponse(JSONObject response) { // do anything with response } @Override public void onError(ANError error) { // handle error } }); شما میتوانید مقادیر رو در پارمتر addBodyParameter قرار بدید البته شما میتونید اطلاعات رو به صورت یک فایل ، ابجکت و جیسون هم بفرستید در زیل سه نوع ارسال وجود دارد User user = new User(); user.firstname = "Amit"; user.lastname = "Shekhar"; AndroidNetworking.post("http://yourDomin.com/createUser") .addBodyParameter(user) // posting java object .setTag("test") .setPriority(Priority.MEDIUM) .build() .getAsJSONArray(new JSONArrayRequestListener() { @Override public void onResponse(JSONArray response) { // do anything with response } @Override public void onError(ANError error) { // handle error } }); JSONObject jsonObject = new JSONObject(); try { jsonObject.put("firstname", "Amit"); jsonObject.put("lastname", "Shekhar"); } catch (JSONException e) { e.printStackTrace(); } AndroidNetworking.post("hhttp://yourDomin.com/createUser") .addJSONObjectBody(jsonObject) // posting json .setTag("test") .setPriority(Priority.MEDIUM) .build() .getAsJSONArray(new JSONArrayRequestListener() { @Override public void onResponse(JSONArray response) { // do anything with response } @Override public void onError(ANError error) { // handle error } }); AndroidNetworking.post("http://yourDomin.com/postFile") .addFileBody(file) // posting any type of file .setTag("test") .setPriority(Priority.MEDIUM) .build() .getAsJSONObject(new JSONObjectRequestListener() { @Override public void onResponse(JSONObject response) { // do anything with response } @Override public void onError(ANError error) { // handle error } }); خوب مقادیر برگشتی در متد زیر به صورت یک جیسون ابجکت برگشت داده میشوند ( این متد در خود متد گت و پست هست ) .getAsJSONObject(new JSONObjectRequestListener() { @Override public void onResponse(JSONObject response) { // do anything with response } @Override public void onError(ANError error) { // handle error } }); در صورتی که جواب برگشت داده شد در onResponse به صورت جییسون ابجکت ذخیره میشود و اگر خطای رخ داد در متد onError برگشت داده میشود خب حالا اگر میخواید یک فایلی رو از ادرسی دانلود کنید میتونید از متد ذیل استفاده کنید AndroidNetworking.download(url,dirPath,fileName) .setTag("downloadTest") .setPriority(Priority.MEDIUM) .build() .setDownloadProgressListener(new DownloadProgressListener() { @Override public void onProgress(long bytesDownloaded, long totalBytes) { // do anything with progress } }) .startDownload(new DownloadListener() { @Override public void onDownloadComplete() { // do anything after completion } @Override public void onError(ANError error) { // handle error } }); url ادرس فایل dirPath ادرس محل ذخیره فایل fileName نمای که میخواید فایل بر روی دیوایس ذخیره بشه متد setDownloadProgressListener وضعیت دانلود رو برمیگردونه متد startDownload زمانی که دانلود شروع شد منتظر میشه که دانلود به پایان میرسه یا خیر که دو متد داره متد onDownloadComplete زمانی که دانلود به اتمام ریسدو فایل دانلود شد مقداریرو بر میگردونه و اگر خطای رخ داد توسط متد onError برگشت داده میشه برای آپلود میتونید از متد زیر استفاده کنید AndroidNetworking.upload(url) .addMultipartFile("image",file) .addMultipartParameter("key","value") .setTag("uploadTest") .setPriority(Priority.HIGH) .build() .setUploadProgressListener(new UploadProgressListener() { @Override public void onProgress(long bytesUploaded, long totalBytes) { // do anything with progress } }) .getAsJSONObject(new JSONObjectRequestListener() { @Override public void onResponse(JSONObject response) { // do anything with response } @Override public void onError(ANError error) { // handle error } }); فایل را به وسیله متد addMultipartFile میتوانید ارسال کنید نمایش تصویر به صورت مستقیم از اینترنت به وسیله این کتابخانه میتونید تصویری رو بدون نیزا به کتابخانه های مانند پیکاسو و گلید در ایمیج ویوی خود تابخانه نمایش بدید <com.androidnetworking.widget.ANImageView android:id="@+id/imageView" android:layout_width="100dp" android:layout_height="100dp" android:layout_gravity="center" /> imageView.setDefaultImageResId(R.drawable.default); imageView.setErrorImageResId(R.drawable.error); imageView.setImageUrl(imageUrl); گرفتن Bitmap از ادرس همراه با یکسری مقادیر AndroidNetworking.get(imageUrl) .setTag("imageRequestTag") .setPriority(Priority.MEDIUM) .setBitmapMaxHeight(100) .setBitmapMaxWidth(100) .setBitmapConfig(Bitmap.Config.ARGB_8888) .build() .getAsBitmap(new BitmapRequestListener() { @Override public void onResponse(Bitmap bitmap) { // do anything with bitmap } @Override public void onError(ANError error) { // handle error } }); خب تا اینجا متد های مهم این کتاتخانه رو گفتم البته متد های دیگری هم داره که ادرس مستقیم کتابخانه رو میزارم تا استفاده کنید https://github.com/amitshekhariitbhu/Fast-Android-Networking امید وارم که این کتابخانه و این آموزش مفید باشد
  10. Kotlin چیست؟ Kotlin (کاتلین) یک زبان برنامه‌نویسی‌ست که با استفاده از آن میتوان برنامه نویسی اندروید را توسعه داد. نسخه های اخیر اندروید استودیو به طور رسمی از کاتلین پشتیبانی می‌کنن، مسئله‌ای که در Google IO 2017 اعلام شد. kotlin تبدیل به bytecode جاوا میشود پس بنابراین به خوبی java میتونه روی اندروید اجرا بشه و از این نظر تفاوتی وجود نخواهد داشت. و اینکه میشه توی یک پروژه اندروید همزمان از kotlin و java استفاده کرد، بنابراین حتی اگر خیلی کم با کاتلین آشنا هستید باز هم میتونید بخشی از پروژه‌هاتون رو با کاتلین انجام بدید. چرا Kotlin؟ دلیل اول اینکه با کاتلین میتونیم کدهایی تمیزتر و خواناتر بنویسیم. میدونیم که زبان جاوا boiler code زیاد داره. boiler code به کدهایی میگیم که جز syntax زبان هستن ولی همیشه بدون دلیل تکرار میشن و میشد حذفشون کرد.
  11. کاربران گرامی انجمن اندروید ایران همانطور که مطلع هستید در تاریخ 19 آذر ماه 1395 ورژن جدید انجمن اندروید ایران ایجاد شده و دارای بخش های فراوانی همچون : مارکت اندروید چت رابط کاربری جذاب راحتی کار در موبایل آپلود سنتر داخلی برای بارگذاری فایل ها و... خوشحال خواهیم شد نظرات خود را با ما در میان بگذارید تا بتوانیم وب سایت بهتری در شان انجمن اندروید ایران را در اختیار کاربران قرار دهیم. با تشکر فرزاد سرسیفی
  12. یک محیط برنامه نویسی برای پلتفرم اندروید است. این برنامه در 16 می 2014 توسط مدیران گوگل در کنفرانس گوگل آی/او معرفی شد. از ماه جوئن 2014 نسخه پیش نمایش این برنامه (به صورت رایگان) برای امتحان در دسترس توسعه دهنده‌ها قرار گرفت. این محیط بر اساس نرم‌افزار محبوب جت برینز طراحی شده است، این استودیو بطور اختصاصی برای اندروید طراحی شده. هم اکنون این استودیو برای دانلود بر روی ویندوز، مک و لینوکس در دسترس می‌باشد. چندین ویژگی جدید در این نرم‌افزار برای کاربران می‌باشد: چیدمان زنده: ویرایشگر WYSIWYG – کدنویسی زنده – رندر هم زمان برنامه کنسول توسعه دهنده: راهنمای بهینه سازی – کمک برای ترجمه – ردیابی ارجاع – طریقه استفاده ارائه نسخه بتا و اجرای صحنه پشتیبانی از ساخت مبتنی بر Gradle رفع و عیب یابی مخصوص اندروید ابزار لینت برای گرفتن عملکرد، قابلیت استفاده، نسخه سازگار با مشکلات دیگر قابلیت Proguard و امضای برنامه مبتنی بر الگوی wizard برای ایجاد طرح اندروید و اجزای مشترک ویرایشگر طرح بندی غنی که به شما اجازه کشیدن و رها کردن UI کامنت‌ها را می‌دهند. گزینه‌ای برای تنظیمات پیش نمایش طرح بندی در صفحه نمایش چندگانه با سپاس فراوان فرزاد سرسیفی
  13. چگونه از Iterator استفاده کنیم ؟ Iterator زمانی استفاده می شود که شما می خواهید در یک چرخه به اجزای یک مجموعه دسترسی داشته باشد. برای مثال ممکن است که شما بخواهید از یک از اجزا را نشان دهید. ساده ترین راه این کار این است که از یک تکرار استفاده کنید.Iterator شما را قادر می سازد تا از طریق یک چرخه،عناصر مورد نظر را بگیرید یا حذف کنید. متدهایIterator : ( ) boolean hasNext = اگر عناصر بیشتری وجود داشته باشد true در غیر اینصورت false بر می گرداند. ( ) Object next = عنصر بعدی را بازمی گرداند اگر یک عنصر بعدی وجود نداشته باشد NoSuchElementException را برمی گرداند. ( ) void remove = عنصر فعلی را حذف می کند. در اینجا یک مثال از هر دو Iterator و ListIterator را نشان می دهید. که از ArrayList استفاده شده است، public class IteratorDemo { // Create an array list ArrayList al = new ArrayList(); // add elements to the array list al.add("C"); al.add("A"); al.add("E"); al.add("B"); al.add("D"); al.add("F"); // Use iterator to display contents of al System.out.print("Original contents of al: "); Iterator itr = al.iterator(); while(itr.hasNext()) { Object element = itr.next(); System.out.print(element + " "); } System.out.println(); // Modify objects being iterated ListIterator litr = al.listIterator(); while(litr.hasNext()) { Object element = litr.next(); litr.set(element + "+"); } System.out.print("Modified contents of al: "); itr = al.iterator(); while(itr.hasNext()) { Object element = itr.next(); System.out.print(element + " "); } System.out.println(); // Now, display the list backwards System.out.print("Modified list backwards: "); while(litr.hasPrevious()) { Object element = litr.previous(); System.out.print(element + " "); } System.out.println(); } Output: Original contents of al: C A E B D F Modified contents of al: C+ A+ E+ B+ D+ F+ Modified list backwards: F+ D+ B+ E+ A+ C+
  14. محدودیت ۶۵K متدها یکی از مشکلاتی است که کاربران با آن مواجه می شوند و multidexing به عنوان روشی برای این مشکل پیشنهاد شده است. Multidexing راه حلی بسیار خوبی از سوی گوگل است، راه اندازی multidex Multidexing یک راه حل کامل و همراه با مستندسازی های خوب است. به منظور بکارگیری multidex در پروژه پیشنهاد می شود که نگاهی به Android Developer site بیندازید، my Github نیز یک پروژه نمونه را برای آشنایی بیشتر در اختیار شما قرار می دهد. تاثیر multidex بر کارآیی اپلیکیشن در هنگام راه اندازی برخی از کلاس ها در بازه زمانی بین شروع اپلیکیشن و نمایش تمامی عکس ها توسط Proguard شناسایی نمی شوند در حالی که در فایل dex اصلی ذخیره شده اند. سوالی که مطرح می شود این است که چگونه از لود شدن این کلاس ها در حین راه اندازی اپلیکیشن مطلع شویم. خوشبختانه متدی به نام findLoadedClass در ClassLoader وجود دارد، کار لازم بررسی ران تایم پس از پایان راه اندازی اپلیکیشن می باشد. پس از آن هر کلاسی که در فایل dex دوم ذخیره شده و در حین راه اندازی اپلیکیشن بارگذاری می شود به فایل dex اصلی جابجا شده و نام کلاس در فایل multidex.keep افزوده می شود. استفاده از multindex در gradle برنامه : android { compileSdkVersion 21 buildToolsVersion "21.1.0" defaultConfig { ... minSdkVersion 14 targetSdkVersion 21 ... // Change 1: Enabling multidex support. multiDexEnabled true } ... } //Change 2: If your minSdkVersion is lower than 21 then add below dependency dependencies { compile 'com.android.support:multidex:1.0.0' ..... ..... } استفاده ار کلاس multindex : public class YouApplication extends MultiDexApplication { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } } در نهایت استفاده آن را در برنامه : <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.android.multidex.myapplication"> <application ... android:name="android.support.multidex.MultiDexApplication"> ... </application> </manifest>
  15. با آموزش کامل RecyclerView در اندروید در خدمت شما دوستان عزیز هستیم در این آموزش نحوه استفاده از ریسایکلر ویو و نحوه استفاده از cardview و نحوه استفاده از کتابخانه Picasso برای لود تصاویر از اینترنت توضیح داده شده است. یک بار برای همیشه یاد بگیرید برای مشاهده کلیک کنید
  16. برای بهتر متوجه شدن Annotation ها در اندروید باید اول با مفهومی به اسم فراداده یا Metadata آشنا بشیم. فرا داده، به داده هایی گفته میشه که در مورد داده های دیگه به ما اطلاعاتی رو میدن. برای اینکه بتونیم از انوتیشن ها استفاده کنیم کافیه کد زیر رو توی فایل gradle پروژه قرار بدیم: compile 'com.android.support:support-annotations:<latest-library-version>' چند انوتیشن پر کاربرد در اندروید Nullness Annotations / انوتیشن تهی بودن Resource Annotations / انوتیشن های مربوط به منابع Thread Annotations / انوتیشن های مربوط به Thread Value Constraints Annotations / انوتیشن های مربوط به اجازه دهی (دسترسی) انوتیشن تهی بودن دو انوتیشن @Nullable و @NonNull برای چک کردن تهی بودن یک مقدار و یا پارامتر استفاده میشن. @Nullable : نشون دهنه ی مقدار و یا پارامتری هست که میتونه مقدار تهی رو بپذیره. @NonNull : این انوتیشن برعکس قبلیش هست و برای چک کردن مقادیری که نمی تونن تهی باشن استفاده میشه. //pass a null argument to a method annotated as @NonNull doubleNumber(null); public int doubleNumber(@NonNull int num) { return num * 2; } و برای صدا زدن این متد int number=doubleNumber(number); انوتیشن های مربوط به منابع توی اندروید منابع (Resource) مختلفی مثل drawable, integer,String وجود داره و با استفاده از انوتیشن ها می تونیم نوع این منابع رو، برای اطمینان از درست بودن مقدار، در هنگام پاس دادن چک کنیم. public void setButtonText(@StringRes int id) { //set text on some button } //this will be flagged by the IDE setButtonText(R.drawable.icon); انوتیشن های مربوط به Thread این نوع انوتیشن ها چک می کنن که یک متد در داخل یک نوع ترد خاص صدا زده بشه. که شامل انوتیشین های زیر می باشد: @UiThread @MainThread @WorkerThread @BinderThread @WorkerThread protected abstract Result doInBackground(Params... params); @MainThread protected void onProgressUpdate(Progress... values) { } مثلا اگر از انوتیشن MainThread برای یک متد استفاده کنیم، در صورتی که بخوایم اون متد رو در تردی به جز ترد اصلی صدا بزنیم با یک اخطار روبرو میشیم. انوتیشن های مربوط به اجازه دهی (دسترسی) با استفاده از انوتیشن @RequiresPermission می تونیم از اینکه متد ما دسترسی خاصی (مثلا اجازه ی استفاده از دوربین) رو داره اطمینان حاصل کرد. public void setAlpha(@IntRange(from=0, to=255) int alpha) { //set alpha } تضمین می کند که مقدار پارامتر آلفا بین 0 تا 255 می باشد..
  17. بهترین روش برای تجزیه و تحلیل فرگمنت ها استفاده از Arguments در آندروید می باشد.( setArguments ) چند راه برای تجزیه و تحلیل و انتقال اطلاعات به فرگمنت ها در اندروید وجود دارد. با این حال، هنگامی که این کار را انجام می دهید، باید مراقب باشید و در هنگام نمونه برداری و انتقال داده ها به قطعات باید از روش های اشتباه اجتناب کنید. با این حال، این روش اشتباه است. از آنجا که هنگامی که برنامه شما به پس زمینه ارسال می شود و برنامه های دیگر نیاز به حافظه بیشتر و بیشتر دارند، پس برنامه و منابع آن از حافظه پاک می شود تا فضای جدید را باز کند. import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; /** * Sample fragment to demonstrate the instantiation of fragments with arguments * * Created by Günhan on 28.10.2015. */ public class MyFragment extends Fragment { private String name; private int age; private TextView mNameTextView; private TextView mAgeTextView; public static MyFragment newInstance(String name, int age) { Bundle bundle = new Bundle(); bundle.putString("name", name); bundle.putInt("age", age); MyFragment fragment = new MyFragment(); fragment.setArguments(bundle); return fragment; } private void readBundle(Bundle bundle) { if (bundle != null) { name = bundle.getString("name"); age = bundle.getInt("age"); } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_sample, container, false); mNameTextView = (TextView) view.findViewById(R.id.nameTextView); mAgeTextView = (TextView) view.findViewById(R.id.ageTextView); readBundle(getArguments()); mNameTextView.setText(String.format("Name: %s", name)); mAgeTextView.setText(String.format("Age: %d", age)); return view; } } در این مثال، برای نمایش MyFragment باید از کد زیر استفاده کنید: Fragment fragment = MyFragment.newInstance("OMID", 27);
  18. استفاده از Parcelable یک راه مناسب و مفید برای انتقال یا پاس دادن اطلاعات بین کامپوننت های اندروید می باشد. Parcelable یک مکانیسم سریال سازی است که توسط Android ارائه می شود. برای نوشتن یک شی به صورت Parcelable، باید انرا به اندروید استودیو اضافه کرد. برای این کار می توانید از آدرس زیر کمک بگیرید: http://corochann.com/fast-easy-parcelable-implementation در این اینجا، ما خواهیم ببینیم که چگونه یک شی Parcelable را در یک برنامه Android اجرا کنیم تا اطلاعات پیچیده را از یک اکتیویتی به اکتیویتی دیگر انتقال دهیم. import android.os.Parcel; import android.os.Parcelable; import android.util.Log; public class Student implements Parcelable{ String mSName; int mSAge; String mSAddress; String mSCourse; @Override public int describeContents() { // TODO Auto-generated method stub return 0; } /** * Storing the Student data to Parcel object **/ @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(mSName); dest.writeInt(mSAge); dest.writeString(mSAddress); dest.writeString(mSCourse); } /** * A constructor that initializes the Student object **/ public Student(String sName, int sAge, String sAddress, String sCourse){ this.mSName = sName; this.mSAge = sAge; this.mSAddress = sAddress; this.mSCourse = sCourse; } /** * Retrieving Student data from Parcel object * This constructor is invoked by the method createFromParcel(Parcel source) of * the object CREATOR **/ private Student(Parcel in){ this.mSName = in.readString(); this.mSAge = in.readInt(); this.mSAddress = in.readString(); this.mSCourse = in.readString(); } public static final Parcelable.Creator<Student> CREATOR = new Parcelable.Creator<Student>() { @Override public Student createFromParcel(Parcel source) { return new Student(source); } @Override public Student[] newArray(int size) { return new Student[size]; } }; } import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class StudentViewActivity extends Activity { TextView mTvSName; TextView mTvSAge; TextView mTvSAddress; TextView mTvSCourse; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_student); // Fetching data from a parcelable object passed from MainActivity Student student = getIntent().getParcelableExtra("student"); // Getting reference to TextView tv_sname of the layout file activity_student mTvSName = (TextView)findViewById(R.id.tv_sname); // Getting reference to TextView tv_sage of the layout file activity_student mTvSAge = (TextView) findViewById(R.id.tv_sage); // Getting reference to TextView tv_saddress of the layout file activity_student mTvSAddress = (TextView) findViewById(R.id.tv_saddress); // Getting reference to TextView tv_scourse of the layout file activity_student mTvSCourse = (TextView) findViewById(R.id.tv_scourse); if(student!=null){ mTvSName.setText("Name:"+student.mSName); mTvSAge.setText("Age:"+Integer.toString(student.mSAge)); mTvSAddress.setText("Address:"+student.mSAddress); mTvSCourse.setText("Course:"+student.mSCourse); } } } import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity { EditText mEtSName; EditText mEtSAge; EditText mEtSAddress; EditText mEtSCourse; Button mBtnOk; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Getting a reference to EditText et_sname of the layout activity_main mEtSName = (EditText)findViewById(R.id.et_sname); // Getting a reference to EditText et_sage of the layout activity_main mEtSAge = (EditText)findViewById(R.id.et_sage); // Getting a reference to EditText et_saddres of the layout activity_main mEtSAddress = (EditText)findViewById(R.id.et_saddress); // Getting a reference to EditText et_scourse of the layout activity_main mEtSCourse = (EditText)findViewById(R.id.et_scource); // Getting a reference to Button btn_ok of the layout activity_main mBtnOk = (Button)findViewById(R.id.btn_ok); // Setting onClick event listener for the "OK" button mBtnOk.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // Creating an instance of Student class with user input data Student student = new Student(mEtSName.getText().toString(), Integer.parseInt(mEtSAge.getText().toString()), mEtSAddress.getText().toString(), mEtSCourse.getText().toString()); // Creating an intent to open the activity StudentViewActivity Intent intent = new Intent(getBaseContext(), StudentViewActivity.class); // Passing data as a parecelable object to StudentViewActivity intent.putExtra("student",student); // Opening the activity 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.main, menu); return true; } }
  19. تبدیل تصاویر به صورت circular bitmap (دایره) public Bitmap getCroppedBitmap(Bitmap bitmap) { Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888); Canvas canvas = new Canvas(output); final int color = 0xff424242; final Paint paint = new Paint(); final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); paint.setAntiAlias(true); canvas.drawARGB(0, 0, 0, 0); paint.setColor(color); // canvas.drawRoundRect(rectF, roundPx, roundPx, paint); canvas.drawCircle(bitmap.getWidth() / 2, bitmap.getHeight() / 2, bitmap.getWidth() / 2, paint); paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); canvas.drawBitmap(bitmap, rect, rect, paint); //Bitmap _bmp = Bitmap.createScaledBitmap(output, 60, 60, false); //return _bmp; return output; }
  20. سلام دوستان در این قسمت میخوام با استفاده از کتابخونه متریال دیالوگ،یه دونه ازشون بسازیم خب کتابخونش رو اول اضافه میکنیم compile 'com.afollestad.material-dialogs:core:0.9.4.5' کد سختی نداره اینم نمونش MaterialDialog.Builder builder = new MaterialDialog.Builder(this) .title(R.string.title) .content(R.string.content) .positiveText(R.string.agree); MaterialDialog dialog = builder.build(); dialog.show(); در ضمن برای افزودن دستور هنگام کلیک روی دکمه هاش کافیه دستورات زیر رو بهش اضافه کنین که اینطوری بشه new MaterialDialog.Builder(this) .onPositive(new MaterialDialog.SingleButtonCallback() { @Override public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) { // TODO } }) .onNeutral(new MaterialDialog.SingleButtonCallback() { @Override public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) { // TODO } }) .onNegative(new MaterialDialog.SingleButtonCallback() { @Override public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) { // TODO } }) .onAny(new MaterialDialog.SingleButtonCallback() { @Override public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) { // TODO } }); البته کد دوم فقط دستور برای دکمه ها تعیین میکنه که بایستی کد های اول رو با این مخلوط کنین
  21. سلام میخوام به شما عزیزان این فلوتینگ اکشن رو معرفی کنم.که تصویرش ضمیمه کردم. پیاده سازی: خب اول اونو به لایوت خودمون معرفی میکنیم <android.support.design.widget.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|end" android:layout_margin="@dimen/fab_margin" android:src="@android:drawable/ic_dialog_email" /> البته توجه کنین که باید دوتا کتابخونه زیر رو داشته باشید توی پروژتون compile 'com.android.support:appcompat-v7:23.1.1' compile 'com.android.support:design:23.1.1' خب،حالا مرحله بعدی باید تو کد جاوا براش چیز میز بنویسیم که معرفیش هم اینطوری هست FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // Click action Intent intent = new Intent(MainActivity.this, NewMessageActivity.class); startActivity(intent); } }); امید وارم مفید بوده باشه
  22. سلام اسنک بار رو میخوام یه توضیح مختصر بگم چیز جالیه میتونید به جای Toast استفاده کنین اول این کتابخونه هارو به پروژه اضافه کنین (اگه ندارید) compile 'com.android.support:appcompat-v7:23.0.1' compile 'com.android.support:design:23.0.1' خب حالا میریم یه نمونه سادشو درست کنیم Snackbar snackbar = Snackbar .make(coordinatorLayout, "Welcome to AndroidHive", Snackbar.LENGTH_LONG); snackbar.show(); دستور اول یه اسنک درست میکنه ورودی اولش لایوت صفحه هست.ورودی دوم هم متن پیام و ورودی سوم هم زمان نمایش هست دستور دوم هم کارش نمایش هست. مثال بعدی: Snackbar snackbar = Snackbar .make(coordinatorLayout, "Message is deleted", Snackbar.LENGTH_LONG) .setAction("UNDO", new View.OnClickListener() { @Override public void onClick(View view) { Snackbar snackbar1 = Snackbar.make(coordinatorLayout, "Message is restored!", Snackbar.LENGTH_SHORT); snackbar1.show(); } }); snackbar.show(); خب تفاوت این مثال با قبلی اینه که این علاوه بر نمایش پیام،دستور هم اجرا میکنه به کمک setAction که ورودی اولش متن اون دکمه و ورودی دوم هم دستورات برای اجرای دکمه هست. امید وارم خوب بوده باشه
  23. سلام در این بخش آموزشی ظبط کردم که به وسیله ان می توانید یک تایید موبایل مانند واتساپ ایجاد کنید من سعی کردم آموزش کامل روان و ساده باشه برای همین از جملات سخت و غییر قابل درک استفاده نکرده ام این آموزش به وسیله کتاب خانه رتروفیت می باشد در سمت سرور من از دیتا بیس استفاده نکردم شما میتوانید به راحتی از ان استفاده کنید امید وارم آموزش مفید و کاربردی باشد لینک دانلود : دانلود
  24. با سلام خدمت دوستان عزیز خیلی از دوستان رو دیدم که تلاش میکردن سورس تلگرام را بدون خطا اجرا کنند ولی با مشکل برخورد میکردند تصمیم گرفتم این فیلم آموزشی رو ظبط کنم و برای یاد گیری عزیزان روی سایت قرار بدم با این ففیلم آموزشی شما میتوانید بدون هیچ مشکلی سورس تلگرام را بر روی شبیه ساز و هر نوع گوشی دیگری اجرا کنید آموزش پولی هستش که رایگان شده توسط صاحب آموزش لینک دانلود :دانلود TelegramSource_errors.mp4
  25. معمولا توی برنامه هایی که کار تحلیل صورت می گیره همیشه نیاز به یک نمودار و یا گراف که بتونه به صورت گرافیک مطالب رو نشون بده حس می شه. چون فهم مطلب در این شرایط خیلی راحت تره! ولی هر چند فهمش راحت تره برای مخاطب اما بیچاره برنامه نویس! نه این که کار سختی باشه نه... یه مقداری دوشواری داره. مثلا اگه بخواین به صورت Real Time نمودار کشیده بشه یه ذره کار سخت تر میش ه. یکی از کتابخانه هایی که میشه باهاش توی اندروید نمودار و چارت کشید AChartEngin می باشد. برای کشیدن چارت نیاز به یک View هست که چارت توش نمایش داده می شه از جنس GraphicalView و چند تا Series برای رسم ستون های x , y و خود نمودار و انتخاب داده و .... به کد زیر دقت کنید: import org.achartengine.ChartFactory; import org.achartengine.GraphicalView; import org.achartengine.chart.PointStyle; import org.achartengine.model.XYMultipleSeriesDataset; import org.achartengine.model.XYSeries; import org.achartengine.renderer.XYMultipleSeriesRenderer; import org.achartengine.renderer.XYSeriesRenderer; import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.view.Menu; import android.widget.LinearLayout; public class DrawChart extends Activity { ;private GraphicalView mChart; ;private XYMultipleSeriesDataset mDataset = new XYMultipleSeriesDataset(); ;private XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer(); ;private XYSeries mCurrentSeries; ;private XYSeriesRenderer mCurrentRenderer; (private void initChart() { mCurrentSeries = new XYSeries("Sample Data" ;(mDataset.addSeries(mCurrentSeries); ;(mCurrentRenderer = new XYSeriesRenderer ;();mRenderer.addSeriesRenderer(mCurrentRenderer); } ;(private void addSampleData() { mCurrentSeries.add(1, 2 ;( mCurrentSeries.add(2, 3 ;( mCurrentSeries.add(3, 2 ;( mCurrentSeries.add(4, 5 ;(mCurrentSeries.add(5, 4 ;(mCurrentSeries.add(6, 3 { ;(mCurrentSeries.add(7, 5 @Override } (protected void onCreate(Bundle savedInstanceState ;(super.onCreate(savedInstanceState ;(setContentView(R.layout.activity_test ;( mCurrentRenderer.setColor(Color.GREEN ;( mCurrentRenderer.setPointStyle(PointStyle.DIAMOND ;( mCurrentRenderer.setDisplayChartValues(true ;( mCurrentRenderer.setLineWidth(2 ; { (mCurrentRenderer.setFillPoints(true } ()protected void onResume ;()super.onResume; ;(LinearLayout layout = (LinearLayout) findViewById(R.id.chart ;( if (mChart == null { ;()initChart ;() addSampleData ;( mChart = ChartFactory.getCubeLineChartView(this, mDataset, mRenderer, 0.3f); layout.addView(mChart else { { ;() mChart.repaint در کد بالا می بینید که برای ستون ها و ست کردن داده ها و همچنین خطوط نمودار که با گرفتن داده ها به وجود می آید Series جدا و مرتبط تعریف کردیم. mRender می تواند تمام اطلاعات مربوط به ستون ها از جمله شماره گذاری آنها و مقدار دهی کردن، نوشتن نام هر ستون ، و... بپذیرد. mCurrentRender هم تمام خصوصیات مربوط به نمودار را می پذیرد. البته با استفاده از این کتابخانه می توان انواع نمودار را رسم کرد. برای اطلاعات بیشتر به لینک زیر سر بزنید: http://jaxenter.com/effort-free-graphs-on-android-with-achartengine-46199.html