Android işletim sistemi gün geçtikçe gelişiyor fakat önceden kullanılan telefonların günümüzdeki telefonlara kıyasla çok daha yavaş ve ağır kaldığı gözlemlenebilir. Eğer bir geliştiriciyseniz cihazın stabilizasyonundan da sorumlu hale geliyorsunuz.
– GLIDE
Glide kütüphanesi resmi istediğiniz kısımdan almanıza ve kullanıcıya sunmanıza olanak sağlar. Uygulamanın sürekliliği ve ram dostu olabilmesi için en yararlı kütüphanelerden birisi.
– Kurulum
build.gradle dosyasına dependencies içerisine kütüphaneleri ekliyoruz.
implementation 'com.github.bumptech.glide:glide:3.7.0' implementation 'jp.wasabeef:glide-transformations:2.0.2'
Ardından projeyi build ederek kütüphaneleri projemize eklemiş oluyoruz.
– Kullanım
Öncelikle Glide kütüphanesini kullanacağımız util dosyamızı yazıyoruz.
GlideUtil.java
public class GlideUtil { /*** * Url ile internet üzerinden resim getirme. */ public static synchronized void glide_use(Context context , String url , final ImageView imageView ){ Glide.with(context) .load(url) .fitCenter() .crossFade() .into(imageView); } /*** * Drawable dosyasından resim getirme. */ public static synchronized void glide_use(Context context , int resource , ImageView imageView){ Glide.with(context) .load(resource) .fitCenter() .crossFade() .into(imageView); } /*** * Resmi daire şeklinde kırpma. */ public static synchronized void glideTransform(Context context , int resource , ImageView imageView){ Glide.with(context) .load(resource) .fitCenter() .bitmapTransform(new CropCircleTransformation(context)) .crossFade() .into(imageView); } /*** * Resmi boyutlandırma */ public static Bitmap glideResize(Context context , String url , int widht , int height){ try { return Glide.with(context) .load(url) .asBitmap() .dontAnimate() .fitCenter() .priority(Priority.LOW) .override(widht,height) .into(widht,height).get(); } catch (InterruptedException e) { e.printStackTrace(); return null; } catch (ExecutionException e) { e.printStackTrace(); return null; } } }
Tasarım dosyamıza ImageView’leri yerleştirelim.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:weightSum="100" tools:context="com.imageoptimize.MainActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:weightSum="100" android:layout_weight="50"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:layout_weight="50"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/get_url_image" android:gravity="center"/> <ImageView android:id="@+id/activity_main_imgGetUrl" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="fitCenter"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:layout_weight="50"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/get_drawable_file" android:gravity="center"/> <ImageView android:id="@+id/activity_main_imgGetDrawable" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="fitCenter"/> </LinearLayout> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:weightSum="100" android:layout_weight="50"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:layout_weight="50"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/set_crop_circle" android:gravity="center"/> <ImageView android:id="@+id/activity_main_imgSetCropCircle" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="fitCenter"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:layout_weight="50"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/set_resize_ımage" android:gravity="center"/> <ImageView android:id="@+id/activity_main_imgOptimize" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="fitCenter"/> </LinearLayout> </LinearLayout> </LinearLayout>
Şimdi ise java dosyamızda glide kütüphanesi yardımıyla optimize edilmiş resimlerimizi ImageView’lere set edelim.
MainActivity.java
public class MainActivity extends AppCompatActivity { private ImageView imgGetUrl , imgGetDrawable , imgCropCircle , imgOptimize; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); // ImageView'leri tanımladık. getUrlImage(); // İnternet ile resim getiren kod. internet iznini unutmayın. android.permission.INTERNET! getDrawableImage(); // Uygulama klasöründeki resim. getCropCircleImage(); // Resmi kırpma. getOptimizeImage(); // Resmi küçültme. } private void init(){ imgGetUrl = (ImageView) findViewById(R.id.activity_main_imgGetUrl); imgGetDrawable = (ImageView) findViewById(R.id.activity_main_imgGetDrawable); imgCropCircle = (ImageView) findViewById(R.id.activity_main_imgSetCropCircle); imgOptimize = (ImageView) findViewById(R.id.activity_main_imgOptimize); } private void getUrlImage(){ String imageUrl = "https://www.webdeyazilim.com/wp-content/uploads/2017/11/iphone-x-970x580.jpg"; GlideUtil.glide_use(MainActivity.this , imageUrl , imgGetUrl); } private void getDrawableImage(){ int resource = R.drawable.iphone; GlideUtil.glide_use(MainActivity.this , resource , imgGetDrawable); } private void getCropCircleImage(){ int resource = R.drawable.iphone; GlideUtil.glideTransform(MainActivity.this , resource , imgCropCircle); } private void getOptimizeImage(){ String imageUrl = "https://www.webdeyazilim.com/wp-content/uploads/2017/11/iphone-x-970x580.jpg"; new getOptimizeImage(imgOptimize,imageUrl).execute(); } class getOptimizeImage extends AsyncTask<Bitmap,Bitmap,Bitmap>{ private ImageView imageView; private String imageUrl; public getOptimizeImage(ImageView imageView , String url){ this.imageView = imageView; this.imageUrl = url; } @Override protected Bitmap doInBackground(Bitmap... bitmaps) { return GlideUtil.glideResize(MainActivity.this , imageUrl , 100,100); // Optimize boyutu widht ve height ile belirledik. } @Override protected void onPostExecute(Bitmap bitmap) { super.onPostExecute(bitmap); if (bitmap!=null){ imageView.setImageBitmap(bitmap); } } } }
Resimleri optimize ederek ve cihazı yormadan gösteren Glide kütüphanemizi bu makalemizde anlatmış olduk. Sorularınız için yorum bırakabilirsiniz.