Android Kütüphaneleri – 1 – Picasso
Eskiden kütüphane ekleme sorunsalı kullanma sorunsalı hepimizde sorun olmuştur. Şahsen bende fazlasıyla oldu. Artık anladım ki kütüphane kullanmadan olmuyo arkadaş. O yüzden android ile ilgili yeni yazılar eklemeye, javada ki eksik bilgilerimi düzenlemeye devam ediyorum. İlk olarak kütüphane nedir, neler vardır sözel olarak bir yazı yayınlamaya çalışacağım. O yazının linki önümüzdeki günlerde burada paylaşmayı düşünüyorum.
Şimdi ise ilk yapacağım iş Picasso kütüphanesi Android’te ne işimize yarıyor, nerede kullanabiliriz, nasıl kullanabiliriz sorularına bu yazıda cevaplar verebilmek. Uzun bir yazı dizisi olacaktır. Sizde bu yazıyı paylaşırsanız gayet memnun olurum.
Android Picasso Nedir Kimdir ?
Picasso Android uygulamalarında image yüklenmesi ve işlenmesi için geliştirilmiş bir kütüphanedir. Kullanımı kolaydır. İmagelerin cache’lenmesinide sağlar.
Picasso bize ne avantaj sağlamaktadır, picasso’yu neden tercih etmeliyiz ?
Şimdi öncelikle picasso olmasaydı bu işlem nasıl olacaktı o soruya cevap veriyip, picasso ile işlemin nasıl olduğunu göstereceğim.. Picasso olmasaydı;
- Görüntü URL’i alınır.
- Görüntüyü indirmek için AsyncTask oluşturulur.
- AsyncTask çalıştırılır.
- Sonucu bitmap olarak saklanır.
- Bu bitmap kaynak olarak ayarlanır.
- Cache (Önbellek) görüntü saklanır.
Bu işlemlerden geçtikten sonra resmimize ulaşcaktık. Hadi bir örnekle anlatıyım. Şimdi Elimizde ;
/wp-content/uploads/2016/08/fg6390-770×430.png adlı bir resmin var olduğunu ve bunu uygulamada göstermek istediğinizi düşünün..
Yapmamız gerekenler üsteki gibi sıralanmış olarak koda dökersek :
import java.io.InputStream;
import android.app.Activity;
import android.app.ProgressDialog;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
public class MainActivity extends Activity {
private ImageView downloadedImg;
private ProgressDialog mProgressDialog;
private String downloadUrl = "/wp-content/uploads/2016/08/fg6390-770x430.png";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button imageDownloaderBtn = (Button) findViewById(R.id.downloadButton);
downloadedImg = (ImageView) findViewById(R.id.imageView);
imageDownloaderBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
new DownloadImage().execute(downloadUrl);
}
});
}
private class DownloadImage extends AsyncTask<String, Void, Bitmap> {
@Override
protected void onPreExecute() {
super.onPreExecute();
mProgressDialog = new ProgressDialog(MainActivity.this);
mProgressDialog.setTitle("Resim İndiriliyor");
mProgressDialog.setMessage("Bekleyin...");
mProgressDialog.setIndeterminate(false);
mProgressDialog.show();
}
@Override
protected Bitmap doInBackground(String... URL) {
String imageURL = URL[0];
Bitmap bitmap = null;
try {
// Resim indiriyoruz
InputStream input = new java.net.URL(imageURL).openStream();
// Decode Bitmap
bitmap = BitmapFactory.decodeStream(input);
} catch (Exception e) {
e.printStackTrace();
}
return bitmap;
}
@Override
protected void onPostExecute(Bitmap result) {
//İndirdiğimiz resmi imgView'e atıyoruz
downloadedImg.setImageBitmap(result);
//Progress dialog off
mProgressDialog.dismiss();
}
}
}
Evet üzerinde anlattığım uzun bir işlem ve işkence. Peki bize Picasso ne sağlıyor. İşte Picasso ile burada yapılan işlemler tek satıra iniyor.
ImageView imgView = (ImageView) findViewById(R.id.imageView);
Picasso.with(MainActivity.this)
.load("/wp-content/uploads/2016/08/fg6390-770x430.png")
.into(imgView);
Yapılan işlemler ise;
- Görüntü URL’i alınır.
- Tek bir satır kod ile ImageView içerisine yüklenir.
Hadi Picasso’nun kullanımına bakalım..
Picasso Kütüphanesi kullanımı :
build.gradle kısmına bunu eklemeniz yeterli..
compile 'com.squareup.picasso:picasso:2.5.2'
Picasso Kütüphanesi ile ilgili Örnekler:
şimdi activity_main.xml’e bir imageView atalım..
<ImageView android:id="@+id/imageView" android:layout_width="match_parent" android:layout_height="match_parent"> </ImageView>
MainActivity.java’ya da ilk olarak resmi direk indirip göstermemiz için gerekli kodumuzu yazalım..
ImageView imgView = (ImageView) findViewById(R.id.imageView);
Picasso.with(MainActivity.this)
.load("/wp-content/uploads/2016/08/fg6390-770x430.png")
.into(imgView);
!!!!—> İnternet için manifest dosyanız’da izin vermeyi unutmayınız.. <— !!!
Uygulamanın çıktısı :
Şimdi bakalım bu kütüphanede kullanabiliceğimiz başka neler varmış.. ( Bundan sonraki örneklerde çıktı olmayacaktır, deneyerek sonucu görebilirsiniz 🙂 )
Resmin Boyutlarını ayarlamak için Resize Kullanılır.. ( Resize–> Yeniden boyutlandırmak)
Picasso.with(MainActivity.this)
.load("/wp-content/uploads/2016/08/fg6390-770x430.png")
.resize(150,150)
.into(imgView);
Resmi döndürmek için Rotate methodu kullanılır..
Picasso.with(MainActivity.this)
.load("/wp-content/uploads/2016/08/fg6390-770x430.png")
.resize(150,150)
.rotate(100)
.into(imgView);Eğer uygulamanızda uzak bir kaynaktan bir görsel indirecekseniz ve indirme işlemi sonuçlanana kadar bir görsel kullanmak isterseniz placeholder metodunu kullanabilirsiniz.
Picasso.with(MainActivity.this)
.load("/wp-content/uploads/2016/08/fg6390-770x430.png")
.placeholder(R.drawable.loading)
.into(imgView);
Eğer uygulama’da resim yüklenmedi ve bir hata resmi göstermek istiyorsanız error methodu kullanılır. Error ve place holder birlikte kullanılabilmektedir.
Picasso.with(MainActivity.this)
.load("/wp-content/uploads/2016/08/fg6390-770x430.png")
.error(R.drawable.error)
.into(imgView);GridView haliyle güzel bir örnek için //stacktips.com/tutorials/android/download-and-display-image-in-android-gridview sitesinide inceliyebilirsiniz..
Kaynaklar :
//square.github.io/picasso/
//blog.iamkaan.com/category/android-kutuphaneleri/
//blog.gokhanyavas.com/ucuncu-parti-android-kutuphaneleri/
//gelecegiyazanlar.turkcell.com.tr/blog/her-android-gelistiricisinin-kullanmasi-gereken-5-kutuphane
//stacktips.com/tutorials/android/how-to-use-picasso-library-in-android
















Picasso JPG resimlerde çalışmıyor mu?
Alabiliyor, Bir sorun olmuyor, Çalışabiliyor.
Teşekkür ederim.. Çok güzel bir anlatım..