Soru & Cevap

apk acılırken ilk kurulumda splash ekranı

15.04.2015 - 02:11

Arkdaşlar benim apk 5 mb uyguama 27 mb yalnız paket açılırken işletim sistemi programa yönlendiriyor.ve program tam yüklenmedigi icin kullanıcılar bazı kelimeleri göremiyor.

 

paketin acılma süresince bir splash ekran yapmam lazım nasıl yapabilirim acaba.

108 Görüntülenme

4 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user alikalcı
alikalcı
16.04.2015 - 09:53

süper hocam cok teşekkür ederim.

 

picture-26530-1417904094.jpg
gokhnkaragz
16.04.2015 - 09:20

Merhaba Ali Bey,

Splash ekranının kontrollerine eğer paketinizin açıldığına dair bir ibare yerleştirirseniz ve tabii boolean değer kontrolü ile de yalnızca uygulama ilk açıldığında true değişkenini çalıştırarak 1 kez splash ekranınızın karşınıza gelmesini sağlayabilirsiniz. Ardından ilk çalışma gerçekleştirildikten sonra bu boolean değerini 0 'a çevirip bir daha splash ekranın gelmemesini sağlayabilirsiniz. 

Özetle yapmanız gereken, paketinizin yükleme işleminin gerçekleştirildiği an bir boolean değişken ile splash ekranında bunu kontrol etmeniz..

Umarım izah edebilmişimdir. İyi çalışmalar dilerim

Profile picture for user alikalcı
alikalcı
16.04.2015 - 09:01

Gökhan Bey;

 

bu güzel cevap icin cok teşekkür ederim yalnız problemi yanlış sormusum..şimdi apk dosyasını internetten download ettigimiz zaman o apk dosyası ilk kurulumda kurulurken program açılıyor..ama paketin komple açılması kelimelerin yüklenmesi baya sürüyor.

 

bu arada apk download edilir etmez işletim sistemi programı açıyor.. ilk  kurulum yaparken paketin açılma süresince bir uyarı ekranı lazım program kuruluyorken yani. bunu nasıl yapabiliriz biliyormusunuz acaba..

 

splash ise  her program açılırken çalışır ama her progra açılırken çalışmasına gerke yok kurulum yaparken çalışması gerekir.

 

picture-26530-1417904094.jpg
gokhnkaragz
15.04.2015 - 04:32

Merhaba Ali,

Splash, karşılama ekranı, olarak bilinen activity'nin nasıl oluşturacağını anlatmaya çalışayım sana.

İlk olarak yeni bir xml dosyası oluşturuyoruz. Adına splashscreen.xml diyelim. Bu xml dosyası bizim Splash ekranımızın tasarımını oluşturacaktır. Örnek olarak şöyle bir şey oluşturdum.

[code]<?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:layout_gravity="center_horizontal"
    android:gravity="center_vertical"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/splashscreen"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:src="@drawable/ic_launcher" />

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:text="Merhaba ben, splash , karşılama ekranıyım" />

</LinearLayout>[/code]

Görünümü de şuna benzeyecektir:
Görsel kaldırıldı.

 

Ardından xml dosyamızı, tasarımımızı bir Java dosyasıyla entegre etmeliyiz. Entegre işlemini gerçekleştireceğimiz Java dosyası, aynı zamanda bizim Splash ekranımızın ayarlarını da içerisinde barındıracaktır.

Bunun için ben src (source) klasörüm altnda Splash.java dosyası oluşturuyorum.

[code]import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;

public class Splash extends Activity {
    
    /*
    ** Yazar: Gökhan KARAGÖZ 
       Turkcell Kullanıcı adı: gokhnkaragz
    **
    */
       
       
    /** Milisaniye cinsinden bekleme süresi **/
    private final int SPLASH_DISPLAY_LENGTH = 1000;

    /** Activity çağırıldığında yapılan ilk işlemler aşağıda yer alır. */
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.splashscreen);

        /* Bu activity çalıştırıldığında ipleri ele alan 
         * bir Splash yani karşılama ekranımızı çağırırız. */
        new Handler().postDelayed(new Runnable(){
            @Override
            public void run() {
                /* Karşılama ekranımızı işi bitene kadar çağırırız, ardından MainActivity'mize geçiş yaparız. */
                Intent mainIntent = new Intent(Splash.this,MainActivity.class);
                Splash.this.startActivity(mainIntent);
                Splash.this.finish();
            }
        }, SPLASH_DISPLAY_LENGTH);
    }
}[/code]


Kodlar arasında bulunan private final int SPLASH_DISPLAY_LENGTH = 1000; tanımı bize milisaniye cinsinden Splash dosyamıza ait layoutumuzun ne kadar aktif olacağını ayarlamamıza olanak sağlıyor.

Tüm bu işlemlerden sonra yeni oluşturduğumuz Splash activity'i uygulamamızın kalbi olarak nitelendirdiğimiz Android Manifest dosyasında tanımını gerçekleştirmemiz gerekiyor.

[code]<activity
            android:name=".Splash"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>[/code]

        
        
Böyle bir tanım bizim işimizi görecektir. Fark ettiğin üzere activity'nin intent action'ununu MAIN olarak değiştirdim. Bunun sebebi, uygulamamız ilk açıldığında Splash javasının çalıştırılmasını istediğimiz için. Ve yine aynı şekilde intent kategorisini LAUNCHER olarak ayarladım. Bu ise, uygulamamızı cihazımıza yüklediğimizde bize oluşturulacak olan ikonun Splash ekranı ile başlatılmasını sağlıyor.
Tüm bu değişiklikler ile birlikte eski intent actionum olan MainActivity'min ayarlarını MAIN değil, HOME olarak, intent kategorisini ise DEFAULT olarak değiştiriyorum ki uygulamamız cihazımıza yüklendiğinde bize 2 tane launcher ikonu oluşturmasını istemeyiz.

Netice itibariyle manifest dosyam şu şekle bürünüyor:

[code]<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.splashscreen"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="21" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.HOME" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        
        <activity
            android:name=".Splash"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

</manifest>[/code]

Umarım yardımcı olabilmişimdir. Kaynak kodunu da buraya (tıkla bana) bırakayım, belki kullanmak istersin. 
İyi çalışmalar dilerim...