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

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



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

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

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

نوع محتوا


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

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

دسته ها

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

تقویم ها

  • Community Calendar

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

  1. Kotlin چیست؟ Kotlin (کاتلین) یک زبان برنامه‌نویسی‌ست که با استفاده ازش میشه برای اندروید برنامه‌نویسی کرد. ورژن‌های اخیر اندروید استودیو به طور رسمی از کاتلین پشتیبانی می‌کنن، مسئله‌ای که تو Google IO 2017 اعلام شد. kotlin تبدیل به bytecode میشه بنابراین به خوبی java میتونه روی اندروید اجرا بشه و از این نظر تفاوتی وجود نداره. و اینکه میشه توی یک پروژه همزمان از kotlin و java استفاده کرد، بنابراین حتی اگر خیلی کم با کاتلین آشنا هستید باز هم میتونید بخشی از پروژه‌هاتون رو با کاتلین انجام بدید. چرا Kotlin؟ دلیل اول اینکه با کاتلین میتونیم کدهایی تمیزتر و خواناتر بنویسیم. میدونیم که زبان جاوا boiler code زیاد داره. boiler code به کدهایی میگیم که جز syntax زبان هستن ولی همیشه بدون دلیل تکرار میشن و میشد حذفشون کرد.
  2. کاربران گرامی انجمن اندروید ایران همانطور که مطلع هستید در تاریخ 19 آذر ماه 1395 ورژن جدید انجمن اندروید ایران ایجاد شده و دارای بخش های فراوانی همچون : مارکت اندروید چت رابط کاربری جذاب راحتی کار در موبایل آپلود سنتر داخلی برای بارگذاری فایل ها و... خوشحال خواهیم شد نظرات خود را با ما در میان بگذارید تا بتوانیم وب سایت بهتری در شان انجمن اندروید ایران را در اختیار کاربران قرار دهیم. با تشکر فرزاد سرسیفی
  3. یک محیط برنامه نویسی برای پلتفرم اندروید است. این برنامه در 16 می 2014 توسط مدیران گوگل در کنفرانس گوگل آی/او معرفی شد. از ماه جوئن 2014 نسخه پیش نمایش این برنامه (به صورت رایگان) برای امتحان در دسترس توسعه دهنده‌ها قرار گرفت. این محیط بر اساس نرم‌افزار محبوب جت برینز طراحی شده است، این استودیو بطور اختصاصی برای اندروید طراحی شده. هم اکنون این استودیو برای دانلود بر روی ویندوز، مک و لینوکس در دسترس می‌باشد. چندین ویژگی جدید در این نرم‌افزار برای کاربران می‌باشد: چیدمان زنده: ویرایشگر WYSIWYG – کدنویسی زنده – رندر هم زمان برنامه کنسول توسعه دهنده: راهنمای بهینه سازی – کمک برای ترجمه – ردیابی ارجاع – طریقه استفاده ارائه نسخه بتا و اجرای صحنه پشتیبانی از ساخت مبتنی بر Gradle رفع و عیب یابی مخصوص اندروید ابزار لینت برای گرفتن عملکرد، قابلیت استفاده، نسخه سازگار با مشکلات دیگر قابلیت Proguard و امضای برنامه مبتنی بر الگوی wizard برای ایجاد طرح اندروید و اجزای مشترک ویرایشگر طرح بندی غنی که به شما اجازه کشیدن و رها کردن UI کامنت‌ها را می‌دهند. گزینه‌ای برای تنظیمات پیش نمایش طرح بندی در صفحه نمایش چندگانه با سپاس فراوان فرزاد سرسیفی
  4. چگونه از 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+
  5. محدودیت ۶۵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>
  6. با آموزش کامل RecyclerView در اندروید در خدمت شما دوستان عزیز هستیم در این آموزش نحوه استفاده از ریسایکلر ویو و نحوه استفاده از cardview و نحوه استفاده از کتابخانه Picasso برای لود تصاویر از اینترنت توضیح داده شده است. یک بار برای همیشه یاد بگیرید برای مشاهده کلیک کنید
  7. برای بهتر متوجه شدن 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 می باشد..
  8. بهترین روش برای تجزیه و تحلیل فرگمنت ها استفاده از 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);
  9. استفاده از 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; } }
  10. سلام یه مدت پیش داشتم توی اینترنت گشت میزدم که به یک کتابخانه ای خیلی خوبی برخورد کردم که کار رو برای ارتباط با سرور بهتر از هر کتاب خانه ای راحت تر کرده اینجا آموزش این کتاب خانه رو به صورت متنی قرار خواهم داد ولی بعدا به صورت ویدئو در قالب یک پروژه کامل این کتاب خانه رو آموزش میدم. ویژگی های مهم این کتاب خانه جدا کردن متد های پست ، گت ، داشتن دانلود منیجر در خود کتاب خانه ، و هم چنین آپلود منیجر که این کتاب خونه رو از همه متمایز کرده و سرعت خوبی هم داره خب بریم سر آموزش اول مییایم به وسیله گردل کتاب خونه رو به پروژه اضافه میکنیم 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 امید وارم که این کتابخانه و این آموزش مفید باشد
  11. تبدیل تصاویر به صورت 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; }
  12. سلام دوستان در این قسمت میخوام با استفاده از کتابخونه متریال دیالوگ،یه دونه ازشون بسازیم خب کتابخونش رو اول اضافه میکنیم 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 } }); البته کد دوم فقط دستور برای دکمه ها تعیین میکنه که بایستی کد های اول رو با این مخلوط کنین
  13. سلام میخوام به شما عزیزان این فلوتینگ اکشن رو معرفی کنم.که تصویرش ضمیمه کردم. پیاده سازی: خب اول اونو به لایوت خودمون معرفی میکنیم <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); } }); امید وارم مفید بوده باشه
  14. سلام اسنک بار رو میخوام یه توضیح مختصر بگم چیز جالیه میتونید به جای 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 که ورودی اولش متن اون دکمه و ورودی دوم هم دستورات برای اجرای دکمه هست. امید وارم خوب بوده باشه
  15. سلام در این بخش آموزشی ظبط کردم که به وسیله ان می توانید یک تایید موبایل مانند واتساپ ایجاد کنید من سعی کردم آموزش کامل روان و ساده باشه برای همین از جملات سخت و غییر قابل درک استفاده نکرده ام این آموزش به وسیله کتاب خانه رتروفیت می باشد در سمت سرور من از دیتا بیس استفاده نکردم شما میتوانید به راحتی از ان استفاده کنید امید وارم آموزش مفید و کاربردی باشد لینک دانلود : دانلود
  16. با سلام خدمت دوستان عزیز خیلی از دوستان رو دیدم که تلاش میکردن سورس تلگرام را بدون خطا اجرا کنند ولی با مشکل برخورد میکردند تصمیم گرفتم این فیلم آموزشی رو ظبط کنم و برای یاد گیری عزیزان روی سایت قرار بدم با این ففیلم آموزشی شما میتوانید بدون هیچ مشکلی سورس تلگرام را بر روی شبیه ساز و هر نوع گوشی دیگری اجرا کنید آموزش پولی هستش که رایگان شده توسط صاحب آموزش لینک دانلود :دانلود TelegramSource_errors.mp4
  17. معمولا توی برنامه هایی که کار تحلیل صورت می گیره همیشه نیاز به یک نمودار و یا گراف که بتونه به صورت گرافیک مطالب رو نشون بده حس می شه. چون فهم مطلب در این شرایط خیلی راحت تره! ولی هر چند فهمش راحت تره برای مخاطب اما بیچاره برنامه نویس! نه این که کار سختی باشه نه... یه مقداری دوشواری داره. مثلا اگه بخواین به صورت 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
  18. این فریمورک مختص اندروید طراحی نشده ولی سبک بودن آن موجب شده‌است که بسیاری از برنامه نویسان از آن در برنامه‌های اندرویدی استفاده کنند. این فریم ورک جهت اتصالات JDBC وSpring و اندروید طراحی شده است. @DatabaseTable(tableName = "users") public class User { @DatabaseField(id = true) private String username; @DatabaseField private String password; public User() { // ORMLite needs a no-arg constructor } public User(String username, String password) { this.username = username; this.password = password; } // Implementing getter and setter methods public String getUserame() { return this.username; } public void setName(String username) { this.username = username; } public String getPassword() { return this.password; } public void setPassword(String password) { this.password = password; } }
  19. با آمدن ORM‌ها به دنیای برنامه نویسی، کار برنامه نویسی نسبت به قبل ساده‌تر و راحت‌تر شد. عدم استفاده کوئری‌های دستی، پشتیبانی از چند دیتابیس و از همه مهمتر و اصلی‌ترین هدف این ابزار "تنها درگیری با اشیا و مدل شیء گرایی" کار را پیش از پیش آسان‌تر نمود.در این بین به راحتی می‌توان چندین نمونه از این ORM‌ها را نام برد مثل IBatis , Hibernate ,Nhibernate و EF که از معروفترین آن‌ها هستند.من در حال حاضر قصد شروع یک پروژه اندرویدی را دارم و دوست دارم بجای استفاده‌ی از Sqlitehelper، از یک ORM مناسب بهره ببرم که چند سوال برای من پیش می‌آید. آیا ORM ای برای آن تهیه شده است؟ اگر آری چندتا و کدامیک از آن‌ها بهتر هستند؟ شاید در اولین مورد کتابخانه‌ی Hibernate جاوا را نام ببرید؛ ولی توجه به این نکته ضروری است که ما در مورد پلتفرم موبایل و محدودیت‌های آن صحبت می‌کنیم. یک کتابخانه همانند Hibernate مطمئنا برای یک برنامه اندروید چه از نظر حجم نهایی برنامه و چه از نظر حجم بزرگش در اجرا، مشکل زا خواهد بود و وجود وابستگی‌های متعدد و دارا بودن بسیاری از قابلیت‌هایی که اصلا در بانک‌های اطلاعاتی موبایل قابل اجرا نیست، باعث می‌شود این فریمورک انتخاب خوبی برای یک برنامه اندروید نباشد.معیارهای انتخاب یک فریم ورک مناسب برای موبایل: سبک بودن: مهمترین مورد سبک بودن آن است؛ چه از لحاظ اجرای برنامه و چه از لحاظ حجم نهایی برنامه سریع بودن: مطمئنا ORM‌های طراحی شده‌ی موجود، از سرعت خیلی بدی برخوردار نخواهند بود؛ اگر سر زبان هم افتاده باشند. ولی باز هم انتخاب سریع بودن یک ORM، مورد علاقه‌ی بسیاری از ماهاست. یادگیری آسان و کانفیگ راحت تر. greenDAO-master.zip
  20. سلام دوستان یه کتابخونه توپ پیدا کردم که دیگه درگیر ساخت نویگیشن دراور دستی نشد فول امکانات اول با کد زیر کتابخونه رو به پروژه اضافه کنین. اگه نمیدونین چطوری اموزش افزودن کتابخونه به اندروید رو ببینین ___ کد: compile('com.mikepenz:materialdrawer:5.9.1@aar') { transitive = true } خب حالا بعد از افزوده شدن میریم سراغ کد نویسی جهت تست این کد رو در onCreate قرار بدین new DrawerBuilder().withActivity(this).build(); بعد پروژه رو اجرا کنید و دستتون رو از سمت چپ به راست روی صفحه بکشید.اگه منو باز شد یعنی موفقیت آمیز بوده. پس میریم سراغ تنظیم امکانات PrimaryDrawerItem item1 = new PrimaryDrawerItem().withIdentifier(1).withName(R.string.drawer_item_home); SecondaryDrawerItem item2 = new SecondaryDrawerItem().withIdentifier(2).withName(R.string.drawer_item_settings); با این کد دو تا آیتم تعریف میکنید اما هنوز به منو معرفی نشدن.پس مثلا کد زیر مینویسیم به جای اون کد اولیه Drawer result = new DrawerBuilder() .withActivity(this) .withToolbar(toolbar) .addDrawerItems( item1, new DividerDrawerItem(), item2, new SecondaryDrawerItem().withName(R.string.drawer_item_settings) ) .withOnDrawerItemClickListener(new Drawer.OnDrawerItemClickListener() { @Override public boolean onItemClick(View view, int position, IDrawerItem drawerItem) { // do something with the clicked item :D } }) .build(); یه توضیح در موردش بدم گیج نشین؛ابتدا یه متغیر از نوع Drawer تعریف کرده و اون رو با یه شی جدید از نوع DrawerBuilder پر میکنه.آخرش که میگه .Build() باعث میشه منو ساخته بشه و به اکتیویتی شما که با کد withActivity بهش گفتین وصل بشه.در ضمن بگم نیاز هست که یه Toolbar تو لایوت خودتون تعریف کنین و منو رو بهش وصل کنید با کد withToolbar با استفاده از کد addDraweritems،بایستی اون آیتم هایی که ساخته بودید رو بهش معرفی کنین مثل کد.توابعی هم که زیرش نوشتین از اسمشون مشخصه برای وقتی که روی آیتم ها کلیک بشه صدا زده میشن. یه امکان خوبی که این کتابخونه داره اینه که اگه توی پروژتون مسائل کاربر و ورود و خروج دارید یه حرکت قشنگ میزنه اونم AcountHeader هستش.کد زیر رو کپی کنید تو پروژه قبل از کد اصلی! سپس به همون کد اصلی که ساخت منو هست،این کد هم اضافه کنید .withAccountHeader(headerResult) که در نهایت همچین کدی داشته باشین Drawer result = new DrawerBuilder() .withActivity(this) .withAccountHeader(headerResult) .withToolbar(toolbar) .addDrawerItems( item1, new DividerDrawerItem(), item2, new SecondaryDrawerItem().withName(R.string.drawer_item_settings) ) .withOnDrawerItemClickListener(new Drawer.OnDrawerItemClickListener() { @Override public boolean onItemClick(View view, int position, IDrawerItem drawerItem) { // do something with the clicked item :D } }) .build(); این کتابخونه خیلی امکانات دیگه داره که این فقط کمی ازشون بود.اگه میخواین جدی از این کتابخونه استفاده کنید بهتره به صفحه گیتهابش مراجعه کنین. لینک ببخشید کمی سرسری توضیح دادم خدانگهدار
  21. درود به همه کاربران انجمن اندروید ایران به عنوان یکی دیگر از هدایای سری جدید انجمن اندروید ایران پروژه کتاب ساز اندروید را برای شما آماده و در اختیار شما عزیزان قرار گرفت. از آنجایی که هدف انجمن اندروید ایران فقط و فقط خدمت به اندروید ایران است و رشد و توسعه آن در گرو همکاری همه عزیزان است لذا به عنوان یک عضو کوچک از این خانواده بزرگ تلاش خود را انجام میدهیم تا خدمتی صادقانه به شما عزیزان ارائه دهیم. چندین وقت بود نیاز بود راهی آسان برای ساخت و ایجاد اپلیکیشن های بر پایه تولید محتوا ایجاد شود،بر همین دلیل انجمن پی سی دروید این نیاز را با ارائه روش "کتاب ساز اندروید" نیز برای توسعه دهندگان گرامی اندروید رفع خواهد کرد. امید است دوستان گرامی بتواند اپلیکیشن های جذابی را در آینده تولید نمایند و باعت پیشرفت صنعت موبایل در کشور باشد از امکانات این کتاب ساز : ورق زدن صفخات بصورت راست به چپ قرار دادن تصاویر و متون در صفحات قرار دادن متون فارسی و ... امکان قرار دادن نامحدود صفحات استفاده از دیتابیس برای نمایش اطلاعات برای استفاده از این پروژه باید حتما کتابخانه FilpBook را نیز به پروژه خود اضافه کنید،کتابخانه مورد نظر نیز در پیوست قرار گرفته است. دانلود پروژه: http://p30droid.com/Uploader/do.php?id=359 کتابخانه پروژه: http://p30droid.com/Uploader/do.php?id=360 پیروز و سربلند باشید. انجمن اندروید ایران
  22. انجمن اندروید ایران با همکاری فرانش برگزار میکند: تاریخ برگزاری : 3 آبان 1395 مدرس : فرزاد سرسیفی مکان: مصلی تهرانی،غرفه فرانش عنوان درسی : امنیت در اندروید "شرکت برای عموم رایگان میباشد" با سپاس فراوان فرزاد سرسیفی
  23. سلام دوستان یه فیلم فارسی کوتاه هست که این مطلب رو آموزش میده امیدوارم به دردتون بخوره ------ تبلیغ غیر مجاز
  24. گروه: پروژه های اندروید عنوان: وصل شدن به یک صفحه اینترنتی در اندروید توضیح مختصر: اهداف پروژه :در این پروژه ما قصد داریم اهداف زیر را پیاده سازی نماییم: وصل شدن به یک صفحه اینترنتی خواندن یک پیغام از صفحه مذکور و نمایش آن به کاربر اهداف پروژه : در این پروژه ما قصد داریم اهداف زیر را پیاده سازی نماییم: وصل شدن به یک صفحه اینترنتی خواندن یک پیغام از صفحه مذکور و نمایش آن به کاربر برای شروع کار ابتدا می بایست یک پروژه جدید در محیط Eclipse ایجاد نماییم. برای این منظور از منوی File زیر منوی New و سپس زیر منوی Android Application Project را انتخاب می نماییم. (شکل 1) شکل 1 همچنین برای ساده تر شدن و بالا بردن سرعت کار می توانید از منوی ابزار ها، منوی New و سپس Android Aplication Project را انتخاب نمایید.(شکل 2)
  25. دریافت کتابخانه دکمه شناور floating button در اندروید FloatingActionButton Yet another implementation of Floating Action Button for Android with lots of features. Requirements The library requires Android API Level 14+. Usage Add a dependency to your build.gradle: dependencies { compile 'com.github.clans:fab:1.6.4' } Add the com.github.clans.fab.FloatingActionButton to your layout XML file. <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:fab="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <ListView android:id="@+id/list" android:layout_width="match_parent" android:layout_height="match_parent" /> <com.github.clans.fab.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|right" android:layout_marginBottom="8dp" android:layout_marginRight="8dp" android:src="@drawable/ic_menu" fab:fab_colorNormal="@color/app_primary" fab:fab_colorPressed="@color/app_primary_pressed" fab:fab_colorRipple="@color/app_ripple"/> </FrameLayout> دریافت از انجمن اندروید ایران FloatingActionButton-master (1).zip