Mobil programlamada calenderview uygulaması :MobileCoder I MobileCoder.NET I Mobil Programlama I Android Programlama I Mobil Geliştiricilerin Buluşma Noktası I www.MobileCoder.Net

Mobil programlamada calenderview uygulaması

07.04.2015 tarihinde Android Programlama kategorisine eklenmiş, 43 views Kişi Okumuş ve 0 Yorum Yapılmış.

Android 4.0 Platformu ile gelen Android Calender API, kullanıcı arayüzü tasarımında kullanılan Selection Widget başlığında altındaki Date/Time Selection Widget konusunda altında incelenebilir.

Bu makalede Android Calender API kullanımı açıklayan bir örnek anlatılacaktır.

Android kullanıcıların saat ve tarihi ayarlanabilmesi içinDatePicker, TimePicker widget nesneleri ve DatePickerDialog, TimePickerDialog diyalog nesnelerine sahiptir.

DatePicker ve DatePickerDialog nesneleri tarihin gün ay yıl formatında ayarlanabilmesini sağlamaktadır.

Tarih widget’leri OnDateChangedListener veyaOnDateSetListener metodları ile kullanıcıya geri bildirim yapabilmektedir. Bu geri bildirim kullanıcının ayarladığı tarihtir.

TimePicker ve TimePickerDialog nesneleri saatin saat dakika olarak 12saat/24saat formatında ayarlanabilmesini sağlamaktadır.

Zaman widget’leri OnTimeChangedListener veyaOnTimeSetListener metodları ile kullanıcıya geri bildirim yapabilmektedirler. Bu geri bildirim kullanıcının ayarladığı zamandır.

Senaryo: Kullanıcı ekranda görülen Tarihi Ayarla ve Saati Ayarla butonları sayesinde tarihi ve saati ayarlayabilsin. Ayarlanan bu zaman bilgisi ekranın üzerine yerleştirilmiş ve arkaplanı mavi olan TextView üzerine beyaz renk yazı ile yazsın.

Projenin gerçekleştirilmesindeki ilk adımactivity_callender_wiget.xml layout dosyasının kodlanmasıdır


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >

<TextView

android:id="@+id/lblDateAndTime"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:background="#0000ff"

android:textStyle="bold"

android:textColor="#ffffff"

android:textSize="20sp"

android:padding="5dp"/>

<Button

android:id="@+id/btnDate"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="Tarihi Ayarla" />

<Button

android:id="@+id/btnTime"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="Zamanı Ayarla" />

</LinearLayout>


Yukarıdaki mimaride elemanları alt alta dizen bir LinearLayout içerisine 3 tane view yerleştirilmiştir. TextView ayarlanan zamanın ve tarihin yazıldığı bölgedir. Diğer view’ler ise ekran görülecek olan Tarihi Ayarla ve Zamanı Ayarla butonlarıdır.

Gerçekleştirimin ikinci adımı CallenderWiget.java dosyasının kodlanmasıdır.

package suhap.calenderwiget.com;

import java.text.DateFormat;

import java.util.Calendar;

import java.util.Date;

import android.app.Activity;

import android.app.DatePickerDialog;

import android.app.TimePickerDialog;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.DatePicker;

import android.widget.TextView;

import android.widget.TimePicker;

public class CallenderWiget extends <em>Activity</em> {

private DateFormat fmtDateAndTime = DateFormat.getDateTimeInstance();

private TextView lblDateAndTime;

private Button btnDate;

private Button btnTime;

private Calendar myCalendar = Calendar.getInstance();

DatePickerDialog.OnDateSetListener d = new DatePickerDialog.OnDateSetListener() {

public void onDateSet(DatePicker view, int year, int monthOfYear,

int dayOfMonth) {

myCalendar.set(Calendar.YEAR, year);

myCalendar.set(Calendar.MONTH, monthOfYear);

myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);

updateLabel();

}

};

TimePickerDialog.OnTimeSetListener t = new TimePickerDialog.OnTimeSetListener() {

public void onTimeSet(TimePicker view, int hourOfDay, int minute) {

myCalendar.set(Calendar.HOUR_OF_DAY, hourOfDay);

myCalendar.set(Calendar.MINUTE, minute);

updateLabel();

}

};

private void updateLabel() {

lblDateAndTime.setText(fmtDateAndTime.format(myCalendar.getTime()));

}

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_callender_wiget);

lblDateAndTime = (TextView) findViewById(R.id.lblDateAndTime);

btnDate = (Button) findViewById(R.id.btnDate);

btnDate.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {

new DatePickerDialog(CallenderWiget.this, d, myCalendar

.get(Calendar.YEAR),myCalendar.get(Calendar.MONTH),

myCalendar.get(Calendar.DAY_OF_MONTH)).show();

}

});

btnTime = (Button) findViewById(R.id.btnTime);

btnTime.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {

new TimePickerDialog(CallenderWiget.this, t, myCalendar

.get(Calendar.HOUR_OF_DAY), myCalendar

.get(Calendar.MINUTE), true).show();

}

});

}

}

 

Java dosyasına eklenen kütüphaneler aşağıdaki gibi olmalıdır. Sarı ile boyanan ilk satır oluşturulan projeye göre değişiklik gösterebilecektir.

package suhap.calenderwiget.com;

import java.text.DateFormat;

import java.util.Calendar;

import java.util.Date;

import android.app.Activity;

import android.app.DatePickerDialog;

import android.app.TimePickerDialog;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.DatePicker;

import android.widget.TextView;

import android.widget.TimePicker;

Proje içerisindeki aşağıdaki tanımlamaların yapılması gerekmektedir. İlk satırdaki fmtDateAndTime nesnesi sayesindemyCalendar ile alından sistem saati ve tarihi istenilen formata elde edilebilmektedir. myCalender nesnesi geriye bir takvim formatı döndürmektedir. Bu takvim formatı içerisinden tarihi saati ayıklamak için fmtDateAndTime nesnesine ihtiyaç vardır. Diğer 3 view (lblDateAndTime, btnDate, btnTime) layout içerisinden çağrılacaktır.


private DateFormat fmtDateAndTime = DateFormat.getDateTimeInstance();

private TextView lblDateAndTime;

private Button btnDate;

private Button btnTime;

private Calendar myCalendar = Calendar.getInstance();

Tanımlamalar yapıldıktan sonraDatePickerDialog.OnDateSetListener veTimePickerDialog.OnTimeSetListener tipinde iki nesne ile kullanıcının yaptığı değişiklikler izlenebilecektir.


DatePickerDialog.OnDateSetListener d = new DatePickerDialog.OnDateSetListener() {

public void onDateSet(DatePicker view, int year, int monthOfYear,

int dayOfMonth) {

myCalendar.set(Calendar.YEAR, year);

myCalendar.set(Calendar.MONTH, monthOfYear);

myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);

updateLabel();

}

};

TimePickerDialog.OnTimeSetListener t = new TimePickerDialog.OnTimeSetListener() {

public void onTimeSet(TimePicker view, int hourOfDay, int minute) {

myCalendar.set(Calendar.HOUR_OF_DAY, hourOfDay);

myCalendar.set(Calendar.MINUTE, minute);

updateLabel();

}

};

updateLabel() metodu ile bu değişiklikler TextView widget’i üzerinde yazılır.


private void updateLabel() {

lblDateAndTime.setText(fmtDateAndTime.format(myCalendar.getTime()));

}

Son olarak CallenderWiget Activity’sini oncrate metodundaTextView, btnDate, btnTime butonları layout’dan çağrılır ve butonlara basılıp basılmadığı izlenir. İlgili butona basıldığındaDatePickerDialog ve TimePickerDialog nesneleri yukarıdaki metodlar kullanılarak oluşturulur.


@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_callender_wiget);

lblDateAndTime = (TextView) findViewById(R.id.lblDateAndTime);

btnDate = (Button) findViewById(R.id.btnDate);

btnDate.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {

new DatePickerDialog(CallenderWiget.this, d, myCalendar

.get(Calendar.YEAR),myCalendar.get(Calendar.MONTH),

myCalendar.get(Calendar.DAY_OF_MONTH)).show();

}

});

btnTime = (Button) findViewById(R.id.btnTime);

btnTime.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {

new TimePickerDialog(CallenderWiget.this, t, myCalendar

.get(Calendar.HOUR_OF_DAY), myCalendar

.get(Calendar.MINUTE), true).show();

}

});

}

Proje çalıştırıldığında ekran görüntüsü aşağıdaki şekilde olacaktır

Hülya ÇELEBİ

Yazar Hakkında

Yazar : Hasan Nair

Yazar Hakkında :

Yazarın Tüm Yazıları İçin Tıklayınız

Yorumlar

Sitemizde En Çok Okunan İçerikler

ANDROİD TELEFONLARA ROOT ATMA
ANDROİD TELEFONLARA ROOT ATMARoot Ne demek ? Bir android cihazı root etmek telefonun
fragment
ANDROİD FRAGMENT YAPISI VE KULLANIMIFragmentler Activity içerisinde yer alan kullanıcı ara yüzleridir. Fragment
Asp.NET’de web servis hazırlama ve Android de kullanimi  Web Servis Nedir ? Web üzerinden HTTP protokolü ile hizmet
ANDROİD TELEFONLARDA KONFERANS GÖRÜŞME
ANDROİD TELEFONLARDA KONFERANS GÖRÜŞMEANDROİD TELEFONLARDA KONFERANS GÖRÜŞME   Konferans görüşme çok fazla bilinmeyen androidin

Sitemizde En Çok Yorumlanan İçerikler

WEB UYGULAMALARINDA EKRAN UYUMU
WEB UYGULAMALARINDA EKRAN UYUMUAndroid için web uygulamaları hazırlarken odaklanmamız gereken en önemli
ActionBar Kullanım Özellikleri
ActionBar Kullanım ÖzellikleriActionBar Genel Bakış ActionBar temel olarak 4 ana işlevsel alan barındırır.

Son Yapılan Yorumlar

  • Kategoriler

  • Son Yazılar

  • Takvim

    Haziran 2017
    P S Ç P C C P
    « Kas    
     1234
    567891011
    12131415161718
    19202122232425
    2627282930  
  • Etiketler

  • Son Yorumlar

    • Arşivler

    • Meta