1 Ekim 2015 Perşembe

#ANDROID - Preference Kullanımı (EditText, Checkbox ve ListPereferences)

  Hiç yorum yok
Preference ile kullanıcının bir uygulamayı daha kişisel kullanabilmesi adına bilgi saklayabiliriz. Uygulama kapatılsa da bu bilgiler silinmez.

Öncelikle res klasörünün altındaki xml klasörümüzün (yoksa oluşturabilirsiniz) içine ayar.xml dosyası oluşturuyoruz.

ayar.xml dosyası:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">

    <EditTextPreference
        android:title="Adınızı girin: "
        android:summary="İsminiz?"
        android:key="isim"/>

    <CheckBoxPreference
        android:title="Uygulama Müziği"
        android:defaultValue="true"
        android:key="muzigiKapat"
        android:summary="Kapat/Aç"/>

    <ListPreference
        android:title="Örnek Liste"
        android:key="ilk_listem"
        android:summary="Liste Örneği"
        android:entries="@array/list"
        android:entryValues="@array/listvalues" />

</PreferenceScreen>

ListPreference'nin içerisine dikkat edecek olursak bir @array var. Yani bilgileri values klasörünün altındaki array.xml dosyasından alıyor. Hemen bu dosyamızı da oluşturuyoruz.

array.xml dosyası:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="list">
        <item>İstanbul</item>
        <item>Bursa</item>
        <item>Ankara</item>
    </string-array>

    <string-array name="listvalues">
        <item>1</item>
        <item>2</item>
        <item>3</item>
    </string-array>
</resources>

Şimdi "Ayar.java" adında bir class oluşturuyoruz. Bu classımızın farkı bu kez Activity'den değil, PreferenceActivity'den extends edilmesi olacak. Ve oluşturduğumuz ayar.xml (PereferenceScreen) dosyamızı bu classda tanıtacağız.

Ayar.java dosyası:

package com.hakancengiz.blogders;

import android.os.Bundle;
import android.preference.PreferenceActivity;

public class Ayar extends PreferenceActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.ayar);
    }
}

Ve bu class'ı AndroidManifets.xml dosyamızda tanıtıyoruz.

        <activity
            android:name=".Ayar"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.AYAR" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

Böylelikle veri saklama işlemini halletmiş olduk. Buradan alınan veriler kullanıcı uygulamayı telefonundan kaldırıncaya kadar saklanır.

Şimdi Pereference kullanarak aldığımız veriyi/değeri uygulamada nasıl kullanacağımızı göreceğiz. Biz isim, müziği aç/kapa ve il bilgisini tutan bir pereference hazırladık. Daha önceki makaleleri okudaysanız eğer biz splash ekran hazırlarken arka planda 3 saniyelik bir müzik çalıyorduk. Şimdi uygulamamıza preference ekranında eğer müzik kutusu işaretliyse bu müziği çal, işaretli değilse bu müziği çalma diyeceğiz.

Fazla konuşmadan pratiğe dökelim olayı. Biz müziğimizi Hosgeldin.java dosyasında çalıyorduk. O yüzden yeni bir dosya falan oluşturmadan Hosgeldin.java dosyamızı açıyoruz.
Splash ekran oluşturma: http://www.hcengiz.com/2015/09/android-karslama-ekran-splash-screen_28.html

Hosgeldin.java dosyası:

package com.hakancengiz.blogders;

import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.preference.PreferenceManager;

public class HosgeldinEkrani extends Activity {

    MediaPlayer calgici;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.hosgeldin);

        calgici = MediaPlayer.create(HosgeldinEkrani.this, R.raw.music_app);
        
        SharedPreferences ayarlariCek = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); //yeni
        boolean muzikCalmaDurumu = ayarlariCek.getBoolean("muzigiKapat", true); //yeni
        if(muzikCalmaDurumu == true) //yeni
        calgici.start();

        Thread zamanlayici = new Thread(){

            public void run()
            {
                try {
                    sleep(3000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                } finally {
                 Intent mainAc = new Intent(HosgeldinEkrani.this, Menu.class);
                 startActivity(mainAc);
                }
            }

        };
        zamanlayici.start();
    }

    @Override
    protected void onPause() {
        super.onPause();
        calgici.release();
        finish();
    }
}

Evet preference verilerini kullandığımız Hosgeldin.java dosyasının son hali bu. Müzik ayarlarını uygulamamızda kullanmak için sadece onCreate metodunun içerisine 3 satır kod ekledim. Bu satırların sonuna sonradan yazıldığının anlaşılması için yorum satırıyla "yeni" yazdım.

Böylelikle artık kullanıcı açılış ekranında müziğin çalıp çalmamasını kendisi belirleyecek.

Makale görseli:

Hiç yorum yok :

Yorum Gönder