Arkadaşlar merhaba,
Bildiğiniz gibi ekranlarımızı layout klasörünün altındaki xmller ile yaratıyorduk. Bunu yaparken de hem eski alışkanlıklardan hem de android'in default grafik editörününün tam kullanışlı olmamasından dolayı xmlleri manuel kendimiz satır satır yazıyorduk. Ancak artık buna pek gerek kalmadı diyebiliriz. Droiddraw adındaki bu online editör bir çok eksikliği kapatıyor gibi.
Buraya tıklayarak deneyebilirsiniz. Yapmanız gereken tek şey output'u alıp kendi layout xml'inizin üzerine overwrite etmek.
mostly about "advanced android, ios, game and augmented reality" development
18 Temmuz 2011 Pazartesi
15 Temmuz 2011 Cuma
Emulator Error: hint use '@foo' to launch a virtual device named 'foo - invalid command-line parameter
Arkadaşlar merhaba,
Hello folks,
invalid command-line parameter: Files\Android\android-sdk\tools/emulator-arm.exe.
[2011-07-12 13:16:27 - Emulator] Hint: use '@foo' to launch a virtual device named 'foo'.
[2011-07-12 13:16:27 - Emulator] please use -help for more information
R12'yi kurup projenizi run ettiğinizde yukarıdaki gibi bir hata alıyorsanız öncelikle söyleyelim bu bir bug ve nedeni boşluk karakteri, problemi gidermek için ise yapmanız gereken şey;
If you get an exception after you install R12 and try to run it, please note that it's a bug because the space character. You can follow below steps to resolve the problem.
eclipse'te; window > preferences > Android > SDK Location path'ini aşağıdaki şekildeki gibi değiştirmek
In Eclipse; window > preferences > Android > set SDK Location path as below.
C:\PROGRA~1\Android\android-sdk
(eğer bu olmazsa C:\PROGRA~2\Android\android-sdk şeklinde deneyin)
(if it does not fix please try this C:\PROGRA~2\Android\android-sdk)
İyi çalışmalar
good work
Hello folks,
invalid command-line parameter: Files\Android\android-sdk\tools/emulator-arm.exe.
[2011-07-12 13:16:27 - Emulator] Hint: use '@foo' to launch a virtual device named 'foo'.
[2011-07-12 13:16:27 - Emulator] please use -help for more information
R12'yi kurup projenizi run ettiğinizde yukarıdaki gibi bir hata alıyorsanız öncelikle söyleyelim bu bir bug ve nedeni boşluk karakteri, problemi gidermek için ise yapmanız gereken şey;
If you get an exception after you install R12 and try to run it, please note that it's a bug because the space character. You can follow below steps to resolve the problem.
eclipse'te; window > preferences > Android > SDK Location path'ini aşağıdaki şekildeki gibi değiştirmek
In Eclipse; window > preferences > Android > set SDK Location path as below.
C:\PROGRA~1\Android\android-sdk
(eğer bu olmazsa C:\PROGRA~2\Android\android-sdk şeklinde deneyin)
(if it does not fix please try this C:\PROGRA~2\Android\android-sdk)
İyi çalışmalar
good work
15 Haziran 2011 Çarşamba
Android Serisi 6. Bölüm - Intentler
Merhaba,
Son olarak projemin main activity'si olan IntentsOrnekActivity'i aşağıdaki gibi kodluyorum.
Projemi çalıştırdığımda elde edeceğim görüntü aşağıdaki gibi olmalı.
Intentlere giriş amaçlı basit bir uygulama yaptık, bir sonraki konumuzda explicit ve implicit başlıkları altında konumuzu derinleştireceğiz.
Dosya İsmi: IntentsOrnek.rar Dosya Boyutu:41.59 KB
Şu ana kadar yaptığımız örneklerin hiçbirinde sayfalar arası geçiş yapmadık. Android'de bunu yapmamıza imkan veren nesne Intent nesnesidir. Bu ilk örneğimizde intentlere basitçe bir giriş yapacağız, konu ilerledikçe muhteviyatta artmış olacak.
Senaryomuzda 2 adet düğme var, birinci düğmeye tıklandığında Türkiye 1. Ligi, diğer düğmeye tıklandığındaysa İngiltere Premier Lig'e ait sayfaya gidilecek.
Her zaman olduğu gibi yeni bir proje yaratarak işe başlıyoruz. Main.xml dosyasına sadece bu iki düğmeyi ekliyoruz.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Türkiye Ligi Fikstürü"
android:id="@+id/btnTurkiyeLigi"
/>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="İngiltere Premier Ligi Fikstürü"
android:id="@+id/btnPremierLig"
/>
</LinearLayout>Daha sonra 2 tane activity oluşturuyorum, birinin adı TurkiyeLigi diğerinin adı ise Premier Lig (aşağıdaki gibi)
TurkiyeLigi Activity
PremierLig Activity
TurkiyeLigi Activity
package app.intentornek;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class TurkiyeLigi extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView txtYazi = new TextView(this);
txtYazi.setText("türkiye spor toto 1. ligi sayfası");
setContentView(txtYazi);
}
}PremierLig Activity
package app.intentornek;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class PremierLig extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView txtYazi = new TextView(this);
txtYazi.setText("ingiltere premier ligi sayfası");
setContentView(txtYazi);
}
}
Oluşturulan bu Activityleri AndroidManifest dosyama ekliyorum.<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="app.intentornek"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".IntentsOrnekActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".TurkiyeLigi"></activity>
<activity android:name=".PremierLig"></activity>
</application>
</manifest>Son olarak projemin main activity'si olan IntentsOrnekActivity'i aşağıdaki gibi kodluyorum.
package app.intentornek;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class IntentsOrnekActivity extends Activity
implements OnClickListener{
/** OnClickListener nesnesi sürekli kullanılacağı için implemente edildi. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(app.intentornek.R.layout.main);
//butonlar bulunuyor
Button btnTurkiyeLigi = (Button)findViewById(app.intentornek.R.id.btnTurkiyeLigi);
Button btnPremierLig = (Button)findViewById(app.intentornek.R.id.btnPremierLig);
//click eventleri set ediliyor
btnTurkiyeLigi.setOnClickListener(this);
btnPremierLig.setOnClickListener(this);
}
@Override
public void onClick(View v) {
//Bir butonun click eventi fire edildiğinde buraya giriliyor,
//hangi butondan geldiği switch edilip buna göre önceden yaratılan intent set ediliyor.
Intent intent = new Intent();
switch (v.getId()) {
case app.intentornek.R.id.btnTurkiyeLigi:
intent.setClass(getApplicationContext(), app.intentornek.TurkiyeLigi.class);
startActivity(intent);
break;
case app.intentornek.R.id.btnPremierLig:
intent.setClass(getApplicationContext(), app.intentornek.PremierLig.class);
startActivity(intent);
break;
default:
Toast.makeText(getApplicationContext(), "lig bulunamadı", Toast.LENGTH_SHORT).show();
break;
}
}
}Projemi çalıştırdığımda elde edeceğim görüntü aşağıdaki gibi olmalı.
Intentlere giriş amaçlı basit bir uygulama yaptık, bir sonraki konumuzda explicit ve implicit başlıkları altında konumuzu derinleştireceğiz.
Dosya İsmi: IntentsOrnek.rar Dosya Boyutu:41.59 KB
Etiketler:
android,
android eğitimi,
android türkçe,
Intent
31 Mayıs 2011 Salı
Android Serisi 5. Bölüm - List Activity - Custom Adapter
Merhaba,
Kaldığımız yerden list activity ile devam ediyoruz. Her zaman olduğu gibi yine lafı hiç uzatmayacağım, örnek bir senaryo ile konuya bodozlama giriş yapıyoruz. İşte senaryo; kullanıcının karşısına Türk futbol takımlarının olduğu bir liste sunacağız, kullanıcı listedeki itemlardan birine bastığında seçimini ekrana yansıtacağız, eğer bu itemlardan birine uzunca basarsa silmek isteyip istemediğini soracak ve ona göre aksiyon alacağız. Kısaca bugüne kadar öğrendiklerimizi hafifçe bir toparlamış olacağız. Hadi başlayalım.
Önce yeni bir proje ve takimlar isimli yeni bir aktivite yaratıyoruz yalnız bu aktivitenin öncekilerden bir farkı olacak. Bu aktivitemiz öncekiler gibi Activity class'ından değil ListActivity class'ından extend edilecek.
Daha sonra custom adapter'ımızı oluşturmak için layout > row.xml'imizi yaratıp aşağıdaki gibi düzenliyoruz.
Bu işlemin ardından drawable klasörlerimize 32x32 takım logolarımızı atıyoruz.
Tamam sıra geldi Takım classımızı oluşturmaya, resimdeki gibi src klasörünün altında Takim adinda bir class yaratıyor ve aşağıdaki gibi kodluyoruz.
Şimdi de sıra customadapter'ımızda, yine src klasöründe TakimAdapter adinda bir class oluşturup aşağıdaki gibi düzenliyoruz.
Artık custom adapterımızda, Takim class'imizda hazır. Takimlar ListActivity'mizi yapılandırabiliriz.
Çalıştırdığımızda projemizin ekran görüntüleri aşağıdaki gibi olmalı.
Bir sonraki örnek uygulamamızda görüşmek üzere derken tekrar hatırlatmak istiyorum sorularınızı çekinmeden sorabilirsiniz, fırsat bulduğum müddetçe yanıtlamaya çalışacağım.
Dosya İsmi: ListActivityOrnek.rar
Dosya Boyutu:74.59 KB
Kaldığımız yerden list activity ile devam ediyoruz. Her zaman olduğu gibi yine lafı hiç uzatmayacağım, örnek bir senaryo ile konuya bodozlama giriş yapıyoruz. İşte senaryo; kullanıcının karşısına Türk futbol takımlarının olduğu bir liste sunacağız, kullanıcı listedeki itemlardan birine bastığında seçimini ekrana yansıtacağız, eğer bu itemlardan birine uzunca basarsa silmek isteyip istemediğini soracak ve ona göre aksiyon alacağız. Kısaca bugüne kadar öğrendiklerimizi hafifçe bir toparlamış olacağız. Hadi başlayalım.
Önce yeni bir proje ve takimlar isimli yeni bir aktivite yaratıyoruz yalnız bu aktivitenin öncekilerden bir farkı olacak. Bu aktivitemiz öncekiler gibi Activity class'ından değil ListActivity class'ından extend edilecek.
Daha sonra custom adapter'ımızı oluşturmak için layout > row.xml'imizi yaratıp aşağıdaki gibi düzenliyoruz.
<?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="?android:attr/listPreferredItemHeight"
android:padding="6dip">
<ImageView
android:id="@+id/imgLogo"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_marginRight="6dip"
android:src="@drawable/icon" />
<LinearLayout
android:orientation="vertical"
android:layout_width="0dip"
android:layout_weight="1"
android:layout_height="fill_parent">
<TextView
android:id="@+id/lblIsim"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:gravity="center_vertical"
/>
<TextView
android:id="@+id/lblSampiyonlukSayisi"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:singleLine="true"
android:ellipsize="marquee"
/>
</LinearLayout>
</LinearLayout>Bu işlemin ardından drawable klasörlerimize 32x32 takım logolarımızı atıyoruz.
Tamam sıra geldi Takım classımızı oluşturmaya, resimdeki gibi src klasörünün altında Takim adinda bir class yaratıyor ve aşağıdaki gibi kodluyoruz.
package com.tft;
public class Takim {
//constructorlar
public Takim(){}
public Takim(String isim, int sampiyonluk_sayisi,String logo){
this._isim = isim;
this._sampiyonlukSayisi = sampiyonluk_sayisi;
this._logo = logo;
}
//fieldlar
private String _isim;
private int _sampiyonlukSayisi;
private String _logo;
//propertyler
public String getIsim(){
return _isim;
}
public void setIsim(String isim){
_isim = isim;
}
public int getSampiyonlukSayisi(){
return _sampiyonlukSayisi;
}
public void setSampiyonlukSayisi(int sampiyonlukSayisi){
_sampiyonlukSayisi = sampiyonlukSayisi;
}
public String getLogo(){
return _logo;
}
public void setLogo(String logo){
_logo = logo;
}
}Şimdi de sıra customadapter'ımızda, yine src klasöründe TakimAdapter adinda bir class oluşturup aşağıdaki gibi düzenliyoruz.
package com.tft;
import java.util.ArrayList;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
class TakimAdapter extends ArrayAdapter<Takim> {
private Context context = null;
private ArrayList<Takim> items;
public TakimAdapter(Context context, int textViewResourceId, ArrayList<Takim> items) {
super(context, textViewResourceId, items);
this.items = items;
this.context = context;
}
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
//inflaterlar xml inputu codebehind'da nesneye çevirmemizi sağlarlar.
LayoutInflater vi = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(com.tft.R.layout.row, null);
}
Takim takim = items.get(position);
if (takim != null) {
//listemizde gözükecek kontrollerimizi set ediyoruz.
TextView lblIsim = (TextView) v.findViewById(com.tft.R.id.lblIsim);
TextView lblSampiyonlukSayisi = (TextView) v.findViewById(com.tft.R.id.lblSampiyonlukSayisi);
ImageView imgLogo = (ImageView)v.findViewById(com.tft.R.id.imgLogo);
if (lblIsim != null) {
lblIsim.setText(takim.getIsim()); }
if(lblSampiyonlukSayisi != null){
lblSampiyonlukSayisi.setText("Şampiyonluk Sayısı: "+ takim.getSampiyonlukSayisi());
}
if(imgLogo != null){
//logolarımızın IDlerini alıyoruz.
int logoID = context.getResources().getIdentifier(takim.getLogo(), "drawable", context.getPackageName());
imgLogo.setImageResource(logoID);
}
}
return v;
}
}
Artık custom adapterımızda, Takim class'imizda hazır. Takimlar ListActivity'mizi yapılandırabiliriz.
package com.tft;
import java.util.ArrayList;
import android.app.AlertDialog;
import android.app.ListActivity;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
public class Takimlar extends ListActivity { //ListActivity classından türetildi
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//takimlari kendi yarattığım row bazında oluşturuyorum
final ArrayAdapter<Takim> adapter = new TakimAdapter(this, com.tft.R.layout.row, getTakimlar());
setListAdapter(adapter);
//itemlara tıklandığında yapılacak işlem
getListView().setOnItemClickListener(new OnItemClickListener(){
public void onItemClick(AdapterView<?> parent, View v, int position,
long arg3) {
Takim oTakim = (Takim)parent.getItemAtPosition(position);
Toast.makeText(getBaseContext(),
oTakim.getIsim(),
Toast.LENGTH_SHORT).show();
}
});
//itemlara uzun basıldığında yapılacak işlem
getListView().setOnItemLongClickListener(new OnItemLongClickListener(){
public boolean onItemLongClick(AdapterView<?> parent, View v,
int position, long arg3) {
final Takim oTakim = (Takim)parent.getItemAtPosition(position);
//burada AlertDialog.Builder'ın constructor'ına dikkat edin. Listactivitymizin context'ini atıyoruz.
AlertDialog.Builder builder = new AlertDialog.Builder(Takimlar.this);
builder.setMessage("Bu takımı silmek istediğinizden emin misiniz?");
builder.setPositiveButton("Evet", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
adapter.remove(oTakim);
adapter.notifyDataSetChanged();
}
});
builder.show();
return false;
}
});
}
//Takimlar ekleniyor
private ArrayList<Takim> getTakimlar(){
ArrayList<Takim> takimList = new ArrayList<Takim>();
takimList.add(new Takim("Galatasaray",17,"gs"));
takimList.add(new Takim("Fenerbahçe",18,"fb"));
takimList.add(new Takim("Beşiktaş",13,"bjk"));
takimList.add(new Takim("Trabzonspor",6,"ts"));
takimList.add(new Takim("Bursaspor",1,"bs"));
return takimList;
}
}Çalıştırdığımızda projemizin ekran görüntüleri aşağıdaki gibi olmalı.
Bir sonraki örnek uygulamamızda görüşmek üzere derken tekrar hatırlatmak istiyorum sorularınızı çekinmeden sorabilirsiniz, fırsat bulduğum müddetçe yanıtlamaya çalışacağım.
Dosya İsmi: ListActivityOrnek.rar
Dosya Boyutu:74.59 KB
30 Mayıs 2011 Pazartesi
Bunun üzerine Fifa oynamaya devam edenler oldu...
Skora aldanmamak lazım. Direklerden dönenler, hakem sıbobçek'in çalmadığı düdükler... ortasahayı geçemeyen, kendi sahasına hapsolmuş ezik bir Sunderland. Büyük Liverpool, yürüyedur...
Etiketler:
fifa 11,
futbol,
liverpool,
sunderland,
you will never walk alone
Android Serisi 4. Bölüm - AlertDialog.Builder Sınıfı ve Dialog Kutuları
Merhaba arkadaşlar, tekrar birlikteyiz.
Konumuz gayet basit olmakla birlikte yazılım uygulamalarının da olmazsa olmazlarından biri. Biz yine lafı uzatmadan örnekle hemen işe koyulalım.
Senaryo şu; bir düğme var, kullanıcı düğmeye bastığında karşısına bir dialog box çıkacak. Sorulan soruya evet derse title değiştirilip rengi sarıya dönüştürülecek. Hayır derse bir mesajla bu seçimi kullanıcıya belirtilecek.
BuilderOrnek adinda bir proje yaratıyorum. Activity'imin adı ise Main.
Layout > main.xml dosyasını aşağıdaki gibi editliyorum.
Son olarak Main.java activity'imi açıp aşağıdaki gibi düzenliyorum.
ve işte sonuç;
Dosya İsmi: BuilderOrnek.rar
Dosya Boyutu:41.49 KB
Konumuz gayet basit olmakla birlikte yazılım uygulamalarının da olmazsa olmazlarından biri. Biz yine lafı uzatmadan örnekle hemen işe koyulalım.
Senaryo şu; bir düğme var, kullanıcı düğmeye bastığında karşısına bir dialog box çıkacak. Sorulan soruya evet derse title değiştirilip rengi sarıya dönüştürülecek. Hayır derse bir mesajla bu seçimi kullanıcıya belirtilecek.
BuilderOrnek adinda bir proje yaratıyorum. Activity'imin adı ise Main.
Layout > main.xml dosyasını aşağıdaki gibi editliyorum.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
android:id="@+id/lblTitle"
/>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:onClick="BuilderDeneme"
android:text="Tıklandığında Alert oluşacak"
android:id="@+id/btnBuilder"
/>
</LinearLayout>Son olarak Main.java activity'imi açıp aşağıdaki gibi düzenliyorum.
package com.builderornek;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
public class Main extends Activity {
private final Context context = this; //context'imizi globalleştiriyoruz.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
//btnBuilder'a tıklandığında aşağıdaki method çalışacak.
public void BuilderDeneme(final View v){
//Dialog nesnesi oluşturuluyor.
AlertDialog.Builder builder = new AlertDialog.Builder(context);
//Kullanıcıya gösterilecek mesaj oluşturuluyor.
builder.setMessage("Devam ederek başlık yazısını değiştirmek istediğinizden emin misiniz?");
//Cancel buttonu iptal ediliyor (örnek olması amacıyla koydum)
builder.setCancelable(false);
//Kullanıcı tamam diyerek devam etmek istediğinde (true response'unda yapılacaklar.)
builder.setPositiveButton("Evet", new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int which) {
TextView lblTitle = (TextView)findViewById(R.id.lblTitle);
lblTitle.setTextColor(Color.YELLOW);
lblTitle.setText("baslik değiştirildi ve rengi sarı oldu.");
}
});
//kullanıcı iptal diyerek devam etmek istediğinde. (false)
builder.setNegativeButton("Hayır", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "Bir değişiklik yapılmadı", Toast.LENGTH_SHORT).show();
}
});
//builder dialogumuzu kullanıcıya gösteriyoruz.
builder.show();
}
}ve işte sonuç;
Dosya İsmi: BuilderOrnek.rar
Dosya Boyutu:41.49 KB
25 Mayıs 2011 Çarşamba
Android Serisi 3. Bölüm - Values klasörü ve Localization
Arkadaşlar merhaba, android serisinin üçüncü bölümüyle tekrar beraberiz. İsterseniz hiç uzatmadan direk values klasörünün ne işe yaradığını belirterek başlayalım. Özetle values klasörü string sabitlerden oluşan xml dosyaları içerir. Genelde localization ve başka nesnelere yeni değerler atamak amacıyla kullanılır. Localization'ı zaten birlikte yapacağız ancak başka nesnelere yeni değer atamak cümlesiyle neyi kastediyoruz onu kısaca açıklayalım.
Mesela resource'a kendi yaptığınız renk kodunu ekleyebilirsiniz. Values klasörüne colors.xml adıyla yeni bir Android XML dosyası oluşturup aşağıdaki kodu içerisine kaydedin.
Artık bu color elemanlarını name tag'inde atadığınız değere göre kullanmanız için hiçbir engel yok. R.color.baslik şeklinde çağırmanız yeterli.
LOCALIZATION
2. bölümde yapmış olduğumuz örnek uygulamayla devam edelim. Orada hardcoded eklediğimiz bölümleri dinamikleştirmiş olacağız. Bunun için values klasöründe aşağıdaki gibi yeni bir android.xml dosyası oluşturun.

Not: Benim emulatörümde türkçe dil desteği olmadığından dolayı -ki büyük ihtimal sizinkinde de olmayacaktır- fransızca'ya göre ayarlama yapıyor olacağım.
şimdi values klasörümüz içindeki string.xml dosyasını açıp içini aşağıdaki gibi değiştiriyoruz.
aynı şekilde values-fr klasörü içerisindeki string.xml dosyasını da aşağıdaki gibi değiştiriyoruz.
xml tarafında yapacağımız son değişiklik layout klasörü içerisinde bulunan main.xml dosyasındaki tüm viewların text attributelerini aşağıdaki gibi değiştirmek. Ben sadece bir tanesini örnek olarak koyuyorum.
Artık xml tarafında yapacaklarımız bitti. Şimdi kod tarafına geçelim. Toast.makeText methodumuzu aşağıdaki gibi değiştirelim.
Şimdi uygulamamızı hiç dil değişikliği yapmadan çalıştıralım.
Şimdi de dili fransızcaya getirip uygulamamızı tekrar çalıştıralım.
Dosya İsmi: Activity_View_Toast_Localization.rar
Dosya Boyutu:43.97 KB
Mesela resource'a kendi yaptığınız renk kodunu ekleyebilirsiniz. Values klasörüne colors.xml adıyla yeni bir Android XML dosyası oluşturup aşağıdaki kodu içerisine kaydedin.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="baslik">#AAFFFF99</color>
<color name="satir_1">#FF0000FF</color>
<color name="satir_2">#90FF0000</color>
<color name="uyari">#AA0000FF</color>
</resources>
Artık bu color elemanlarını name tag'inde atadığınız değere göre kullanmanız için hiçbir engel yok. R.color.baslik şeklinde çağırmanız yeterli.
LOCALIZATION
2. bölümde yapmış olduğumuz örnek uygulamayla devam edelim. Orada hardcoded eklediğimiz bölümleri dinamikleştirmiş olacağız. Bunun için values klasöründe aşağıdaki gibi yeni bir android.xml dosyası oluşturun.

Not: Benim emulatörümde türkçe dil desteği olmadığından dolayı -ki büyük ihtimal sizinkinde de olmayacaktır- fransızca'ya göre ayarlama yapıyor olacağım.
şimdi values klasörümüz içindeki string.xml dosyasını açıp içini aşağıdaki gibi değiştiriyoruz.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Our Android Programme!</string>
<string name="app_name">Sample App Login Screen</string>
<string name="lblUsername">Username: </string>
<string name="lblPassword">Password: </string>
<string name="lblBtnGiris">Login</string>
<string name="msg_Login_1">Invalid Username or Password!</string>
<string name="msg_Login_2">Wellcome Dear</string>
</resources>
aynı şekilde values-fr klasörü içerisindeki string.xml dosyasını da aşağıdaki gibi değiştiriyoruz.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Android Programımız</string>
<string name="app_name">Deneme App Giriş Ekrani</string>
<string name="lblUsername">Kullanıcı Adı: </string>
<string name="lblPassword">Şifre: </string>
<string name="lblBtnGiris">Giriş</string>
<string name="msg_Login_1">Geçersiz kullanıcı adı veya parola!</string>
<string name="msg_Login_2">Hoşgeldiniz Sayın</string>
</resources>
xml tarafında yapacağımız son değişiklik layout klasörü içerisinde bulunan main.xml dosyasındaki tüm viewların text attributelerini aşağıdaki gibi değiştirmek. Ben sadece bir tanesini örnek olarak koyuyorum.
<TextView
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_weight="2"
android:text="@string/lblUsername"
android:gravity="right"
/>
Artık xml tarafında yapacaklarımız bitti. Şimdi kod tarafına geçelim. Toast.makeText methodumuzu aşağıdaki gibi değiştirelim.
Toast.makeText(getApplicationContext(), R.string.msg_Login_2 + ' ' + txtUsername.getText().toString(), Toast.LENGTH_SHORT).show();
Şimdi uygulamamızı hiç dil değişikliği yapmadan çalıştıralım.
Şimdi de dili fransızcaya getirip uygulamamızı tekrar çalıştıralım.
Dosya İsmi: Activity_View_Toast_Localization.rar
Dosya Boyutu:43.97 KB
Etiketler:
android,
localization,
lokalizasyon,
R,
values
Kaydol:
Kayıtlar (Atom)











