آموزش ساخت اسلایدر متریال دیزان در برنامه نویسی اندروید
سلام دوستان در این سری از آموزش های برنامه نویسی اندروید به آموزش ساخت اسلایدر متریال دیزان در برنامه نویسی اندروید می پردازیم حدودا ما سه تا اسلایدر در نوع های مختلف برای شما ایجاد کردیم این مدل نیز خیلی زیبا است و خوبی که دارد شما می توانید لینک عکس را در برنامه قرار دهید و عکس ها از اینترنت لود شوند در ادامه می توانید پیش نمایشی از آن را مشاهده کنید.
این اسلایدر در برنامه های خارجی بسیار استفاده می شود.
برای استفاده از این آموزش ابتدا باید یکسری کتاب خانه را اضافه کنید.
پس وارد فایل Build.gradle از نوع module شده و در بخش dependencies اضافه کنید.
1 2 3 4 | compile 'com.android.support:appcompat-v7:24.2.1' compile 'com.squareup.picasso:picasso:2.3.2' compile 'com.nineoldandroids:library:2.4.0' compile 'com.daimajia.slider:library:1.1.5@aar' |
بعد از این کار پروژه را sync کنید.
وارد فایل AndroidManifest.xml شده و دسترسی های زیر را اضافه کنید.
1 2 | <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.INTERNET" /> |
وارد فایل layout خود شده و کد های زیر را در آن قرار دهید.
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:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=.MainActivity"> <com.daimajia.slider.library.SliderLayout android:id="@+id/slider" android:layout_width="fill_parent" android:layout_height="320dp" /> </RelativeLayout> |
و کد مربوط به 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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | package ir.programchi; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.widget.Toast; import com.daimajia.slider.library.Animations.DescriptionAnimation; import com.daimajia.slider.library.SliderLayout; import com.daimajia.slider.library.SliderTypes.BaseSliderView; import com.daimajia.slider.library.SliderTypes.TextSliderView; import com.daimajia.slider.library.Tricks.ViewPagerEx; import java.util.HashMap; public class MainActivity extends AppCompatActivity implements BaseSliderView.OnSliderClickListener, ViewPagerEx.OnPageChangeListener{ SliderLayout sliderLayout; HashMap<String,String> Hash_file_maps ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Hash_file_maps = new HashMap<String, String>(); sliderLayout = (SliderLayout)findViewById(R.id.slider); Hash_file_maps.put("Android CupCake", "http://androidblog.esy.es/images/cupcake-1.png"); Hash_file_maps.put("Android Donut", "http://androidblog.esy.es/images/donut-2.png"); Hash_file_maps.put("Android Eclair", "http://androidblog.esy.es/images/eclair-3.png"); Hash_file_maps.put("Android Froyo", "http://androidblog.esy.es/images/froyo-4.png"); Hash_file_maps.put("Android GingerBread", "http://androidblog.esy.es/images/gingerbread-5.png"); for(String name : Hash_file_maps.keySet()){ TextSliderView textSliderView = new TextSliderView(MainActivity.this); textSliderView .description(name) .image(Hash_file_maps.get(name)) .setScaleType(BaseSliderView.ScaleType.Fit) .setOnSliderClickListener(this); textSliderView.bundle(new Bundle()); textSliderView.getBundle() .putString("extra",name); sliderLayout.addSlider(textSliderView); } sliderLayout.setPresetTransformer(SliderLayout.Transformer.Accordion); sliderLayout.setPresetIndicator(SliderLayout.PresetIndicators.Center_Bottom); sliderLayout.setCustomAnimation(new DescriptionAnimation()); sliderLayout.setDuration(3000); sliderLayout.addOnPageChangeListener(this); } @Override protected void onStop() { sliderLayout.stopAutoCycle(); super.onStop(); } @Override public void onSliderClick(BaseSliderView slider) { Toast.makeText(this,slider.getBundle().get("extra") + "",Toast.LENGTH_SHORT).show(); } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {} @Override public void onPageSelected(int position) { Log.d("Slider Demo", "Page Changed: " + position); } @Override public void onPageScrollStateChanged(int state) {} } |
این آموزش هم به پایان رسید.
موفق و موید باشید.
سلام و خسته نباشید
اینجا لینک عکس ها ثابت هستند و انگار کش هم میشوند
اگه بخوایم عکس عوض کنیم باید چیکار کرد ؟
مثلا هر چند مدت می خوایم یه سری عکس جدید داشته باشیم
ممنون
سلام و درود
عکس ها ثابت نیستند و در حال لود شدن از url هستند و در مرود کش شدن هم باید بگم کتاب خانه picasso به طور معمول کش نمی کند ولی شما می توانید از کد زیر برای غیر فعال کردن استفاده کنید.
و برای اینکه عکس ها هم متغیر باشند شما همه عکس ها را بریزید توی یک json سپس از url پارس کنید و در برنامه قرار دهید.
موفق باشید.
سلام جناب جعفری پور
وقت بخیر
مشکل من اینه که من میخواستم این عکس ها از سرور لود بشه. اما اینا یه طوریه که فقط دفعه اول که میره از سرور دانلود میکنه، دفعه بعدی که برنامه باز میشه دیگه کاری به سرور نداره.
نهایتا من میخوام عملیات خوندن از سرور رو هردفعه که اپ باز میشه انجام بده. ممنون میشم منو راهنمایی کنین
باتشکر
چطوری میشه اسنک بار اسلایدر یا دسکریپشن رو غیر فعال کردش
سلام و درود برای غیر فعال کردن اسنک می توانید از کد زیر استفاده کنید.
یا
موفق باشید.
باعرض سلام خدمت شما.
در وهله ی اول جا دارد از شما برای آموزش های فوق العادتون تشکر کنم.
بنده با استفاده از یکی دیگر از آموزش هایتان از Viewpager استفاده کرده ام.
که آنرا متصل به یکی دیگر از آموزش هایتان در مورد bottom navigation کرده ام(کلا همه ی کار های من با آموزش های شما جلو میرود!)
حال می خواستم از این اسلایدر در یکی از صفحات pager استفاده کنم.
مشکلی که هست به کد زیر گیر میدهد و ارور:on a null object reference را میدهد:
sliderLayout.addSlider(textSliderView);
ممنون میشوم راهنمایی ام کنید. با سپاس
سلام خواهش می کنم
logcat قرار دهید بررسی کنم شاید یه view قرار داید find نکردید یا مثلا دسترسی اینترنت را قرار نداید. ممکن است خطاهای شما در خواندن از حافظه باید باشه چون runtimepermission قرار داده نشده است در سایت سرچ کنید آموزش های مختلفی وجود دارد.
موفق باشید.
سلام.
قربان احساس میکنم بنده سوالم را درست نپرسیدم:
بنده چگونه می توانم یک ویئویی که در یک layout به غیر از layout اصلی هست،ویوئی را فراخوانی کنم.اجازه دهید با یک مثال این مطلب را بیان کنم:
لایه ی اصلی بنده Main_activity.xml می باشد. بنده در این لایه یک ViewPager تعریف کرده ام که به این Viewpager 4 لایه ی xml دیگر نسبت داده ام.
حال در یکی از این 4 لایه ی xml که به Viewpager نسبت داده شده است یک دکمه وجود دارد.
بنده چگونه می توانم کدی بنویسم که زمانی که در mainActivity.class کسی روی دکمه کلیک کرد،مثلا یه Toast صورت گیرد؟
شما باید با LayoutInflater کار کنید آموزشش را قرار میدهم.
بسیار سپاس گزارم.
عااالی بود (:
تا زمانی که قست نداشتم بزارمش توی فرگمنت ):
لطفا یا اموزشش رو قرار بدین اگر مقدوره یا اگر میشه بگین از این چطور توی فرکمنت باید استفاده کرد (: مرسی
سلام و درود فرقی زیادی بین قرار دادن در فرگمنت و اکتیویتی وجود ندارد ابتدا بخش های فرگمت را مطالعه کنید سپس می توانید خودتان آن را قرار دهید.
موفق باشید.
سلام سخته نباشید
برای ترتیب دادن و مشخص کردن نمایش اولین و دومین و .. تصویر کاری میشه کرد ، دقیقا در آموزش شما هم اولیت عکس لود شده کاپ کیک است که در اسلایدر سومین عکس نمایش داده میشه کلا نتونستم ترتیب دلخواه رو بهش بدم ممنون میشم راهنمای کنید
با سلام و خسته نباشید
من از این کتابخانه در اکتیویتی ها زیاد استفاده کردم و جواب هم گرفتن چه به صورت انلاین چه به صورت ثابت
اما در فرگمنت مشکل داره ، خیلی هم جستجو کردم اما راه حلی پیدا نکردم و به نال بودن اسلایدر اشاره میکنه
ممنون میشم اگر راه حلی هست به اشتراک بزارید، سپاس
سلام
من میخوام یک کلاس جدا(Slider.java) برایش تعریف کنم و در هرجای از برنامه که خواستم نمایش بدم
برای این کار چه کنم ؟؟؟؟
سلام بنده میخوام اینو سر فرگمنت اجرا کنم میشه بگین چجوری؟؟
سلام و خسته نباشید.
پروژه رو که از گیت هاب دانلود و اجرا میکنم میزارم با گریدل سینک بشه .گریدل رو دانلود میکنه ولی ارور زیر رو میده.با فیل شکن هم وصل میشم.
ERROR: Unsupported method: GradleProject.getProjectDirectory().
The version of Gradle you connect to does not support that method.
To resolve the problem you can change/upgrade the target version of Gradle you connect to.
Alternatively, you can ignore this exception and read other information from the model.
با سلام و عرض ادب.
من میخوام عکس هایی که در پوشه هاست قرار داره رو بیاد نمایش بده.و عکس ها هر سری از هاست آپدیت بشه.نه اینکه دونه دونه لینک هاشون رو در سورس قرار بدم.شما در کامنت گفتید :عکس ها رو بریزید داخل json و از url پارس کنید.میشه کدش رو بگید.اپلیکیشن من پنل مخصوص داره .