آموزش کار با کتاب خانه Glide در برنامه نویسی اندروید
سلام باز با قدرت بیشتر برگشیتم امیدوارم حالتون خوب باشه در این سری از آموزش برنامه نویسی اندروید به آموزش کار با کتاب خانه Glide در برنامه نویسی اندروید می پردازیم این کتاب خانه مثل کتاب خانه های قبلی که معرفی کردیم بسیار کاربردی است این کتاب خانه سه کار ر برای ما انجام می دهد که عبارتند از : بارگذاری video (نمایش ویدیو) , نمایش gif و نمایش عکس به طور معمول در اندروید نمی شود یک فایل gif را نمایش داد قبل تر استفاده از کتاب خانه Picasso در سایت قرار داده بودیم یک سرچی در سایت بزنید تا با آن کتاب خانه قدرتمند نیز آشنا شوید در ادامه با ما همراه باشید.
ابتدای کار شما باید این کتاب خانه رو اضافه کنید برای این کار ابتدا وارد build.gradle بخش top level شوید و در بخش repository خط زیر را اضافه کنید.
1 2 3 4 | repositories { mavenCentral() jcenter() } |
سپس وارد فایل build.gradle بخش Moudle شوید و کتاب خانه های زیر را اضافه کنید.
1 2 3 4 5 | dependencies { compile 'com.github.bumptech.glide:glide:4.0.0-RC1' compile 'com.android.support:support-v4:25.3.1' annotationProcessor 'com.github.bumptech.glide:compiler:4.0.0-RC1' } |
سپس پروژه را sync کرده منتظر بمانید تا کار sync شدن به پایان برسد (علت های خطا ها را ما قبلا بررسی کردیم و برای شما علت خطا ها را گفته ایم با هم یک سرچی در سایت بزنید )
و برای اینکه ما با اینترنت کار داریم باید دسترسی زیر را به AndroidManifest.xml اضافه کنیم.
1 | <uses-permission android:name="android.permission.INTERNET"/> |
شکل کلی متود glide به شکل زیر است.( البته برای لود عکس)
1 2 3 4 5 6 7 | ImageView imageView = (ImageView) findViewById(R.id.imageView); String yourUrl = "http://www.yoururl.com/image.png"; Glide.with(context) .load(yourUrl) .centerCrop() .placeholder(R.drawable.loading_spinner) .into(imageView); |
همانطور که می بینید بسیار ساده است در ابتدا به جای context (این context را قبل تر توضیح داده ایم کافی است در سایت جستجو کنید ) می توانید از this , YourActivity.this getApplicationcontext و حتی در فرگمنت از آن استفاده کنید و چهار ویژگی (property) دیگر نیز وجو دارد اولی .load است که باید یک url باشد دومی centercrop هست که اسم آن روی خودش است اگر عکس شما خیلی بزرگ باشد به طوری آن را قابل نمایش می کند (وسط چین می کند در کل) و placeholder که تا قبل از load شدن imageview ما خالی است می توانید یک عکس برای قبل از لود شدن نیز قرار دهید و آخری یعنی در چه چیزی load (بارگذاری) که در اینجا در imageview بوده است .
برای لود کردن فایل gif می تونید از کد زیر استفاده کنید.
1 2 3 4 5 6 | ImageView imageView = (ImageView) findViewById(R.id.imageView); Glide.with(this) .load("لینک فایل gif") .placeholder(R.drawable.loading2) .asGif() .into(image); |
فقط یک ویژگی جدید اضافه شده است asgif یعنی به عنوان یک فایل gif آن را نمایش بده .
برای بارگذاری ویدیو از طریق url هم همانند زیر می توانیم استفاده کنید.
1 2 3 4 5 6 7 8 9 10 11 | ImageView imageView = (ImageView) findViewById(R.id.imageView); BitmapPool bitmapPool = Glide.get(this).getBitmapPool(); FileDescriptorBitmapDecoder decoder = new FileDescriptorBitmapDecoder( new VideoBitmapDecoder(frameTimeMicros), bitmapPool, DecodeFormat.PREFER_ARGB_8888); Glide.with(this) .load(uri) .asBitmap() .videoDecoder(decoder) .into(imageView); |
برای این که یک ویدیو را در imageview نمایش دهیم باید آن را Decode کنیم سپس آن را نمایش دهیم.
شاید بهتر باشد یک مقدار حرفه ای تر با این کتاب خانه کار کنیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | ImageView imageView = (ImageView) findViewById(R.id.test_image); GlideDrawableImageViewTarget imagePreview = new GlideDrawableImageViewTarget(imageView); Glide .with(this) .load(url) .listener(new RequestListener<String, GlideDrawable>() { @Override public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) { return false; } @Override public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) { return false; } }) .into(imagePreview); } |
برای اینکه ما خطا را در هنگام لود شدن به دست بیاریم باید برای آن یک listener تعریف کنیم کار این listener این است که در صورتی که خطای رخ دهد وارد Void ی به نام onException می شود تا برنامه Force close ندهد و بیرون بیاید اگر می خواهید علت خطا را ببیند در متغیر e ذخیره می شود کافی است یک Toast قرار داده و e را نمایش دهید و void دومی ما onResourceReady زمانی وارد این void می شود که منابع آماده شده باشند یعنی عکس فیلم یا video ما کش شده باشد و آماده اجرا باشد.
این آموزش هم به پایان رسید.
موفق باشید.
با سلام مجدد
میخواستم یک اسپینر بزارم با قابلیت تغییر فونت برنامه یعنی هر کدوم از فونت هارو در داخل اسپینر انتخاب کردیم فونت تغییر کنه(یا همون هر کدوم از گزینه هارو در داخل اسپینر انتخاب کردیم یه کار خاصی انجام داده بشه)میتونید برام یک pdf بسازید با یک مثال کامل از 0تا 100
سلام
خیر کدهای در سایت موجود هست می توانید استفاده کنید.
لطفا لینکش رو بدید
آموزش Spinner در اندروید
http://programchi.ir/?s=spinner
آموزش Font در اندروید
http://programchi.ir/?s=Font%20%D8%AF%D8%B1%20%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF
آموزش Pdf در اندروید
http://programchi.ir/?s=pdf%20%D8%AF%D8%B1%20%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF
موفق باشید.
راهی هست بدون دانلود کل ویدیو تصویر ویدیو در imagaview گرفت
چراکلاس FileDescriptorBitmapDecoder وجود ندارد