Android | CodeWK https://codewk.com Sınırsız bilgi ve çok eğlenceli ! Fri, 05 Apr 2019 11:41:35 +0000 tr hourly 1 https://wordpress.org/?v=6.1.7 https://codewk.com/wp-content/uploads/2019/02/cropped-favicon-32x32.jpg Android | CodeWK https://codewk.com 32 32 Android – Date Picker & Time Picker Kullanımı https://codewk.com/android-date-time-picker-kullanimi/ https://codewk.com/android-date-time-picker-kullanimi/#respond Wed, 27 Feb 2019 16:20:28 +0000 https://codewk.com/?p=1515 Merhaba arkadaşlar, bu yazıda Android uygulamalarda kullanılan Date Picker ve Time Picker nedir, nasıl kullanılır bunları öğreneceğiz ve bununla ilgili Button ve TextView’lerden oluşan bir uygulama yapacağız. Gerek web uygulamalarda, gerekse mobil uygulamalarda kullanılan zaman kavramı çok önemlidir. Şimdir ise Date Picker ve Time Picker’ın ne olduğunu anlamaya çalışalım. Ve daha sonrasında da basit bir uygulama ile olayı kavramaya çalışalım. Başlıyoruz.. ????

Date Picker : Anlamı “tarih seçici“dir. Tarih belirlemede kullanılır.
Time Picker : Anlamı “saat seçici“dir. Saat belirlemede kullanılır.
Bu iki yapı kullanıcıların manuel olarak saat ve tarih belirlemesine gerek kalmadan basit bir diyalog penceresi kullanmasını sağlar.

Örnek Uygulama :

Bu uygulamada giriş ekranında “Saat” ve “Tarih” adında iki buton olacak ve kullanıcılar açılan diyalog penceresinden saat ve tarihi seçebilecekler ve biz de bu iki yapının kullanımını anlamış olacağız. Hadi başlayalım !

activity_main.xml

<?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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#e0e0e0"
tools:context=".MainActivity"
tools:layout_editor_absoluteY="25dp">

<Button
android:id="@+id/button"
android:layout_width="115dp"
android:layout_height="60dp"
android:layout_marginEnd="20dp"
android:layout_marginLeft="68dp"
android:layout_marginRight="20dp"
android:layout_marginStart="68dp"
android:background="#463c48"
android:text="SAAT"
app:layout_constraintBaseline_toBaselineOf="@+id/button2"
app:layout_constraintEnd_toStartOf="@+id/button2"
app:layout_constraintStart_toStartOf="parent" />

<Button
android:id="@+id/button2"
android:layout_width="115dp"
android:layout_height="60dp"
android:layout_marginBottom="71dp"
android:layout_marginEnd="68dp"
android:layout_marginRight="68dp"
android:background="#463c48"
android:text="TARİH"
app:layout_constraintBottom_toTopOf="@+id/textView2"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/button"
app:layout_constraintTop_toBottomOf="@+id/textView" />

<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_marginBottom="75dp"
android:layout_marginLeft="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="128dp"
android:text=" Tarih ve saati seçmek için butonlara tıklayınız."
android:textColor="#000000"
android:textSize="18dp"
app:layout_constraintBottom_toTopOf="@+id/button2"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_marginBottom="23dp"
android:paddingLeft="10dp"
android:textColor="#000000"
android:textSize="20dp"
android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@+id/textView3"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/button2" />

<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_marginBottom="92dp"
android:paddingRight="10dp"
android:textColor="#000000"
android:textSize="20dp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView2" />
</android.support.constraint.ConstraintLayout>

Uygulamanın tasarımını istediğiniz gibi düzenleyebilirsiniz. Önemli olan seçilen değerlerin gösterilebileceği bir TextView olmasıdır. Tabi farklı fikirler de olabilir.

MainActivity.java

public class MainActivity extends AppCompatActivity {

Button button, button2;
TextView textView2,textView3;
Calendar calendar;
DatePickerDialog datePickerDialog;
int hour,minute;

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

button = (Button) findViewById(R.id.button);
button2 = (Button) findViewById(R.id.button2);
textView2 = (TextView) findViewById(R.id.textView2);
textView3 = (TextView) findViewById(R.id.textView3);

calendar = Calendar.getInstance();
hour = calendar.get(Calendar.HOUR_OF_DAY);
minute = calendar.get(Calendar.MINUTE);

//textView2.setText(hour + " : " + minute);

button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
TimePickerDialog timePickerDialog = new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
textView2.setText(hourOfDay + " : "+ minute );

}
}, hour,minute,true);
timePickerDialog.show();
}
});


button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
calendar = Calendar.getInstance();
int day = calendar.get(Calendar.DAY_OF_MONTH);
int month = calendar.get(Calendar.MONTH);
int year = calendar.get(Calendar.YEAR);

datePickerDialog = new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
textView3.setText(dayOfMonth + "/" + (month+1) + "/" + year);
}
}, day,month,year);
datePickerDialog.show();
}
});

}

}

Kodları kısaca açıklayayım. Ana sınıfta önemli olan yapılar TimePickerDialog, DatePickerDialog ve Calendar. Bu sınıflardan nesne üretmekle başlıyoruz. Butonlara tıklandığında tarih ve saat diyalog pencerelerinin çıkmasını sağlayan kodları, butonların onClick() metodu içerisine yazıyoruz. Integer cinsinden tanımladığımız hour, minute, day, month ve year‘a ise seçilen zamanlar atanır. Örnek ➡

hour = calendar.get(Calendar.HOUR_OF_DAY);
minute = calendar.get(Calendar.MINUTE);

Calendar ise takvim sınıfıdır. Bu sınıftan türettiğimiz nesne ile yukarıdaki gibi saati ve dakikayı alabildik. Ve integer cinsindeki hour ve minute değişkenlerine atadık.

Değişkenlere atadığımız değerleri butonların altındaki TextView’lerde gösterebilmek için setText kullanıyoruz.

 textView3.setText(dayOfMonth + "/" + (month+1) + "/" + year); 

Butonların onClick() metodlarının içinde kullandığımız onTimeSet() ve onDateSet() override metodları sayesinde tarih ve saat kullanımını daha kolay bir şekilde sağlıyoruz.

onTimeSet() ve onDateSet() metodlarının parametrelerinin anlamlarına da bakalım.

 public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) 
 public void onTimeSet(TimePicker view, int hourOfDay, int minute) 

hourOfDay : Gün içerisindeki geçerli saat.
minuteOfHour : Saat içerisindeki geçerli dakika.
dayOfMonth : Ay içerisindeki geçerli gün.
hour : saat
minute : dakika
day : gün
month : ay
year : yıl

Son olarak datePickerDialog.show(); ve timePickerDialog(); ile seçilen tarih ve saati ekranda gösteriyoruz.

Uygulamanın Son Hali :

Android - Date Picker & Time Picker Kullanımı
Android – Date Picker & Time Picker Kullanımı

Bu uygulama sayesinde Android’de Time Picker ve Date Picker kullanımının anlaşıldığını umuyorum. Siz de uygulamanıza tarih ve saat eklerken bu şekildeki kullanımı veya daha farklı kullanımları deneyebilirsiniz. Okuduğunuz için teşekkür ederim. Bir sonraki yazıda görüşmek üzere..????

]]>
https://codewk.com/android-date-time-picker-kullanimi/feed/ 0
Android – Thread ve Splash Screen Uygulaması https://codewk.com/android-splash-screen/ https://codewk.com/android-splash-screen/#respond Fri, 22 Feb 2019 17:56:10 +0000 https://codewk.com/?p=1424 Merhabalar ???? Thread mantığını kavramak ve uygulama açıldığında karşımıza gelen ilk ekranı özelleştirmek adına Splash Screen uygulaması yapacağız.

Öncelikle Splash Screen nedir bunu öğrenelim.

Splash Screen : Bir uygulama açıldığında karşımıza gelen ilk sayfadır, genelde uygulamayı tanıtan tek bir resimden oluşur ve kısa süreli görünür. Türkçe karşılığına “karşılama ekranı” diyebiliriz.

Yapacağımız uygulama aslında Thread mantığının ilk adımıdır. Ama önce Thread hakkında bilgi edinelim.

Thread : Aynı anda birden fazla işlem yapılmasını sağlar. Ve bu işlemler eş zamanlı gerçekleşir. Java’da en fazla kullanılan yapılardan biridir. Veri okuma/yazma işlemleri, veritabanı üzerinde crud işlemleri, ağ iletişimi ve görüntü işleme, metin ayrıştırma gibi işlemler thread ile yapılmalıdır.

Artık Splash Screen uygulamamızı yapmaya başlayabiliriz. Uygulamamızın tasarımı ile başlayalım.

İlk xml dosyasının tasarımında sadece LinearLayout kullanmamız yeterli olacaktır. LinearLayout, nesneleri yatay ve dikey olarak sıralamamızı sağlar ve bunu kolaylaştırır. Biz bu tasarımda vertical(dikey) kullanacağız. Bunun için ek olarak : android:orientation=”vertical”  kod bloğunu yazıyoruz. Karşılama ekranındaki arka plan resmini değiştirmek için ise : android:background=”” içerisine istediğimiz resmin konumunu ve ismini yazmamız yeterli. Örneğin  @drawable/tree .

splash_screen.xml

<?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>

Splash ekranından sonra yönlendireceğimiz yeni sınıfın xml tasarımını yapalım.

activity_main.xml

<?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="İkinci 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>

Bu kısımda örnek olsun diye sadece TextView ekledim. Siz istediğiniz gibi düzenleyebilirsiniz.

Geriye sadece sınıfları oluşturmak kaldı. SplashScreen.java ile başlayalım.

SplashScreen.java

public class SplashScreen extends AppCompatActivity {

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

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

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

Intent intent = new Intent(SplashScreen.this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
}
}

Kod içerisinde oluşturulan ikinci sınıfı açıklamakla başlayalım. Thread oluşturmak için Thread sınıfından yeni bir sınıf oluşturduk. Bu sınıf içerisindeki run() methodu splash ekranının çalışmasını sağlar. Try {} içerisinde sleep(4000) yazarak 4 saniye beklemesini sağladık. Catch{} içerisinde ise gerektiğinde hata yazısını gösteren bir yapı yazdık.

Intent ile activityler arası geçişi sağladık. Ve Intent sınıfından türettiğimiz intent nesnesi ile FLAG_ACTIVITY_CLEAR_TASK ve FLAG_ACTIVITY_NEW _TASK kullanarak aynı task içinde çalışan ekranların tekrar gösterilmemesi için bir önceki task’ı silip yeni bir task başlatıyoruz.

onCreate() metodu içerisinde ise alt sınıfın nesnesini kullanarak sınıf içerisindeki metodların çalışmasını sağlıyoruz.

MainActivity.java

public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}

Son olarak eğer eklenmemişse AndroidManifest.xml dosyasına activityleri aşağıdaki gibi ekliyoruz.

<activity android:name=".MainActivity"></activity>

Uygulamanın Son Hali :

]]>
https://codewk.com/android-splash-screen/feed/ 0
Android Studio ListView Kullanımı https://codewk.com/android-studio-listview-kullanimi/ https://codewk.com/android-studio-listview-kullanimi/#respond Fri, 22 Feb 2019 12:10:03 +0000 https://codewk.com/?p=1380 Bu makalede Android uygulamalarda nasıl ListView kullanabiliriz ve ListView öğelerine tıklandığında istediğimiz yazıyı nasıl gösterebiliriz bunları öğreneceğiz. Evet başlıyoruz..????

Öncelikle Android uygulamalarda sıkça kullanılan List View hakkında bilgi edinelim.

ListView : Herhangi bir liste içerisinde bulunan öğeleri içeren bir görünümdür. Android Studio’da liste oluşturabilmek için bu yapıyı kullanabiliriz.

Dilerseniz bu yapıyı nasıl kullanacağımız hakkında basit bir uygulama yazalım.

ListView Örnek Uygulama

Bu uygulamamızda bir liste olacak ve bu listedeki her bir öğeye tıklandığında listedeki verinin ismi Toast mesajıyla gösterilecek. Android Studio‘da yeni bir proje açtıktan sonra uygulamanın tasarımını yapmak için activity_main.xml dosyasını açıyoruz. Aşağıdaki gibi basit bir ListView kodu yazacağız. Not : tools:context=” “> kısmına kendi paket isminizi yazınız.

ListView
ListView

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>

<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.nisa.listview.MainActivity">

<ListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="fill_parent"/>

</android.support.constraint.ConstraintLayout>

Listedeki öğelerin her birini düzenleyecek xml dosyasını oluşturalım.

activity_list.xml

<?xml version="1.0" encoding="utf-8"?>

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginTop="5dp"
android:padding="2dp"
android:textColor="#4d4d4d"
android:text="Text"
android:textStyle="bold"
android:textAppearance="?android:attr/textAppearanceMedium"
/>

Listedeki verilerin isimlerini strings.xml dosyasına aşağıdaki gibi ekleyeceğiz. Her bir <item> </item> içerisine istediğiniz verileri girebilirsiniz.

strings.xml

<resources>
<string name="app_name">ListView</string>
<string-array name="array_animals">
<item>Bee</item>
<item>Cat</item>
<item>Cow</item>
<item>Dog</item>
<item>Frog</item>
</string-array>
</resources>

Son olarak, bir adapter ile listedeki elemanların kullanılmalarını ve xml dosyalarıyla bağlantıyı sağlayacak MainActivity.java sınıfını kodlayacağız. Listedeki öğelere tıklandığında, öğelerin isimlerininToast mesajı ile görünmesini istiyoruz. Ve liste bağlantısını sağlayan yapıları da şu şekilde açıklayabilirim.

ArrayAdapter : Kullanıcı ara birimi ile verileri birbirine bağlayan dizidir. Bu veriler içinde görüntüleme şekli ve görüntülenecek elemanlar bulunmaktadır.
setAdapter : Oluşturduğumuz ArrayAdapter’ı ListView’e atamak için kullanıyoruz.

MainActivity.java

public class MainActivity extends AppCompatActivity {

String[] item;
ListView lv;
TextView tv;

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

lv = (ListView)findViewById(R.id.lv);
tv = (TextView)findViewById(R.id.tv);
item = getResources().getStringArray(R.array.array_animals);

final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, android.R.id.text1, item);
lv.setAdapter(adapter);

lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {

String value = adapter.getItem(position);
Toast.makeText(getApplicationContext(),value, Toast.LENGTH_SHORT).show();

}
});
}
}

MainActivity.java sınıfında öncelikle görsel komponentlerin ana sınıfla uyumlu çalışmasını sağlayacak kod bloklarını yazdık. strings.xml dosyasındaki öğeleri sınıf içerisinde kullanabilmek için item tanımladık. ArrayAdapter ile bu öğelerin ListView’in satırlarında görünmesini sağladık. En altta ise value adında bir değişken tanımlayıp, itemların pozisyonlarını bu değişkene atayıp Toast mesajı ile gösterdik.

Ve sonunda List View’i basit bir şekilde kullanmış olduk. ????

Uygulamanın Son Hali
Uygulamanın Son Hali

Siz de liste elemanlarına tıklandığında Toast mesajı göstermek yerine Intent ile yeni bir sınıfa yönlendirme veya Dialog mesajı gösterme şeklinde bu uygulamayı değiştirebilirsiniz.

Yazımı okuduğunuz için teşekkür ederim, umarım faydalı olmuştur. Yorumlarınızı ve sorularınızı bekliyorum. Bu tarz yazılar ve faydalı olabilecek tüm bilgiler için beklemede kalın. Sayfamızın diğer içeriklerine buradan ulaşabilirsiniz. İyi günler dilerim..????????‍♀

]]>
https://codewk.com/android-studio-listview-kullanimi/feed/ 0