{"id":1424,"date":"2019-02-22T17:56:10","date_gmt":"2019-02-22T17:56:10","guid":{"rendered":"https:\/\/codewk.com\/?p=1424"},"modified":"2019-02-22T18:16:16","modified_gmt":"2019-02-22T18:16:16","slug":"android-splash-screen","status":"publish","type":"post","link":"https:\/\/codewk.com\/android-splash-screen\/","title":{"rendered":"Android – Thread ve Splash Screen Uygulamas\u0131"},"content":{"rendered":"\n

Merhabalar ???? Thread mant\u0131\u011f\u0131n\u0131 kavramak ve uygulama a\u00e7\u0131ld\u0131\u011f\u0131nda kar\u015f\u0131m\u0131za gelen ilk ekran\u0131 \u00f6zelle\u015ftirmek ad\u0131na Splash Screen uygulamas\u0131 yapaca\u011f\u0131z.<\/p>\n\n\n\n

\u00d6ncelikle Splash Screen<\/a> nedir bunu \u00f6\u011frenelim.<\/p>\n\n\n\n

Splash Screen : <\/strong>Bir uygulama a\u00e7\u0131ld\u0131\u011f\u0131nda kar\u015f\u0131m\u0131za gelen ilk sayfad\u0131r, genelde uygulamay\u0131 tan\u0131tan tek bir resimden olu\u015fur ve k\u0131sa s\u00fcreli g\u00f6r\u00fcn\u00fcr. T\u00fcrk\u00e7e kar\u015f\u0131l\u0131\u011f\u0131na “kar\u015f\u0131lama ekran\u0131” diyebiliriz.<\/p>\n\n\n\n

Yapaca\u011f\u0131m\u0131z uygulama asl\u0131nda Thread mant\u0131\u011f\u0131n\u0131n ilk ad\u0131m\u0131d\u0131r. Ama \u00f6nce Thread hakk\u0131nda bilgi edinelim.<\/p>\n\n\n\n

Thread : <\/strong>Ayn\u0131 anda birden fazla i\u015flem yap\u0131lmas\u0131n\u0131 sa\u011flar. Ve bu i\u015flemler e\u015f zamanl\u0131 ger\u00e7ekle\u015fir. Java’da en fazla kullan\u0131lan yap\u0131lardan biridir. Veri okuma\/yazma i\u015flemleri, veritaban\u0131 \u00fczerinde crud<\/a><\/em> i\u015flemleri, a\u011f ileti\u015fimi ve g\u00f6r\u00fcnt\u00fc i\u015fleme, metin ayr\u0131\u015ft\u0131rma gibi i\u015flemler thread ile yap\u0131lmal\u0131d\u0131r.<\/p>\n\n\n\n

Art\u0131k Splash Screen uygulamam\u0131z\u0131 yapmaya ba\u015flayabiliriz. Uygulamam\u0131z\u0131n tasar\u0131m\u0131 ile ba\u015flayal\u0131m.<\/p>\n\n\n\n

\u0130lk xml dosyas\u0131n\u0131n tasar\u0131m\u0131nda sadece LinearLayout kullanmam\u0131z yeterli olacakt\u0131r. LinearLayout, nesneleri yatay ve dikey olarak s\u0131ralamam\u0131z\u0131 sa\u011flar ve bunu kolayla\u015ft\u0131r\u0131r. Biz bu tasar\u0131mda vertical(dikey) kullanaca\u011f\u0131z. Bunun i\u00e7in ek olarak : android:orientation=”vertical”  <\/em>kod blo\u011funu yaz\u0131yoruz. Kar\u015f\u0131lama ekran\u0131ndaki arka plan resmini de\u011fi\u015ftirmek i\u00e7in ise : android:background=””<\/em> i\u00e7erisine istedi\u011fimiz resmin konumunu ve ismini yazmam\u0131z yeterli. \u00d6rne\u011fin  @drawable\/tree <\/em>.<\/p>\n\n\n\n

splash_screen.xml<\/font><\/h2><\/strong><\/p>\n\n\n\n
<?xml version=\"1.0\" encoding=\"utf-8\"?>

<LinearLayout
xmlns:android=\"http:\/\/schemas.android.com\/apk\/res\/android\"
android:layout_width=\"match_parent\"
android:layout_height=\"match_parent\"
android:background=\"@drawable\/tree\"
android:orientation=\"vertical\">
<\/LinearLayout><\/pre>\n\n\n\n

Splash ekran\u0131ndan sonra y\u00f6nlendirece\u011fimiz yeni s\u0131n\u0131f\u0131n xml tasar\u0131m\u0131n\u0131 yapal\u0131m. <\/p>\n\n\n\n

activity_main.xml<\/font><\/h2><\/strong><\/p>\n\n\n\n
<?xml version=\"1.0\" encoding=\"utf-8\"?>

<android.support.constraint.ConstraintLayout
xmlns:android=\"http:\/\/schemas.android.com\/apk\/res\/android\"
xmlns:app=\"http:\/\/schemas.android.com\/apk\/res-auto\"
android:layout_width=\"match_parent\"
android:layout_height=\"match_parent\">

<TextView
android:id=\"@+id\/textView\"
android:layout_width=\"wrap_content\"
android:layout_height=\"28dp\"
android:text=\"\u0130kinci Ekran\"
android:textSize=\"24sp\"
app:layout_constraintBottom_toBottomOf=\"parent\"
app:layout_constraintEnd_toEndOf=\"parent\"
app:layout_constraintStart_toStartOf=\"parent\"
app:layout_constraintTop_toTopOf=\"parent\" \/>
<\/android.support.constraint.ConstraintLayout> <\/pre>\n\n\n\n

Bu k\u0131s\u0131mda \u00f6rnek olsun diye sadece TextView<\/em> ekledim. Siz istedi\u011finiz gibi d\u00fczenleyebilirsiniz.<\/p>\n\n\n\n

Geriye sadece s\u0131n\u0131flar\u0131 olu\u015fturmak kald\u0131. SplashScreen.java<\/em> ile ba\u015flayal\u0131m.<\/p>\n\n\n\n

SplashScreen.java<\/font><\/h2><\/strong><\/p>\n\n\n\n
public class SplashScreen extends AppCompatActivity {

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash<\/em>);

Splash splash = new Splash();
splash.start();
}

class Splash extends Thread {
public void run() {
try {
sleep<\/em>(4000);
}
catch (InterruptedException e) {
e.printStackTrace();
}

Intent intent = new Intent(SplashScreen.this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK <\/em>| Intent.FLAG_ACTIVITY_NEW_TASK<\/em>);
startActivity(intent);
}
}
}
<\/pre>\n\n\n\n

Kod i\u00e7erisinde olu\u015fturulan ikinci s\u0131n\u0131f\u0131 a\u00e7\u0131klamakla ba\u015flayal\u0131m. Thread olu\u015fturmak i\u00e7in Thread s\u0131n\u0131f\u0131ndan yeni bir s\u0131n\u0131f olu\u015fturduk. Bu s\u0131n\u0131f i\u00e7erisindeki run() methodu splash ekran\u0131n\u0131n \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar. Try {} i\u00e7erisinde sleep(4000) yazarak 4 saniye beklemesini sa\u011flad\u0131k. Catch{} i\u00e7erisinde ise gerekti\u011finde hata yaz\u0131s\u0131n\u0131 g\u00f6steren bir yap\u0131 yazd\u0131k. <\/p>\n\n\n\n

Intent ile activityler aras\u0131 ge\u00e7i\u015fi sa\u011flad\u0131k. Ve Intent s\u0131n\u0131f\u0131ndan t\u00fcretti\u011fimiz intent nesnesi ile FLAG_ACTIVITY_CLEAR_TASK ve FLAG_ACTIVITY_NEW _TASK kullanarak ayn\u0131 task i\u00e7inde \u00e7al\u0131\u015fan ekranlar\u0131n tekrar g\u00f6sterilmemesi i\u00e7in bir \u00f6nceki task’\u0131 silip yeni bir task ba\u015flat\u0131yoruz.<\/p>\n\n\n\n

onCreate() metodu i\u00e7erisinde ise alt s\u0131n\u0131f\u0131n nesnesini kullanarak s\u0131n\u0131f i\u00e7erisindeki metodlar\u0131n \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011fl\u0131yoruz.<\/p>\n\n\n\n

MainActivity.java<\/font><\/h2><\/strong><\/p>\n\n\n\n
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main<\/em>);
}
}
<\/pre>\n\n\n\n

Son olarak e\u011fer eklenmemi\u015fse AndroidManifest.xml<\/em> dosyas\u0131na activityleri a\u015fa\u011f\u0131daki gibi ekliyoruz.<\/p>\n\n\n\n

<activity android:name=\".MainActivity\"><\/activity>
<\/pre>\n\n\n\n

Uygulaman\u0131n Son Hali : <\/font><\/h2><\/strong><\/p>\n\n\n\n
\"\"<\/figure>\n","protected":false},"excerpt":{"rendered":"

Merhabalar, Thread mant\u0131\u011f\u0131n\u0131 kavramak ve uygulama a\u00e7\u0131ld\u0131\u011f\u0131nda kar\u015f\u0131m\u0131za gelen ilk ekran\u0131 \u00f6zelle\u015ftirmek ad\u0131na Splash Screen uygulamas\u0131 yapaca\u011f\u0131z.<\/p>\n","protected":false},"author":6,"featured_media":1446,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[80,24],"tags":[59,96,95,94],"_links":{"self":[{"href":"https:\/\/codewk.com\/wp-json\/wp\/v2\/posts\/1424"}],"collection":[{"href":"https:\/\/codewk.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/codewk.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/codewk.com\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/codewk.com\/wp-json\/wp\/v2\/comments?post=1424"}],"version-history":[{"count":13,"href":"https:\/\/codewk.com\/wp-json\/wp\/v2\/posts\/1424\/revisions"}],"predecessor-version":[{"id":1451,"href":"https:\/\/codewk.com\/wp-json\/wp\/v2\/posts\/1424\/revisions\/1451"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/codewk.com\/wp-json\/wp\/v2\/media\/1446"}],"wp:attachment":[{"href":"https:\/\/codewk.com\/wp-json\/wp\/v2\/media?parent=1424"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/codewk.com\/wp-json\/wp\/v2\/categories?post=1424"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/codewk.com\/wp-json\/wp\/v2\/tags?post=1424"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}