Özelleştirilmiş ögeler hiç şüphesiz benim vazgeçilmezim. Standartların dışına çıkmak ve farklı bir şeyler yapmak hobim diyebilirim. Her ne kadar standartların dışına çıktığımda günlerimi haftalarımı harcadığım sorunlarla karşılaşmış olsam da, vazgeçemiyorum.
Yazımda android uygulamalarında özelleştirilmiş progressbar‘ları nasıl kullanacağımıza değineceğim kısaca. Android’in sağlamış olduğu “yükleniyor heyyo” gibisinden sizleri belirli bir kefeye hapseden UI öğelerini çok sevemedim nedense. Bana göre bu tarz standart ögelerden çok farklı yaklaşımlar insanların ilgisini daha çok çekiyor ve uygulamalarda beğeni topluyor.
Düşünsenize denizcilikle ilgili bir uygulama için gemi dümeni, motor sporlarıyla ilgili bir uygulama için F1 araç tekerleği kullandığınızı. Sizce de daha eğlenceli değil mi ? 🙂 Diğer yandan bu tip öğeleri oluştururken sağlanan birçok grafik alt yapılarını da kullanabilirsiniz; ben sadece normal şartlar altında basitçe nasıl yapılabileceğini göstereceğim. İlginizi çekeceğini umuyorum.
Uygulamadan görüntüler
Download Bağlantısı
Uygulamanın Detayları
Yapacağımız progressbar mantık olarak bir imajın vermiş olduğumuz pivotX ve pivotY değerleri doğrultusunda döndürülmesi üzerine kurulu. Öncelikle 36×36, 48×48, 64×64 boyuntlarında ldpid,mdpi ve hdip için imajlar oluşturmamız gerekiyor.
Drawable klasörü altında custom_pb.xml dosyası oluşturup dosyanin drawable değerine bu imajları vermeliyiz. Sonrasında ise bu dosyayı layout içinde tanımladığımız progressbar ögesinin indeterminateDrawable kaynağı olarak göstermemiz gerekiyor. (Bkz: android:indeterminateDrawable=”@drawable/custom_pb”)
Temel kod parçalarını yazının devamında bulabilirsiniz.
package com.tugrul.android.customprogressbar; /** * @author Tugrul Asik * @Date 07.07.2013 */ import android.os.Bundle; import android.app.Activity; import android.view.Menu; public class CustomPbActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_custompb); /* * Progressbar nesnesini ve text'i burada istediginiz duruma gore duzenleyebilirsiniz. * Ornegin arka planda calisan bir islem sonlandiktan sonra pb ve textview'i dismiss yapabilirsiniz */ } } |
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center" android:background="@android:color/black" android:orientation="vertical" > <ProgressBar android:layout_width="wrap_content" android:layout_height="wrap_content" android:indeterminateDrawable="@drawable/custom_pb" > </ProgressBar> <TextView android:id="@+id/textView1" android:layout_marginTop="5dip" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Yükleniyor..." android:textColor="@android:color/white" android:textAppearance="?android:attr/textAppearanceMedium" /> </LinearLayout> |
<?xml version="1.0" encoding="utf-8"?> <animated-rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/ic_loading_head" android:pivotX="50%" android:pivotY="50%" /> <!-- Donus acileri ve donus merkezini pivot degerleriyle ayarlayabilirsiniz --> |
İlginç progressbar’ları uygulamalarınızda kullanmanız dileğiyle 😉
İyi çalışmalar.