. پروژه دانشجویی به زبان وی بی دات نتVb.net مقاله رشته کامپیوتر ساخت طرح کارآفرینی و کسب و کار ساخت گزارشکار کارآموزی پروژه دانشجویی به زبان (سی شارپ) C# پروژه دانشجویی به زبان C ++ پروژه
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
دانشجویی به زبان پاسکال Pascal پروژه دانشجویی به زبان (جاوا اسکریپت) Java script پروژه دانشجویی با زبان بیسیک فور اندروید (b4a) پروژه دانشجویی با زبان جی کوری(jquery) پروژه دانشجویی با زبان css پروژه دانشجویی با زبان اچ تی ام ال یا html ترجمه عمومی و تخصصی رشته کامپیوتر پروژه برای اندروید پروژه با استفاده از زبان جاوا ساخت پاورپوینت و اسلاید پروژه دانشجویی و ساخت نمودارهای مهندسی نرم افزار و uml پروژه با زبان برنامه نویسی اسمبلی پروژه دانشجویی ساختمان داده و سیستم عامل پروژه دانشجویی با vb6 پروژه دانشجویی به زبان ویژوال بیسیک پروژه دانشجویی به زبان asp کلاسیک پروژه دانشجویی به زبان asp.net پروژه طراحی سایت با هر زبانی پروژه دانشجویی به زبان (پی اچ پی) php پروژه دانشجویی به زبان vb script پروژه دانشجویی با زبان برنامه نویسی javascript انجام پروژه دانشجویی بصورت سه لایه پروژه های مربوط با پایگاه داده ها یا بانک اطلاعاتی پروژه دانشجویی به زبان sql و اوراکل ایجاد پروژه با my sql پروژه دانشجویی به صورت حرفه ای با فتوشاپ پروژه دانشجویی با multi media builder پروژه دانشجویی با برنامه ها
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
ی auto media studio پروژه دانشجویی با برنامه autorun pro پروژه دانشجویی با flash mx پروژه دانشجویی با زبان q basic ایجاد پروژه های دانشجویی با power point پروژه دانشجویی با بانک اطلاعاتی sqllite ترجمه متون تخصصی کامپیوتر پروژه با زبان نرم افزار اکسل انجام پروژه با زبان اکسس ساخت پروژه با زبان جاوااسکریپت ساخت فروشگاه اینترنتی دانشجویی و تجاری انجام تایپ از روی پی دی اف، عکس، دستخط و غیره و هزاران نوع پروژه دیگر مراحل خرید : ابتدا به شماره تلفن تماس بگیرید یا اس ام اس یا از طریق نرم افزار تلگرام و یا واتس آپ پیام دهید و موضوع پروژه را مطرح کنید، بسته به پروژه، 1 روز تا 5 روز بعد پروژه تحویل شما داده خواهد شد، بعد از اینکه برای شما ارسال شد ، هزینه را به شماره حسابی که برای شما ایمیل می شود ، واریز کنید. اگر زبان برنامه نویسی شما یا درخواست شما در لیست بالا نبود موضوع پروژه خود را به تلگرام، واتس آپ یا ایمیل ما ارسال کنید. تلفن: آی دی تلگرام: یمیل: همراه با مشاوره رایگان چنانچه می خواهید بدانید پروژه شما توسط این شرکت ساخته می شود یا نه ، 24 ساعته میتوانید با شماره تلفن بصورت رایگان مشاوره کنید . یا به ایمیل ایمیل بزنید . ویژگی برتر قیمت ها را بسته به سختی پروژه از 10 هزار به بالا در نظر می گیریم. تمامی قیمت ها بصورت توافقی می باشد و در صورت نیاز به تخفیف مطرح کنید. تخفیف ویژه برای کافینت ها و دانشجویان زمان آماده کردن پروژه با توجه به نیاز شما و توافقی پرداخت هزینه پس از تحویل پروژه رعایت انصاف در هنگام قیمت گذاری برای پروژه کلمات کلیدی ساخت، پروژه، دانشجویی، رشته، کامیپوتر، طراحی ساخت، خرید، فروش، دانلود، سفارش، پروژه، رشته، کامپیوتر، برنامه نویسی، ارزان، قیمت، کم، سریع، گزارشکار، ویژوال، سی،شارپ، جی، کوری، مقاله، ترجمه، تایپ، سفارشی، طراحی، اس،کیو، ال، مای،اس،کیو،ال،کمترین، هزینه، داشنجویی، دانشجویی، فناوری اطلاعات
فزار مدیریت کتابخانه با 70 درصد تخفیف ویژه فقط این ماه
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
جدید ترین سیستم اتوماسیون مدیریت کتابخانه
کمک به انجام پروژه های دانشجویی در طراحی وب سایت و نرم افزار
گروه نرم افزار ی دهکده آماده کمک و آموزش جهت انجام پروژه های دانشجویی شما عزیزان میباشد .
برای کمک گرفتن و انجام پروژه های دانشجویی خود می توانید روی ما حساب کنید!
انجام پروژه های دانشجویی توسط تیم پروژه های دانشجویی گروه نرم افزاری دهکده به بهترین نحو ممکن پیاده سازی ، و تحویل داده می شود.
هدف کمک به شما برای انجام پروژهایتان و خارج شدن از سر درگمیست. تیم پروژه دانشجویی دهکده در کمترین زمان ممکن و قیمتی متناسب پروژه را تحویل می دهد.
موارد انجام پروژه های دانشجویی که میتوانید روی ما حساب کنید :
پروژه های دانشجویی طراحی و تولید اپلیکیشن های اندروید و موبایل
پروژه های دانشجویی طراحی وب سایت و پرتال با php
پروژه های دانشجویی طراحی وب سایت با ASP.NET
پروژه های دانشجویی طراحی و تولید صفحات وب
پروژه های ساخت وب سایت با cms جوملا و wordpress
پروژه های ساخت برنامه های ویندوزی با C# و vb
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
web disign 5
سفارش پروژه دانشجویی :
طراحی وب سایت های دانشجویی و نرم افزار و آموزش نکات و مستندات پروژه در جهت یادگیری دانشجویان عزیزتخصص ماست
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
نت ها (Fragment) در اندروید
فرگمنت (Fragment) چیست
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
Fragment (فرگمنت) را می توان به عنوان یک زیر مجموعه و یا یک بخش از اکتیویتی (sub-activity) در نظر گرفت که در نهایت قسمتی از رابط کاربری را تشکیل داده و به واسطه آن یک رابط کاربری چند قسمتی ایجاد می شود. فرگمنت در اندروید مشابه آنچه قبلا برای اکتیویتی ها آموختیم، چرخه حیات و رفتار خاص خود را دارد، رویدادهای ورودی را دریافت می کند و از دو قسمت xml (لایه واسط کاربری) و کد عملیاتی (java) تشکیل شده است. هر اکتیویتی می تواند چندین فرگمنت را در خود جای دهد و هر فرگمنت می تواند در چندین اکتیویتی استفاده شود. بنابراین فرگمنت به تنهایی قابلیت اجرا ندارد و به اکتیویتی والد و چرخه حیات آن وابسته است. فرگمنت از API 11 (اندروید Honeycomb) اضافه شد.
چرخه حیات فرگمنت (Fragment Lifecycle)
فرگمنت هم مانند اکتیویتی چرخه حیات خاص خود را دارد که تا حد زیادی مشابه چرخه حیات اکتیویتی است. خوب است ابتدا مروری بر این چرخه حیات داشته باشیم.
چرخه حیات فرگمنت
()onAttach : این متد هنگامی که فرگمنت به اکتیویتی اضافه شده خوانده می شود.
()onCreate : این متد برای مقداردهی در هنگام ساخت فرگمنت فراخوانی می شود.
()onCreateView : این متد زمانی فراخوانده می شود که فرگمنت ایجاد شده و آماده ساخت واسط کاربری (UI) است. در اکتیویتی این وظیفه بر عهده onCreate() بود.
()onActivityCreated : این متد در زمانی فراخوانده می شود که اکتیویتی میزبان فرگمنت اجرا شده است.
()onStart : این متد زمانی فراخوانده می شود که رابط کاربری فرگمنت آماده نمایش است.
()onResume : در این زمان فرگمنت فعال است.
()onPause و ()onStop : این متد در زمان پایان فعالیت فرگمنت اجرا می شود و اگر لازم است چیزی ذخیره شود در این مرحله باید انجام داد.
()onDestroyView : این متد زمانی فراخوانده می شود که UI فرگمنت از اکتیویتی حذف می شود.
()onDestroy : در زمان انتهای حیات فرگمنت این متد اجرا می شود.
()onDetach : زمانی فراخوانده می شود که فرگمنت به طور کامل از اکتیویتی میزبان خود جدا شده است.
از مفاهیم فاصله گرفته و با ذکر مثالهایی، آموزش را ادامه می دهم.
پروژه شماره یک (فرگمنت های استاتیک)
شاید ساده ترین مثال، همان اپلیکیشن کتاب باشد که اگر قبلا در مورد فرگمنت در وب جستجو کرده باشید به احتمال زیاد با آن برخورد کرده اید.
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
Fragment example for news application
تصویر بالا یک تلفن هوشمند و یک تبلت را نشان می دهد. قصد دارم یک کتابچه اندرویدی توسعه بدهم. حالت ساده و ابتدایی این است که چینش اجزاء رابط کاربری در همه اندازه ها و حالت های مختلف صفحه نمایش، یکسان باشد. اما از نظر UX (تجربه کاربری) این امر پسندیده نبوده و باید حالتهای متفاوتی را برای اندازه های مختلف صفحه نمایش در نظر بگیریم تا تمامی کاربران تجربه خوبی هنگام تعامل با برنامه ما داشته باشند.
نکته : تجربه کاربری (UX) مفهومی است که در کنار مفهوم رابط کاربری (UI) مدتیست مورد توجه توسعه دهندگان وب و اپلیکیشن قرار گرفته. به طور خلاصه نحوه چینش عناصر، رنگهای بکار رفته و هرآنچه که باعث می شود تا کاربر ارتباط بهتری با محصول ما برقرار کند، در استفاده از بخش های مختلف آن دچار سردرگمی نشده و در نهایت تعامل رضایت بخشی را تجربه کرده باشد، همگی در حوزه تجربه کاربری قرار می گیرد. توصیه می کنم چند دقیقه ای وقت گذاشته و در این خصوص جستجو و مطالعه کنید.
اپلیکیشن کتاب ما شامل یک لیست موضوعی است که کاربر با انتخاب هریک از گزینه های موجود در لیست، به متن مربوط به آن هدایت می شود. در صفحات عمودی (Portrait) و همچنین صفحات کوچک، حالت مطلوب این است که در صفحه اصلی فقط لیست موضوعات نمایش داده شود و کاربر با انتخاب هر گزینه، برای مطالعه متن به صفحه جدید منتقل شود که به صورت کامل متن را نمایش داده و خبری از لیست موضوعات نیست. اما این حالت برای تبلت و در حالت افقی (Landscape) شاید منطقی به نظر نرسد و پذیرفتنی نیست که یک صفحه عریض بخواهد فقط چند کلمه را در هر سطر نمایش دهد. اینجا گزینه مطلوب این است که لیست و متن، هر دو را در کنار هم برای کاربر نمایش دهیم. هر موضوعی که کاربر انتخاب کرد، متن آن در کنار لیست نشان داده شود.
برای تحقق این هدف، از فرگمنت استفاده می کنیم. با بکارگیری فرگمنت، نیازی به تعریف چندباره لیست و قسمت مربوط به نمایش متن در اکتیویتی های مختلف نداریم و تنها کافیست یکبار آنها را در دو فرگمنت مجزا ایجاد کرده و سپس به تعداد لازم و در اکتیویتی های مختلف، فرگمنتها را فراخوانی کنیم.
یک پروژه با نام FragmentOne و API 16 می سازم. در زمان تهیه این آموزش بر اساس آمار گوگل حدود ۹۶ درصد دیوایس های اندرویدی فعال، شامل نسخه ۱۶ و بالاتر اندروید می شوند و من ترجیح میدهم پروژه خود را روی این ورژن پیاده سازی کنم.
در این مثال من وارد جزئیات از جمله لیست و متن موضوعات نمی شوم و به آشنایی با نحوه پیاده سازی فرگمنت ها بسنده می کنم.
فرگمنت ها به دو صورت ایستا (Static) و پویا (Dynamic) به اکتیویتی اضافه می شوند که در این پروژه من فرگمنتها را به صورت ایستا استفاده می کنم.
روی فولدر app پروژه راست کلیک کرده و در مسیر New > Fragment یک فرگمنت خالی (Blank) انتخاب می کنم:
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
اضافه کردن فرگمنت به پروژه اندروید
در مرحله بعد نام فرگمنت را تعیین می کنم. من برای این فرگمنت نام frg1 را انتخاب کردم:
تعیین نام فرگمنت
با انتخاب گزینه Create layout XML ، لایه رابط کاربری این فرگمنت به صورت خودکار ساخته شده و نیاز به ساخت دستی آن نیست. اندروید استودیو نام Layout را بر اساس نام فرگمنت تعیین می کند که نیازی به تغییر آن نمی بینم. در پایان دو گزینه به صورت پیش فرض انتخاب شده که من فعلا به متدهای اضافی نیازی ندارم و تیک هر دو را برمیدارم. با زدن گزینه Finish، فرگمنت ایجاد می شود.
کد frg1.java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package ir.android_studio.fragmentone;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class frg1 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_frg1, container, false);
}
}
(برای خلوت شدن محیط کار من متد سازنده را به صورت دستی حذف کردم)
کد fragment_frg1.mxl:
1
2
3
4
5
6
7
8
9
10
11
12
13
<FrameLayout 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="ir.android_studio.fragmentone.frg1">
<!-- TODO: Update blank fragment layout -->
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/hello_blank_fragment" />
</FrameLayout>
به ایمپورت های فرگمنت دقت کنید. دو کلاس android.support.v4.app.Fragment و android.view.LayoutInflater در لیست قرار دارند. قبلا گفتیم فرگمنت در API 11 به اندروید اضافه شده و برای استفاده از آن در نسخه های پایینتر لازم است به جای کلاس android.app.Fragment ، از کلاس android.support.v4.app.Fragment استفاده کنیم تا به واسطه کتابخانه Support امکان استفاده از آن میسر شود. البته در حال حاضر توسعه اپلیکیشن برای نسخه های ۱۱ به پایین توجیهی ندارد. من هم هنگام ساخت پروژه MinSDK را برابر ۱۶ قرار دادم. با این حال اندروید استودیو به صورت پیش فرض این کلاس را اضافه کرده که تفاوتی نمی کند و نیازی به تغییر نیست. در ادامه ملاحظه می کنید کلاس frg1 از Fragment ارث بری کرده است.
برای اتصال لایه xml به فرگمنت و نمایش آن، لازم است متد onCreateView را Override کنیم (مشابه اکتیویتی با این تفاوت که در آنجا متد onCreate استفاده می شد). در نهایت با شئ ای که از LayoutInflater ساخته شده لایه R.layout.fragment_frg1 به فرگمنت متصل شده است.
UI این فرگمنت شامل یک FrameLayout (از FrameLayout برای چهارچوب بندی در اندروید استفاده می شود) است که تنها یک TextView داخل آن قرار گرفته. برای این پروژه هم فعلا به چیز بیشتری نیاز ندارم. فقط برای تشخیص دو فرگمنت از یکدیگر، برای هرکدام متن و رنگ پس زمینه متمایز تعریف می کنم. مشابه قبل یک فرگمنت جدید با نام frg2 ایجاد کرده و Layout ها را مطابق زیر تغییر می دهم:
fragment_frg1.xml:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<FrameLayout 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="ir.android_studio.fragmentone.frg1"
android:background="#bf2e2e">
<!-- TODO: Update blank fragment layout -->
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Fragment A"
android:gravity="center"/>
</FrameLayout>
fragment_frg2.xml:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<FrameLayout 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="ir.android_studio.fragmentone.frg2"
android:background="#1e6ea7">
<!-- TODO: Update blank fragment layout -->
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Fragment B"
android:gravity="center"/>
</FrameLayout>
هدف ما این بود تا در صفحات عادی و پیش فرض (که آنها را به عنوان استثنائات به صورت جداگانه تعریف نکردیم) فقط یک فرگمنت و در صفحات با سایز صفحه نمایش بزرگ (تبلت) و در حالت افقی، هر دو فرگمنت در کنار هم نمایش داده شوند. به سراغ activity_main.xml می روم. با استفاده از به صورت ایستا فرگمنت را به اکتیویتی اضافه می کنم.
فرگمنت ایستا | Static Fragment
1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="utf-8"?>
<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="ir.android_studio.fragmentone.MainActivity">
<fragment
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
فرگمنت به اکتیویتی اضافه شد. عرض و ارتفاع را match_parent تنظیم کردم تا فرگمنت تمام اکتیویتی را به خود اختصاص دهد. (دقت کنید ممکن است اختصاص دهم که با استفاده از خاصیت android:name امکانپذیر است:
خاصیت name فرگمنت
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
مقدار این خاصیت را برابر نام کلاسی قرار می دهم که می خواهم نمایش داده شود. اندروید استودیو لیست فرگمنت ها را نمایش داده و نیازی به وارد کردن دستی نیست. با این حال اگر لازم شد نام را خودتان وارد کنید، ترکیب PackageName.FragmentClass است. به هر فرگمنت می بایست یک id نیز اختصاص داد که fr1 را انتخاب می کنم:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="utf-8"?>
<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="ir.android_studio.fragmentone.MainActivity">
<fragment
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/fr1"
android:name="ir.android_studio.fragmentone.frg1" />
</RelativeLayout>
اگر Layout را در حالت Design قرار دهید ارور زیر را مشاهده خواهید کرد:
ارور نمایش فرگمنت در محیط توسعه
مضمون پیغام این است که اگر مایلم در حالت Preview و در محیط توسعه هم فرگمنت انتخاب شده نمایش داده شود، با کلیک روی Use @layout/fragment_frg1 خاصیت مربوط به آن به اضافه می شود که به دلخواه توسعه دهنده است و استفاده یا عدم استفاده از آن تاثیری در عملکرد اپلیکیشن برای کاربر ندارد و صرفا محدود به محیط اندروید استودیو است. با تایید این پیغام، خط زیر به فرگمنت اضافه می شود:
1
tools:layout="@layout/fragment_frg1"
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
حالا در محیط توسعه هم فرگمنت نمایش داده می شود:
خاصیت tools فرگمنت
اضافه کردن به اکتیویتی را به صورت Drag & Drop هم میشود انجام داد:
اضافه کردن فرگمنت به اکتیویتی به شیوه Drag & Drop
پس از کشیدن بر روی صفحه، پنجره ای باز می شود که فرگمنت مدنظر را انتخاب کرده و سپس در قسمت Properties سایر تنظیمات از جمله اختصاص id، ارتفاع و … را انجام می دهیم.
چون در این آموزش صرفا نحوه اضافه کردن فرگمنتها را بررسی می کنیم، از انتقال به Fragment B صرف نظر می کنم و به سراغ مرحله دوم می روم، یعنی ساخت رابط کاربری مناسب تبلت ها در حالت افقی. در اندروید سایز صفحه نمایش در ۴ دسته Small، Normal، Large و X-Large قرار می گیرد. قصد ندارم در این آموزش به مبحث سایز بندی بپردازم و صرفا جهت آشنایی با فرگمنت ها به صورت اجمالی ساخت Layout جدید را توضیح می دهم. صفحه نمایش تبلت در رده سایز Large قرار می گیرد. از طرفی قصد دارم لایه جدید بر روی صفحه ای که در حالت افقی (Landscape) قرار گرفته اعمال شود. بنابراین در کنار پوشه layout پروژه، یک پوشه جدید با نام layout-large-land می سازم و یک کپی از activity_main.xml اصلی داخل آن قرار می دهم.
اضافه کردن پوشه جدید به پروژه اندرویدی
برای ساخت پوشه جدید، روی res راست کلیک کرده و Android resource directory را انتخاب می کنم. حالا با انتخاب layout به عنوان Resource type و تکمیل نام دایرکتوری، پوشه جدید را می سازم:
اضافه کردن لایه سایز Large و Landscape به پروژه
علاوه بر نوشتن دستی نام فولدر، با انتخاب گزینه های Size و Orientation و انتقال آنها به قسمت Chosen qualifiers و در نهایت انتخاب گزینه مدنظر، نام دایرکتوری به صورت خودکار تکمیل می شود (ضمن اینکه در خارج از محیط اندروید استودیو و در محل ذخیره پروژه هم به راحتی می توان دایرکتوری موردنیاز را به پروژه اضافه کرد).
حالا یک کپی از activity_main.xml ساخته و به دایرکتوری layout-large-land منتقل می کنم. هنگامی که ساختار نمایش پروژه روی Android تنظیم شده، دایرکتوری که جدید ساختیم نمایش داده نمی شود و لازم است حالت نمایش پروژه را موقتا از Android به Project تغییر داده و فایل کپی شده را روی دایرکتوری مدنظر Paste کنیم (و یا باز هم در محل ذخیره پروژه در سیستم عامل خود، عمل کپی فایل به دایرکتوری را انجام دهیم).
لیست دایرکتوری ها
البته روش ساده تری هم هست. وقتی من activity_main.xml را کپی کرده و یک دایرکتوری خالی هم وجود دارد، اندروید استودیو هدف من را تشخیص می دهد و کافیست در همان حالت نمایش Android، روی layout راست کلیک و Paste کنیم. پنجره ای باز می شود که مسیر انتقال را layout-large-land معرفی می کند که با تایید آن، انتقال به درستی انجام می شود:
اضافه کردن activity_main.xml به دایرکتوری layout-large-land
اضافه کردن activity_main.xml به دایرکتوری layout-large-land
اضافه کردن activity_main.xml به دایرکتوری layout-large-land
نکته : الزامی به کپی کردن layout قبلی و انتقال به دایرکتوری جدید نیست و در واقع این عمل همان ساخت layout جدید است. در مواردی که لایه ما کامپوننت های متعددی داشته و قصد اعمال تغییرات جزئی داشته باشیم، احتمالا کپی راه حل ساده تری است اما در مواردی مثل پروژه فعلی که یک اکتیویتی ساده داریم و علاوه بر آن، لایه پیش فرض را از جنس RelativeLayout ساخته بودیم که لازم است در حالت Large Landscape لایه را از نوع LinearLayout بسازیم، ساخت یک لایه جدید و همنام با لایه پیش فرض منطقی خواهد بود:
Layout > New > Resource File
اگر می خواهید لایه جدید را به این شیوه بسازید و قبلا آنرا توسط کپی از لایه پیش فرض ساخته اید، کافیست آنرا حذف کرده و مجدد از این طریق اقدام کنید.
لایه جدید ایجاد شد و در قسمت Preview به صورت افقی نمایش داده شده است:
لایه افقی Landscape
1
2
3
4
5
6
7
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
</LinearLayout>
حالا دو activity_main.xml داریم که دومی مقابل آن large-land قید شده. هنگامی که برنامه روی دیوایسی با سایز صفحه نمایش Large اجرا شود و دیوایس در حالت افقی قرار گرفته باشد، به جای activity_main.xml پیش فرض، activity_main.xml موجود در دایرکتوری layout-large-land برای کاربر رندر می شود. پس در این لایه دو را به صورت افقی در کنار یکدیگر قرار می دهم:
1
2
3
4
5
6
7
8
9
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com10
11
12
13
14
15
16
17
18
19
20
21
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
android:name="ir.android_studio.fragmentone.frg1"
android:id="@+id/fr1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"/>
<fragment
android:name="ir.android_studio.fragmentone.frg2"
android:id="@+id/fr2"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2" />
</LinearLayout>
خاصیت orientation را به horizontal تغییر دادم تا دو فرگمنت به صورت افقی در کنار هم قرار بگیرند. با وزن دهی (layout_weight) قبلا در فصل پنجم آشنا شدیم.
حالا پروژه آماده ی اجراست. من یک دیوایس Tablet روی جنی موشن ساخته ام و پروژه را روی آن اجرا می کنم. دیوایس در ابتدا روی حالت عمودی قرار دارد:
اجرای پروژه اندروید روی دیوایس با صفحه نمایش عمودی
همانطور که انتظار داشتم فقط یک فرگمنت نمایش داده می شود (Fragment A). در مرحله بعد با کلیک روی گزینه تنظیمات دیوایس (سه نقطه) و یا Ctrl + F11 دیوایس در حالت افقی قرار می گیرد:
چرخش صفحه نمایش دیوایس به Landscape
صفحه نمایش افقی Landscape
با چرخش دیوایس، Layout موجود در دایرکتوری large-land به درستی جایگزین layout اصلی پروژه شد.
پروژه شماره دو (فرگمنت های داینامیک)
در مثال قبل با فرگمنت های استاتیک آشنا شدیم. تفاوت فرگمنت پویا با استاتیک در این است که در فرگمنت پویا در زمان اجرا می توان یک فرگمنت را جایگزین فرگمنت قبلی کرد. یعنی می توان در یک اکتیویتی چند محتوای متفاوت را بنا به نیازی که کاربر دارد نمایش داد بدون اینکه لازم باشد از یک اکتیویتی به اکتیویتی دیگر منتقل شود. یا به عنوان مثال به جای اینکه به وسیله Intent کاربر به برنامه پیش فرض دوربین دیوایس منتقل شده، عکس گرفته و مجدد به برنامه برگردد و روی تصویر ویرایش انجام دهد، تمامی مراحل درون برنامه انجام شود (مشابه نرم افزارهای بارکدخوان و…).
در این مثال قصد دارم فرگمنت های پویا را با یک مثال ساده معرفی کنم.
از پروژه قبل خارج شده (File > Close Project) و یک پروژه جدید با نام FragmentTwo می سازم. پروژه من شامل یک اکتیویتی و دو فرگمنت است. درون اکتیویتی دو Button و یک FrameLayout وجود دارد که با لمس هریک از دکمه ها، یکی از دو فرگمنت در FrameLayout نمایش داده شده و جایگزین فرگمنت قبل می شود.
ابتدا دو فرگمنت با نامهای FrgOne و FrgTwo عینا مشابه پروژه قبل اضافه می کنم. در مرحله بعد لایه activity_main.xml را همانگونه که در پاراگراف بالا عنوان شد می سازم. اکتیویتی را به نوع LinearLayout و چینش عمودی تغییر داده و به هریک از عناصر یک id اختصاص داده ام.
1
2
3
4
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
tools:context="ir.android_studio.fragmenttwo.MainActivity">
<Button
android:id="@+id/btn_a"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Select Fragment A" />
<Button
android:id="@+id/btn_b"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Select Fragment B" />
<FrameLayout
android:id="@+id/frg_holder"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
</LinearLayout>
رابط کاربری اکتیویتی activity_main.xml
سپس Button ها را داخل اکتیویتی تعریف کرده و دو متد مربوط به دکمه ها را نیز اضافه می کنم:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package ir.android_studio.fragmenttwo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
Button btnOne, btnTwo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnOne = (Button) findViewById(R.id.btn_a);
btnTwo = (Button) findViewById(R.id.btn_b);
btnOne.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
btnTwo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
}
نکته : برای اینکه فرگمنت اجرا شود، باید اکتیویتی والد آن حتما از FragmentActivity یا AppCompatActivity ارث بری شده باشد.
ابتدا متد یکی از دکمه ها را کامل کرده و سپس به توضیح جزئیات می پردازم.
1
2
3
4
5
6
7
8
9
10
11
12
btnOne.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FrgOne frg1 = new FrgOne();
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.frg_holder, frg1);
ft.commit();
}
});
در خط اول ابتدا یک نمونه از فرگمنت FrgOne با نام frg1 ساختم. در قدم بعد برای مدیریت فرگمنت ها به نمونه ای از کلاس FragmentManager نیاز دارم:
کلاس FragmentManager
دو گزینه در اختیار داریم که اولی مربوط به کتابخانه Support می شود. همین را انتخاب می کنم. برای گرفتن آن دو گزینه getSupportFragmentManager() یا getFragmentManager() قرار می گیرد که مسلما باید getSupportFragmentManager() را انتخاب کنم. برای تبادل پیامهای فرگمنت در اکتیویتی (add، remove و replace) باید از FragmentTransaction استفاده کنیم که نام ft را درنظر گرفتم و در مقابل با متد beginTransaction() فرگمنت آماده جایگزینی می شود. در خط بعد، از متد replace استفاده کرده ام که دو ورودی می گیرد. اولی، id مربوط به FrameLayout که قرار است فرگمنت در آن جایگذاری شود و دوم، نام فرگمنت موردنظر. در نهایت لازم است با دستور commit() انجام این پروسه را آغاز کنیم.
برای دکمه دوم هم به همینصورت کد را تکمیل می کنم با این تفاوت که فرگمنت دوم باید جایگزین شود.
کد نهاییی MainActivity.java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com38
39
40
41
42
43
44
45
46
47
48
49
package ir.android_studio.fragmenttwo;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
Button btnOne, btnTwo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnOne = (Button) findViewById(R.id.btn_a);
btnTwo = (Button) findViewById(R.id.btn_b);
btnOne.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FrgOne frg1 = new FrgOne();
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.frg_holder, frg1);
ft.commit();
}
});
btnTwo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FrgTwo frg2 = new FrgTwo();
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.frg_holder, frg2);
ft.commit();
}
});
}
}
پروژه را اجرا می کنم:
اجرای پروژه اندرویدی
در ابتدا ناحیه مربوط به FrameLayout خالی است به این معنی که هیچ فرگمنتی در آن جایگذاری نشده. انتظار دارم با کلیک روی دکمه ها، فرگمنت های مرتبط نمایش داده شوند:
نمایش فرگمنت اول
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
نمایش فرگمنت دوم
2017 ساختمانی, صنعتی, نمونه کارها هیچ دیدگاهی برای سیستم مدیریت پروژه از راه دور ثبت نشده
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
سیستم مدیریت پروژه از راه دور یا RPM ( Remote Project Management ) با هدف برطرف کردن مشکلات مذکور معرفی می شود ، که در اجرای این مهم از دو بازوی اصلی برنامهریزی و کنترل پروژه در قالب وب سرویس و اپلیکیشن های موبایل ( اندروید و آی او اس ) بهره میگیرد و لذا به ابزاری کاربردی و قدرتمند برای کنترل زمان، هزینه ، مدیریت منابع و نیروی انسانی تبدیل گردیده است
هدف اصلی این سیستم
به روز رسانی فعالیتهای پروژه، گزارش گیری ، ثبت مشکلات و ثبت عکس های پروژه از طریق اپلیکیشن های موبایل
ایجاد بستری مطمئن و مناسب برای مدیریت پروژه با استفاده از مدیریت فعالیت ها، کنترل منابع و … می باشد.
کاربران با کمترین دانش مدیریت پروژه قادر خواهند بود به سادگی پروژه ها، وظایف، منابع و … را برنامه ریزی و از روند انجام پروژه گزارش گیری و مستندات خود را مدیریت نمایند.
شناخت و حرکت عوامل اجرایی مطابق با برنامه زمانبندی.
امکان ارائه برنامه زمانبندی بصورت روزانه، هفتگی و ماهیانه به عوامل اجرایی پروژه ها بصورت داده GPRS وSMS و دریافت توسط نرم افزار های موبایل .
استفاده بهینه از نفرات واحد برنامه ریزی و کنترل پروژه در تهیه و تصحیح برنامه های زمانبندی بسیار قوی بجای فعالیت های وقت گیر، ثبت پیشرفت های پروژه و اعمال در نرم افزار های موجود و محاسبه پیشرفت پروژه و چاپ گزارشات مدیریتی.
مشاهده پیشرفت فیزیکی و گزارشات در هر جای دنیا بصورت آنلاین و اتخاذ تصمیمات لازم ( پروژه های در سطح ملی ).
ثبت احجام واقعی انجام شده هر پروژه که برای تهیه صورت وضعیت های پروژه بسیار مفید است.
ثبت مشکلات پروژه به تفکیک زیرپروژه ،فعالیت و آیتم های برنامه زمانبندی جهت بررسی تاخیرات پروژه ها
سیستم RPM با ارزیابی و شناخت عمیق از زیر ساختار ها و گلوگاه ها ، بستری را بصورت کاملاً کارشناسانه و فنی برای گروه های اجرایی ، مدیران شرکت و ذینفعان پروژه جهت جلوگیری از اتلاف وقت و همچنین ایجاد فضای تصمیم گیری و ارتقاء مهارت در جهت کنترل هرچه بهتر و ارزیابی و نهایتا ارتقاء بهره وری و کارایی واحد ها را در شرکت ها ایجاد نماید.
ایجاد اولین پروژه اندروی
د09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
ایجاد اولین پروژه اندروید (اندروید استودیو)
در این آموزش قصد دارم یک پروژه اندروید ایجاد کنم، کدهای آنرا توضیح دهم، کمی در پروژه را تحلیل و در مورد نحوه کار برنامه بحث کنم و در آخر از برنامه خروجی بگیرم و برنامه را تست کنم.
ایجاد اولین پروژه اندروید (اندروید استودیو)
پیشنیازها
اکتیویتی های اندروید
جزئیات برنامه نویسی اندروید
برای ایجاد یک پروژه اندروید در اندروید استودیو پس از اجرا شدن نرم افزار Android Studio ، کادر زیر نمایش داده میشود.
ایجاد اولین پروژه اندروید (اندروید استودیو)
سمت چپ این پنجره پروژه های قبلی تان لیست میشوند. سمت راست نیز ۵ گزینه در دسترس هستند که ما برای ایجاد پروژه جدید به اولین گزینه یعنی Start a new Android studio project نیاز داریم. روی آن کلیک کنید.
ایجاد اولین پروژه اندروید (اندروید استودیو)
با نمایش این دیالوگ فرآیند ایجاد پروژه جدید شروع میشود.
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
Application name: این نام، نام اپلیکیشن شما میباشد. از آنجاکه این نام بخشی از نام پکیج برنامه شما بصورت پیشفرض قرار میگیرد، باید این نام را بصورت لاتین وارد کنید. بعدا میتوانید این نام را در جای دیگر (xml) تغییر دهید.
Company domain: این قسمت، نام کمپانی، نام دامنه شرکت یا نام خودتان میتواند قرار بگیرد. این قسمت هم بخشی از نام پکیج شما میباشد.
Package name: نام پکیج یکی از مهمترین قسمتهای این دیالوگ است. درواقع هر برنامه اندرویدی (پروژه اندروید) یک پکیج نام منحصر بفرد دارد که مارکتها و گوشی های اندرویدی این اپلیکیشن ها را فقط با این نام میشناسند.نام گذاری نام پکیج ها هم کاملا شخصی میباشد، فقط باید از قاعده خاصی استفاده شود. برای مثال چون سایت من ir میباشد، و نام این پروژه را My Application قرار دادم، نام پکیج من برای این برنامه نمونه ir.coderoid.myapplication قرار میگیرد. میتوانم آنرا بصورت ir.mahmoud.myapplication نیز قرار دهم.
Project location: در این قسمت مکان فایلهای پروژه تعیین میشود.
روی Next کلیک کنید.
ایجاد اولین پروژه اندروید (اندروید استودیو)
در این قسمت از پروژه اندروید مشخص میکنیم که برای چه نوع دستگاه اندرویدی (گوشی، تبلت/ گجت/تی وی/…) قصد داریم اپلیکیشن بسازیم.
Minimum SDK : حداقل ورژن اندرویدی (حداقل api) که قرار است برنامه ما روی آن اجرا شود. این مقدار مشخص میکند که برنامه ما روی مثلا اندروید ۴٫۰٫۳ به بالا (که طبق آمار گوگل پلی حدود ۹۸٫۳ درصد گوشی های اندرویدی را شامل میشود)، اجازه نصب دارد و اندرویدهای پایین تر از ۴٫۰٫۳ را پوشش نخواهد داد.
حداقل api را مشخص و روی Next کلیک کنید.
ایجاد اولین پروژه اندروید (اندروید استودیو)
در این قسمت میتوانید یک اکتیویتی به پروژه خود اضافه کنید. چون فعلا قرار است یک پروژه ساده ایجاد کنیم، Empty activity را انتخاب کنید و Next را بزنید.
ایجاد اولین پروژه اندروید (اندروید استودیو)
در این قسمت، برای اکتیویتی ای که در قسمت قبل ایجاد کردید، یک نام در قسمت Activity Name وارد کنید. این نام باید لاتین تایپ شود و حرف اول آن نیز بزرگ باشد. با فعال کردن تیک Generate Layout File میتوان یک لی اوت (یا یک صفحه) برای اکتیویتی بسازیم و در قسمت Layout Name نامی برای آن تعیین کنیم.
Backwards Compatibility (AppCompat) : بتازگی ویژگی های بصری زیبایی با عنوان AppCompat به پروژه اندروید اضافه شده است که میتوان با فعال کردن تیک این گزینه از آنها در اکتیویتی خود استفاده کرد.
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
اکنون، با زدن دکمه Finish پروژه شما ساخته میشود.
ایجاد اولین پروژه اندروید (اندروید استودیو)
اکنون، پروژه ای که ساختید در اندروید استودیو باز میشود. در ادامه سعی میکنم شما را با قسمتهای مختلف پروژه آشنا کنم.
ایجاد اولین پروژه اندروید (اندروید استودیو)
فایل های یک پروژه اندروید
تصویر بالا شامل تمام فایلهای پروژه ما هستند. در تصویر بالا تمام فایلهای یک پروژه اندروید را مشاهده میکنید که در زیر به توضیح در مورد آنها خواهیم پرداخت.
app : این پوشه حاوی سه پوشه زیر است:
manifest : این قسمت شامل فایلی بنام AndroidManifest.xml است که برای ویرایش نام برنامه، اعلان همه ی کامپوننتهای برنامه شامل اکتیویتی ها، سرویس ها و … ، قرار دادن برنامه در لیست برنامه های گوشی کاربر، تعیین نقطه ورود به برنامه ، گرفتن مجوزهای استفاده از اینترنت، مخاطبین، دسترسی به حافظه کاربر و … مورد استفاده قرار میگیرد.
Java : تمام کلاس های جاوا در پکیج های جداگانه در این پوشه قرار میگیرند. این قسمت سه پوشه دارد که دوتای آنها (androidTest و test) کاربرد خاصی ندارند و فقط پکیج اولی برای ما اهمیت دارد. در این پوشه یک فایل جاوا بنام MainActivity مشاهده میکنید که همان اکتیویتی است که در پروسه ایجاد پروژه آنرا ایجاد کردیم. اندروید استودیو بصورت پیشفرض این اکتیویتی را نقطه ورود به برنامه تعریف کرده است.
res : این پوشه حاوی تمام منابع برنامه است. منابعی مانند عکسها، فونت ها، مقادیر ثابت و … . این پوشه شامل چند زیرپوشه دیگر است:
drawable : همه منابع کشیدنی (رسم شدنی) شامل تصاویر و پس زمینه ها و … در این قسمت قرار میگیرند.
layout : این قسمت همه ی لی اوت های برنامه را شامل میشود. یک لی اوت در واقع رابط کاربری ثابت یک اکتیویتی میباشد که توسط اکتیویتی مدیریت میشود. لی اوتی که قبلا برای اکتیویتی MainActivity ایجاد کردیم را در این پوشه مشاهده میکنید.
mipmap : این پوشه هم مانند پوشه drawable است که اندروید استودیو از آن برای دسته بندی تصاویر در اندازه های خاص برای گوشی های با اندازه های متفاوت استفاده میکند. این اندازه ها در استانداردهای mdpi، hdpi، xhdpi، xxhdpi و xxxhdpi تفکیک میشوند.
Values: این پوشه حاوی تمام مقادیر ثابت مانند متن ها یا مقادیر رشته ای (strings)، اندازه های ثابت (dimens)، استایل ها (styles)، رنگها و … میباشد.
در پوشه res ، قسمتهای دیگری مانند xml، raw و … نیز قرار میگیرند که درصورت نیاز ایجاد و فایلهای لازم درون آنها قرار میگیرند و مورد استفاده قرار میگیرند.
Gradle: گرادل – gradle شامل فایلی مهم بنام build.gradle(Module:app) است که امکانات زیر را فقط میتوان در این فایل انجام داد:
تغییر نام پکیج برنامه
تغییر نسخه و نام نسخه برنامه
تعیین minSDK و targetSDK برنامه
محافظت از برنامه با proguard
تعیین و اضافه کردن نیازمندی های برنامه (کتابخانه ها و …)
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
حال به توضیح فایلهای کد مهم در هر پروژه اندرویدی میپردازم.
MainActivity.java
ایجاد اولین پروژه اندروید (اندروید استودیو)
کلاس های جاوا در پروژه اندروید
کلاس ها در جاوا باید از قالب خاصی پیروی کنند. همه کلاس ها باید با کلمه کلیدی package و نام پکیج برنامه شروع شوند. بعد از اعلام نام پکیج، باید کلاسهای مورد نیاز را وارد کلاس کنیم تا بتوانیم از آنها استفاده کنیم. کلمه کلیدی import برای اینکار بکار میرود. در اینجا ما دو کلاس بنام های AppCompatActivity (که در پکیج android.support.v7.app قرار دارد) و Bundle (که در پکیج android.os قرار دارد)، را به این کلاس ایمپورت کردیم.
در خط بعد (خط ۶)، ما یک کلاس تعریف میکنیم. با کلمه کلیدی public تعیین میکنیم که این کلاس، کلاسی عمومی است و میتواند در تمام قسمتهای برنامه و توسط کلاسهای دیگر مورد استفاده قرار گیرد. کلمه کلیدی class به نرم افزار میفهماند که میخواهیم یک کلاس تعریف کنیم. MainActivity نام کلاس ما میباشد که اگر توجه کنید با نام فایل کلاس یکی است که این از ملزومات تعریف کلاس اصلی درون یک فایل جاوا است. از آنجا که قرار است یک کامپوننت بنام اکتیویتی ایجاد کنیم و از ویژگی های آن در این کلاس استفاده کنیم یا بعبارت صحیح تر از امکانات کلاس AppCompatActivity ارث بری کنیم، باید آنرا با کلمه کلیدی extends به کلاسمان (MainActivity) معرفی کنیم.
نمونه کاربرد ارث بری از کلاس AppCompatActivity (یا Activity)، متد onCreate() است که یکی از متدهای مهم در چرخه حیات اکتیویتی ایت و به ما اجازه میدهد در هنگام ایجاد شدن یک اکتیویتی کارهایی از قبیل نمایش یک صفحه را انجام دهیم. متدهای دیگر این کلاس عبارتند از: onStart()، onResume()، onPause()، onStop()، onDestroy() و … که در قسمت متدهای چرخه حیات اکیتیویتی بطور کامل توضیح داده شده اند.
پس، ابتدا کلاس را تعریف کردیم و سپس برای اینکه حالت ایجاد شدن اکتیویتی را مدیریت کنیم، متد onCreate() را بازنویسی کردیم و برای نمایش فایل لی اوت activity_main.xml از متد setContentView() استفاده کردیم.
activity_main.xml
ایجاد اولین پروژه اندروید (اندروید استودیو)
رابط کاربری پروژه اندروید
سمت چپ کدهای xml ای هستند که لی اوت سمت راست را ایجاد میکنند. در اندروید رابط کاربری با زبان xml نوشته میشود. کل صفحه یک ConstraintLayout است. این لی اوت یک کانتینر است که دربردارنده ویوهای دیگر صفحه است. کانتینر های اندروید عبارتند از:
LinearLayout
RelativeLayout
FrameLayout
GridLayout
ScrollView
…
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
هستند که هر کدام کاربرد خاصی دارند. در این لی اوت ما فقط از یک TextView برای نمایش یک متن استفاده کردیم. در xml هر ویو دارای ویژگی هایی است. در این تکست ویو، ویژگی های زیر تعیین شده اند:
layout_width : برای تعیین اندازه طول یک ویو بکار میرود.
layout_height : برای تعیین اندازه عرض (ارتفاع) یک ویو بکار میرود.
Text : برای تعیین متن نمایشی ویو بکار میرود
…
توضیحات کاملتر را در قسمت رابط کاربری اندروید مشاهده کنید.
AndroidManifest.xml
ایجاد اولین پروژه اندروید (اندروید استودیو)
مانیفست (فایل AndroidManifest.xml) در پروژه اندروید
فایل مانیفست برنامه که تمام اعلانات و مجوزها و ویژگی های کلی برنامه باید در آن تعریف شوند. در خط سوم نام پکیج برنامه نوشته شده است. در تگ application ویژگی های icon (برای تعیین آیکون برنامه)، label (برای تعیین نام برنامه)، allowbackup (مجوز گرفتن نسخه پشتیبان از برنامه)، supportRtls (پشتیبانی از زبان فارسی – راست به چپ) و theme (تعیین تم برنامه) تعیین شده اند.
درون تگ <application>، یک اکتیویتی که همان اکتیویتی MainActivity است اعلان شده است. همچنین در خط ۱۴ این اکتیویتی بعنوان نقطه ورود برنامه و اکتیویتی اصلی برنامه قرار داده شده است. در خط ۱۶ نیز این اکتیویتی در لیست برنامه های گوشی کاربر قرار داده شده است (پس از نصب).
Build.gradle(Module:app)
ایجاد اولین پروژه اندروید (اندروید استودیو)
فایل گرادل (gradle) در پروژه اندروید
این فایل، گردل اصلی برنامه است که دارای دو تگ است. در قسمت android، اطلاعاتی درمورد نسخه، نام نسخه، حداقل SDK، SDK هدف، آی دی اپلیکیشن یا همان نام پکیج قرار دارد. در قسمت dependencies که قسمت نیازمندی های برنامه است، کتابخانه های مورد نیاز به برنامه اضافه شده اند. مثلا دو کلاسی که در اکتیویتی MainActivity ایمپورت شده اند، چون از خارج از برنامه وارد شده اند، ابتدا در خطوط ۲۷ و ۲۸ در برنامه کامپایل شده اند تا مورد استفاده قرار بگیرند.
نکته: اگر احیاناٌ در build شدن برنامه، خطای testCompile “junit:junit:4.12” ظاهر شد، اینترنت خود را وصل کرده و با نرم افزارهای تغییر آی پی، سعی کنید نرم افزار اندروید استودیو را به سرور توسعه دهندگان گوگل وصل کنید تا نرم افزار بتواند نیازمندی های خود را دانلود و نصب کند.
تست و اجرای پروژه اندروید
برای تست نرم افزار راه های زیادی وجود دارد که من در قسمت شبیه ساز های اندروید توضیحات کاملی داده ام. برای تسریع در آموزش از منوی زیر گزینه Build APK را بزنید تا فایل تستی و نصبی برنامه در اختیارتان قرار بگیرد.
ایجاد اولین پروژه اندروید (اندروید استودیو)
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
این فایل را به گوشی خود منتقل کنید و آنرا نصب و تست کنید. این فایل محصول یا خروجی پروژه شماست.
ایجاد اولین پروژه اندروید (اندروید استودیو)
در این مطلب اطلاعات جامعی در مورد یک پروژه اندروید ارائه شد. امیدوارم مفید واقع شوند.
ر این پست می خواهم تجربه های خودم در این دو سال و چند ماهی که درگیر برنامه نویسی اندروید هستم را با شما در میان بگذارم. ابتدا چند تا توصیه برای کسانی که به امید یک شبه ره صد ساله را رفتن به سمت این شغل آمده اند دارم. برنامه نویسی یکی از سخت ترین مشاغل دنیاست و روز به روز هم به جای آسانتر شدن به سمت سخت تر شدن حرکت می کند. در قدیم مشکلاتی وجود داشت اما به نظر من برنامه نویسی به طور کلی خیلی آسانتر (حداقل برای کسی که می خواست شروع کند) از الان بود. بزرگترین مشکل چند سال قبل که مشکل کوچکی هم نبوده عدم دسترسی به منابع یادگیری و حتی نبودن جایی برای پیدا کردن جواب مشکلاتی که پیش می آمد بود. یا حتی یک مشکل بزرگ دیگر که قبلا وجود داشت نبودن IDE یا محیطهای توسعه نرم افزار بود. در حال حاضر این دو مشکل کاملا حل شده اند اما دانشی که یک برنامه نویس باید داشته باشد به شدت افزایش پیدا کرده است. خب بگذارید برای اینکه شفافتر صحبت کنم با مثال از برنامه نویسی اندروید این موضوع را جلو ببرم. در گذشته برای توسعه اپلیکیشن اندروید شما کافی بود به زبان جاوا تسلط(نسبی) پیدا می کردید، سپس با پلتفرم اندروید که بسیار ساده تر از الان بود آشنایی پیدا می کردید. در گذشته از Maven به عنوان Build Tools در اندروید استفاده می شد اما اکنون از گریدل استفاده می شود که باز هم یادگیری آن سخت تر از Maven است اما به شدت در بلند مدت به نفع برنامه نویس است. در گذشته اپلیکیشن ها به ندرت انیمیشن داشتند. انواع طراحی در توسعه نرم افزار وجود نداشتند(مانند متریال دیزاین، طراحی فلت و ...). امکانات اندروید بسیار کمتر از امکانات کنونی آن بود. حالا به تمام این موارد نوشتن تست برای نرم افزار و همچنین رعایت کردن دیزاین پترن را هم اضافه کنید که حالا بسیار فراگیرتر شده اند. در گذشته RxJava نبود و کار MultiThreading در جاوا و اندروید سخت بود اما اپلیکیشنهای کمی بودند که به این مقوله نیاز داشتند. اما اکنون یادگیری این کتابخانه ها بسیار پراهمیت شده در حالیکه پروسه یادگیری آنها به شدت زمانبر است. ببینید در عمل نمی گویم برنامه نویسی سخت تر شده است، برای کسی که می خواهد شروع کند با دریایی از مطالب روبرو خواهد شد که نمی داند از کجا شروع کند و به کجا برسد. آنقدر باید دانش خود را عمیق و زیاد کنید که در ابتدا شاید بیخیال برنامه نویسی شوید. در یک کلام اگر واقعا به برنامه نویسی علاقه ندارید از همین جا این صفحه را بسته و دیگر این مطلب را ادامه ندهید و به دنبال شغلی دیگر بروید. با برنامه نویسی نمی شود یک شبه ره صد ساله رفت. شرط موفقیت در برنامه نویسی این است که سالهای سال برای یادگیری و کسب تجربه، خودتان را وقف کارتان کرده باشید. حالا با فرض بر اینکه به یادگیری برنامه نویسی علاقه دارید ادامه می دهیم.
چیزهایی که درباره Reading آزمون MSRT نمی دانید! - BitAlone
چیزهایی که درباره Reading آزمون MSRT نمی دانید! - BitAlone
گر با آزمون MSRT آشنایی ندارید می توانید این پست را بخوانید. در صورتی که به دنبال منابع آزمون MSRT هستید این پست را از دست ندهید. مقدمه این بخش از جمله مهمترین قسمتهای آزمون MSRT است. بیشترین تعداد سوالات... ادامه مطلب
blog.bitalone.com
شروع برنامه نویسی
شروع برنامه نویسی
شروع برنامه نویسی:
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
اگر تا به حال برنامه نویسی نکرده اید و می خواهید از اندروید شروع کنید به شدت توصیه می کنم این کار را نکنید. من این کار را انجام دادم و می دانم کار بسیار سخت و طاقت فرسایی خواهد بود. بخصوص که یادگیری جاوا در بین سایر زبانهای برنامه نویسی معروف (به غیر از سی و سی پلاس پلاس) سخت تر و زمانبرتر است. توصیه ای که به دوستانی که به اندروید علاقه دارند می کنم این است که با برنامه نویسی وب شروع کنند. HTML, CSS, JavaScript را کمی یاد بگیرید که بتوانید یک سایت استاتیک ساده را خودتان از صفر شروع کرده و به اتمام برسانید. این کار به شما دید خوبی از برنامه نویسی خواهد داد. این پروسه حداکثر دو تا سه ماه زمان خواهد برد اما مطمئن باشید این کار در بلند مدت به نفع شما خواهد بود. دلیل این حرفم چیست؟ ببینید برنامه نویسی اندروید، برنامه نویسی سمت کلاینت است. برنامه نویسی سمت کلاینت در وب یعنی همان HTML, CSS, JavaScript. در اندروید بجای HTML ما XML داریم. بجای جاوااسکریپت از جاوا استفاده می کنیم. CSS در اندروید هم یا در XML پیاده سازی می شود یا در جاوا. اما یادگیری سمت کلاینت در وب برای کسی که برنامه نویسی نکرده به شدت ساده تر از اندروید است. پس برای یادگیری کلیت کار از وب شروع کنید.
آموزش تایپ ده انگشتی فارسی و انگلیسی
آموزش تایپ ده انگشتی فارسی و انگلیسی
سایت تایپکده جهت آموزش و تمرین تایپ سریع و ده انگشتی فارسی و انگلیسی می باشد. کلیه خدمات سایت رایگان می باشد. منتظر پیشنهادات شما جهت بهبود سایت هستیم
typekadeh.com
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
جاوا:
اگر به توصیه بالا عمل کردید این مرحله نباید زمان زیادی از شما بگیرد. با یادگیری انواع متغیرها، حلقه ها، جملات شرطی و مفاهیم شی گرایی در جاوا آشنا شوید و بلافاصله شروع به یادگیری اندروید کنید. من در این مرحله هم اشتباهات بزرگی کردم. شاید به مدت ۶ ماه فقط در حال یادگیری جاوا بودم در حالیکه به خیلی از مباحثی که در آن زمان یاد گرفتم هنوز هم نیاز پیدا نکرده ام. سعی کنید یادگیری خود را بر اساس نیاز قرار دهید. یعنی اگر در پروژه ای نیاز به مبحث خاصی بود آن مبحث را خوب یاد بگیرید. در غیر این صورت شاید هیچ وقت به آن مبحث نیاز نداشته باشید. بزرگترین مشکل بعد از یادگیری جاوا، نصب اندروید استودیو خواهد بود. خیلی از کسانی که در گروههای اندروید می بینم برای نصب اندروید استودیو زمان زیادی می گذارند و در نهایت بی خیالش می شوند. سعی کنید مرحله به مرحله پیش بروید. من برای نصب اندروید استودیو یک ماه درگیر بودم. در نهایت هم به دلیل اینکه امولاتو روی سی پی یوهای AMD کار نمی کند مجبور شدم یک ماه برای نصب لینوکس و اندروید استودیو زمان بگذارم. البته همه اینها برای کسی که تازه وارد دنیای برنامه نویسی شده بود انقدر طول کشید. آن زمان خوب جستجو نمی کردم. حتما از ابتدا مهارت خوب جستجو کردن را در خود ارتقا دهید تا از این نوع مشکلات نداشته باشید.
پیاده سازی پرداخت درون برنامه ای کافه بازار
پیاده سازی پرداخت درون برنامه ای کافه بازار
در پست قبلی گفتم برای پرداخت درون برنامه ای کافه بازار دو سه هفته ای درگیر بودم. الان که نگا...
virgool.io
یادگیری عمیق ولی پروژه محور:
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com
این هم یکی از اشتباهات و در عین حال شاید نقاط قوت من در یادگیری برنامه نویسی اندروید بود. در یادگیری برنامه نویسی به شدت عمیق می شدم و تا به مبحثی کاملا مسلط نمی شدم از آن در پروژه هایم استفاده نمی کردم. این باعث می شد یادگیری ام بسیار عمیق اما کند باشد. به شما توصیه می کنم عمیق اما پروژه محور یاد بگیرید. در ابتدای یادگیری اندروید یک پروژه بسیار ساده برای خود در نظر بگیرید و همزمان که از روی کتاب، فیلم، سایت و... یاد می گیرید همان مباحث را در پروژه خود پیاده کنید. حتی زمانی که کتابخانه های مهم جاوا مانند Dagger یا RxJava را یاد می گیرید در پروژه های خود پیاده سازی کنید. این کار به شدت بهینه تر از کاری است که من انجام می دادم.
در این مقاله ابتدا قصد داشتم کتابخانه های معروف اندروید و همچنین منابع خوب برای یادگیری اندروید را معرفی کنم. اما بنظرم بهتر آمد در یک پست جداگانه به هر کدام از این مطالب بپردازم. خوشحال می شوم نظرات خودتان را درباره این مطلب بدانم.
همچنین اگر دوست داشتید در کانال تلگرام من (abolfazli_mahdi) که به تازگی راه اندازی کرده ام عضو شوید. سعی می کنم مطالب جالبی که به آنها بر میخورم را در کانالم قرار دهم. همچنین اگر دوست داشتید اپلیکیشن زبان ما را از این لینک به صورت مستقیم یا از کافه بازار دانلود کنید و نظرتان را راجع به این اپلیکیشن بگویید. امیدوارم این پست برایتان مفید بوده باشد.
09367292276
09367292276
azsoftir@gmail.com
azsoftir.com
09367292276
09367292276
azsoftir@gmail.com