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.