MOBİL UYGULAMA
GELİŞTİRME
Hedefler
Bu üniteyi çalıştıktan sonra;
BaseAdapter yapısından miras alabilir,
ListView bileşenine özel layout ve adapter oluşturabilir,
WebView bileşenini kullanarak web sayfalarını gösterebilir,
Birden fazla activity nesnesi ile çalışabilir.
2
ListView,WebView ve Activityler – Mobil Uygulama Geliştirme
İçindekiler
PROGRAMLAMA VE JAVA TEMEL KAVRAMLARI

ListView

WebView

Birden fazla activity ile çalışma
Mobil Uygulama Geliştirme – Öğr.Gör. Nevzat TAŞBAŞI
ListView
Verileri tek satır içerisinde satırlar şeklinde listeleyerek göstermek amacıyla kullanılan
bileşenlerden biride ListViewdi.
ListView içerisinde temel veri türlerinden farklı olarak kendi oluşturacağımız veri
yapısını göstermek için adapter içerisinde kullanılacak nesnelerin sınıf tanımının
yapılması gerekmektedir.
Örnek olarak kişilerin adını ve soyadını listeleyeceğimiz
gerçekleştireceğimiz için “isim” isimli bir sınıf tanımlıyoruz.
bir
uygulama
public class isim {
private String ad;
private String soyad;
public isim(String a, String s) {
super();
ad = a;
soyad=s;
}
public void setAd(String a) {
ad=a; }
public void setSoyad(String s){
soyad=s;}
public String getAd() {
return ad; }
public String getSoyad(){
return soyad; }
}
Kullanacağımız sınıfı tanımladıktan sonra bu sınıfı kullanacak olan bir Adapter
tanımlıyoruz. Bunun için oluşturulacak adapterin miras alacağı BaseAdapter sınıfının
projeye dâhil edilmelidir.
import
import
import
import
import
import
android.app.Activity;
android.view.LayoutInflater;
android.view.View;
android.view.ViewGroup;
android.widget.BaseAdapter;
java.util.ArrayList;
Oluşturulan adapter sınıfı BaseAdapter sınıfından miras almalıdır. BaseAdapter sınıfı
içerisinde 4 adet Abstract sınıfın tanımlanması gerekir.
public class BenimAdapter extends BaseAdapter
Adapter içerisinde gruplanacak sınıf içerisinde bu sınıftan oluşturulan nesnenin
alınacağı bir değişken ve adapter’ in tanımlandığı activity’nin bilgilerinin tutulacağı
değişken belirlenebilir.
Oluşturucu sınıf ile Adapter tanımlandığında tanımlandığı yer ve kullanılan sınıfın
alındığı metod tanımlanır.
public
BenimAdapter(Context
ArrayList<isim> isimler) {
kodlar
}
activity,
int
arayuz,
3
4
ListView,WebView ve Activityler – Mobil Uygulama Geliştirme
Listede kaç eleman olduğunun döndürüldüğü metot yeniden yazılır.
@Override
public int getCount() {
return <nesnenin_adı>.size();
}
Listede indis değeri gönderildiğinde elemanı döndüren metot yeniden yazılır.
@Override
public isim getItem(int indis) {
return <nesnenin_adı>.get(indis);
}
Listenin kullandığı layout üzerindeki yapıları kullanarak listeyi dolduran metod yeniden
yazılır. Burada alınan indis değerine göre nesneden çekilen değer, alınan layout
üzerinde bulunan bileşenlere yazılır.
@Override
public View getView(int indis, View v, ViewGroup
arg2) {
if (v == null)
v
=
inflater.inflate(R.layout.arayuz,
null);
TextView
ad
=
(TextView)
v.findViewById(R.id.ad);
TextView soyad = (TextView)
v.findViewById(R.id.soyad);
isim isi = ismi.get(indis);
ad.setText(isi.getAd());
soyad.setText(isi.getSoyad());
return v;
}
}
Adapter’in içerisinde nesnenin nasıl listeleneceğini gösteren şablon dosyasının (layout
altında xml dosyası) oluşturulması sağlanır.
Android’ te hazır olarak gelen şablonlara ek olarak kendi şablonlarımızı hazırlayarak
kullanabiliriz.
Oluşturulan adapter sınıfının tanımlandığı ana activity’de listview’e adapter eklenir.
ArrayAdapter<veri_türü> adapter_adı=new
ArrayAdapter<veri_türü>(aktivity_adı,
layout_adı,<grupverisiadı>);
WebView
Android uygulamalarında web sayfaları gösterimini gerçekleştirmek amacıyla WebView
bileşeni kullanılır.
HTML5 uyumlu gösterici web sayfası içeriğini gösterecektir.
Web sayfalarını görebilmek için projemize internete erişim izni vermemiz
gerekmektedir.
Mobil Uygulama Geliştirme – Öğr.Gör. Nevzat TAŞBAŞI
Bunun için AndroidManifest dosyası tıklandığında açılan pencere alt kısımda yer alan
Permissions sekmesi tıklanır.
Açılan pencerede Add butonu tıklanır.
Açılan iletişim penceresinde Uses Permission seçilir ve Tamam butonuna tıklanır.
Açılan sayfada eklenmek istenen izinler seçilerek eklenir.
5
6
ListView,WebView ve Activityler – Mobil Uygulama Geliştirme
Yada uses-permisson etiketi kullanılarak Android:name özelliğine
android.permission.INTERNET değeri girilir.
<uses-permission android:name="android.permission.INTERNET" />
Gösterilecek websayfasının adresi, bileşenin loadUrl metoduna parametre olarak
verilir.
WebView bileşeninde web sayfaları gösterilebileceği gibi oluşturduğumuz html
kodlarınıda gösterebiliriz.
Bunun için loadData(htmlkodu,”text/html”,null) metodunu kullanılır.
Birden Fazla activity ile çalışmak
Yeni activity oluşturmak için en kısa yöntem src klasörü altında yeralan activity
dosyasının kopyalarak gerçekleştirmektir. Benzer şekilde Layout dosyasıda
kopyalanarak çoğaltılır.
Oluşturulan dosyanın AndroidManifest dosyasına eklenmesi gerekmektedir. Bunun
için AndroidManifest dosyası tıklandığında açılan pencere alt kısımda yer alan
Application sekmesi tıklanır.
Mobil Uygulama Geliştirme – Öğr.Gör. Nevzat TAŞBAŞI
Bu pencerede Application Nodes kısmında yeralan Add.. butonu tıklanır.
Açılan pencerede Activity seçilir ve OK tıklanır.
Yan tarafta açılan kısımda Browse… komutu tıklanarak eklenecek Activity seçilir.
Yada AndroidManifest.xml dosyası içerisinde Android etiketinin andrid:name özelliğine
paket ismiyle beraber activity adı girilir.
7
8
ListView,WebView ve Activityler – Mobil Uygulama Geliştirme
<activity
activity>
android:name=<paketadı.aktiviteadı></
Yeni bir activity açmak için Intent sınıfından yararlanılır.
Intent i=new Intent(getApplicationContext(),activity sınıfı);
İle oluşturulur.
Intent sınıfında activiyler arasında veri aktarımı için
Intent_nesnesi.putExstra(anahtar,deger);
komutu kullanılır.
Okumak için
getIntent().getExtras().getString(anahtar)
kullanılır.
Ya da parçalar halinde teker teker okuma işlemi gerçekleştirilir.
Intent Intent_isim=getIntent();
Bundle bundle_isim=Intent_isim.getExtras();
String isim=bundle_isim.getString(anahtar);
ListView Örneği
Arayuz.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/androi
d"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/ad"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:text="spor"
android:textSize="20sp" />
<TextView
android:id="@+id/soyad"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="stur" />
</LinearLayout>
Activity_main.xml
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/androi
d"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
Mobil Uygulama Geliştirme – Öğr.Gör. Nevzat TAŞBAŞI
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<ListView
android:id="@+id/liste"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" >
</ListView>
</RelativeLayout>
İsim.java:
public class isim {
private String ad;
private String soyad;
public isim(String a,String s)
{
this.ad=a;
this.soyad=s;
}
public void setAd(String ad)
{
this.ad=ad;
}
public void setSoyad(String
soyad)
{
this.soyad=soyad;
}
public String getAd()
{
return this.ad;
}
public String getSoyad()
{
return this.soyad;
}
}
BenimAdapter.java:
import java.util.ArrayList;
import com.example.adaplist.R;
import com.example.adaplist.isim;
import
import
import
import
import
import
android.content.Context;
android.view.LayoutInflater;
android.view.View;
android.view.ViewGroup;
android.widget.BaseAdapter;
android.widget.TextView;
public class BenimAdapter extends BaseAdapter {
private LayoutInflater inflater;
private ArrayList<isim> ismi;
Context ornek;
int lay;
public BenimAdapter(Context activity, int arayuz, ArrayList<isim>
isimler) {
ornek=activity;
ismi=isimler;
9
10
ListView,WebView ve Activityler – Mobil Uygulama Geliştirme
lay=arayuz;
}
@Override
public int getCount() {
return ismi.size();
}
@Override
public isim getItem(int indis) {
return ismi.get(indis);
}
@Override
public long getItemId(int indis) {
return indis;
}
@Override
public View getView(int indis, View v, ViewGroup arg2) {
if (v == null)
{
LayoutInflater
laylo
=
(LayoutInflater)ornek.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = laylo.inflate(R.layout.arayuz, null);
}
TextView ad = (TextView) v.findViewById(R.id.ad);
TextView
soyad
=
(TextView)
v.findViewById(R.id.soyad);
isim isi = ismi.get(indis);
ad.setText(isi.getAd());
soyad.setText(isi.getSoyad());
return v;
}
}
MAinactivity.java:
package com.example.adaplist;
import com.example.adaplist.isim;
import java.util.ArrayList;
import java.util.List;
import
import
import
import
android.app.Activity;
android.os.Bundle;
android.view.Menu;
android.widget.ListView;
public class MainActivity extends Activity {
ListView liste;
BenimAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArrayList<isim> isimler = new ArrayList<isim>();
isimler.add(new isim("Ali","Gel"));
isimler.add(new isim("Veli","Git"));
liste=(ListView) findViewById(R.id.liste);
adapter=new BenimAdapter(this,R.layout.arayuz,isimler);
liste.setAdapter(adapter);
}
Mobil Uygulama Geliştirme – Öğr.Gör. Nevzat TAŞBAŞI
WebSayfası Örneği
AndroidManifest dosyası:
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.sayfaornek"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<uses-permission
android:name="android.permission.INTERNET"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.sayfaornek.MainActivity"
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>
Layout dosyası:
<RelativeLayout
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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<WebView
android:id="@+id/webView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" />
</RelativeLayout>
Activity dosyası:
package com.example.sayfaornek;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.webkit.WebView;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView sayfa=(WebView)
findViewById(R.id.webView1);
sayfa.loadUrl("http://www.sakarya.edu.tr");
}
11
12
ListView,WebView ve Activityler – Mobil Uygulama Geliştirme
Birden Fazla activity ile çalışma
İnternet izninin ve activite kaydının AndroidManifest dosyasına kaydeilmiş olması
gerekir.
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.websayfasi"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<uses-permission
android:name="android.permission.INTERNET"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.websayfasi.MainActivity"
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="yenisayfa"></activity>
</application>
</manifest>
Websayfasi.xml
<RelativeLayout
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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".yenisayfa" >
<WebView
android:id="@+id/sayfa"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" />
</RelativeLayout>
Mobil Uygulama Geliştirme – Öğr.Gör. Nevzat TAŞBAŞI
Activity_main.xml
<RelativeLayout
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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Açılacak Sayfa :" />
<RadioGroup
android:id="@+id/radioGroup1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView1"
android:layout_below="@+id/textView1" >
<RadioButton
android:id="@+id/radio0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="Bilişim Mühendisliği" />
<RadioButton
android:id="@+id/radio1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Bilgisayar Mühendisliği" />
</RadioGroup>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/radioGroup1"
android:layout_below="@+id/radioGroup1"
android:text="Sayfayı Aç"/>
</RelativeLayout>
Yenisayfa.java
import
import
import
import
android.app.Activity;
android.content.Intent;
android.os.Bundle;
android.webkit.WebView;
public class yenisayfa extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.websayfasi);
Intent gelensyf=getIntent();
Bundle degerler=gelensyf.getExtras();
String syf=degerler.getString("syf");
WebView wv1=(WebView) findViewById(R.id.sayfa);
wv1.loadUrl(syf);
}
}
13
14
ListView,WebView ve Activityler – Mobil Uygulama Geliştirme
Main_Activity.java
import
import
import
import
import
import
import
android.app.Activity;
android.content.Intent;
android.os.Bundle;
android.view.View;
android.view.View.OnClickListener;
android.widget.Button;
android.widget.RadioButton;
public class MainActivity extends Activity {
String syf;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn1=(Button) findViewById(R.id.button1);
syf="http://www.sakarya.edu.tr";
final RadioButton rb0=(RadioButton) findViewById(R.id.radio0);
final RadioButton rb1=(RadioButton) findViewById(R.id.radio1);
btn1.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
if(rb0.isChecked())
syf="http://www.bsm.sakarya.edu.tr";
else if(rb1.isChecked())
syf="http://www.cs.sakarya.edu.tr";
else syf="http://www.bf.sakarya.edu.tr";
Intent sayfa=new Intent();
sayfa.setClass(getApplicationContext(),
yenisayfa.class);
sayfa.putExtra("syf", syf);
startActivity(sayfa);
}
});
}
}
Download

MOBİL UYGULAMA GELİŞTİRME