wiki:Android

Version 5 (modified by ji, 8 years ago) (diff)

Ohjelman kirjoitettu ja ajo lisätty

Androidin ohjelmointia

Ohjelmien tekemiseen Androidille tarvitset AndroidSDK:n, joka löytyy osoitteesta http://developer.android.com/sdk/index.html SDK:n asennus on helppoa, purat vain lataamasi paketin haluamaasi paikkaan ja lisäät sen ajettavien ohjelmien polkuun (ympäristömuuttuja PATH).

Kehitys onnistuu pelkällä SDK:lla, mutta on usein mukavampaa käyttäen IDE:ä, joten esimerkiksi Eclipselle löytyy Android-liitännäiset osoitteesta http://developer.android.com/sdk/eclipse-adt.html Asennus tapahtuu perinteisesti lisäämällä Adroid-liitännäisen osoite https://dl-ssl.google.com/android/eclipse/ Eclipsen liitänänislistaan ja suorittamalla asennus. Ohjeet tähän löytyvät edellä mainitulta sivustolta http://developer.android.com/sdk/eclipse-adt.html Huomioi käyttämäsi Eclipse-versio.

Androidilaskuri!

Aina kun saa uuden ohjelmointikielen tai kirjaston käyttöönsä, on opettavaista toteuttaa sillä autolaskuri. Androidille käyttäen Eclipseä se menee näin:

  1. Luo uusi Android-projekti:
    • Project Name: Androidilaskuri
    • Build Target: Android 1.5 (versio, joka oli asennettuna kokeilukäytössä olleeseen Samsung Galaxyyn)
    • Application Name: Androidilaskuri
    • Package Name: fi.jyu.mit.android.androidilaskuri
    • Create Activity: Androidilaskuri

Ja sitten klikkaa 'Finish'.

  1. Valitse esille Androidilaskuri -> res -> layout -> main.xml ja saat käyttöösi melko käytettävän GUI-editorin. Lisää TableLayout, siihen kolme TableRow'ta. Ensimmäiselle riville kaksi TextView'tä, toiselle kaksi Buttonia ja kolmannelle yksi Button. TextView't ovat Androideja ja Robotteja, seuraavan rivin Buttonit Androidi ja Robotti, ja viimeinen Button nollaa. Asettele elementtien ympärille vähän tilaa, ja UI on valmis. XML:nä sen pitäisi näyttää jotakuinkin tältä
<?xml version="1.0" encoding="utf-8"?>
<TableLayout android:id="@+id/TableLayout01"
             android:layout_width="fill_parent" android:layout_height="fill_parent"
             xmlns:android="http://schemas.android.com/apk/res/android">
 <TableRow android:id="@+id/TableRow01"
              android:layout_width="wrap_content" android:layout_height="wrap_content">
    <TextView android:text="0" android:id="@+id/Androideja"
              android:layout_width="wrap_content" android:layout_height="wrap_content"
              android:padding="16dip" android:inputType="number">
    </TextView>
    <TextView android:text="0" android:id="@+id/Robotteja"
              android:layout_width="wrap_content" android:layout_height="wrap_content"
              android:padding="16dip" android:inputType="number" android:isScrollContainer="true">
    </TextView>
  </TableRow>
   <TableRow android:id="@+id/TableRow02"
            android:layout_width="wrap_content" android:layout_height="wrap_content">
    <Button android:text="Androidi" android:id="@+id/Androidi"
            android:layout_width="wrap_content" android:layout_height="wrap_content"
            android:layout_marginLeft="20dip" android:layout_marginRight="20dip"
            android:layout_marginBottom="5dip" android:layout_marginTop="5dip"
            android:layout_weight="1">
    </Button>
    <Button android:text="Robotti" android:id="@+id/Robotti"
            android:layout_width="wrap_content" android:layout_height="wrap_content"
            android:layout_marginBottom="5dip" android:layout_marginLeft="20dip"
            android:layout_marginRight="20dip" android:layout_marginTop="5dip"
            android:layout_weight="1">
    </Button>
  </TableRow>
   <TableRow android:id="@+id/TableRow03" android:layout_width="wrap_content" android:layout_height="wrap_content">
    <Button android:text="Nollaa" android:id="@+id/Nollaa"
            android:layout_width="wrap_content" android:layout_height="wrap_content"
            android:layout_weight="1">
    </Button>
  </TableRow>
</TableLayout>

Lisäsin tuohon rivityksen, jotta tuo olisi luettavissa. GUI-editori kirjoitti jokaisen TableRow'n sisältöineen yhdelle riville. Ei kuitenkaan kiinnitetä GUI:n ulkoasuun enempää huomiota, vaan siirrytään koodiin. Android tukee käyttäjän muokattavia tyylejä ja teemoja, joten niitä hyödyntäen kukin saa juuri haluamansa Androidilaskuriulkoasun... toivottavasti.

  1. Kirjoitetaan ohjelma, eli muokaa metodi onCreate luokassa
    public class Androidilaskuri extends Activity {
        private TextView and;
        private TextView rob;
    
            /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            and = (TextView)findViewById(R.id.Androideja);
            rob = (TextView)findViewById(R.id.Robotteja);
    
            Button ba = (Button)findViewById(R.id.Androidi);
            ba.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    increment(and);
                }
            });
    
            Button ra = (Button)findViewById(R.id.Robotti);
            ra.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    increment(rob);
                }
            });
    
            Button nol = (Button)findViewById(R.id.Nollaa);
            nol.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    and.setText(Integer.toString(0));
                    rob.setText(Integer.toString(0));
                }
            });
        }
    
        private void increment(TextView tv) {
            int i = Integer.valueOf(tv.getText().toString());
            ++i;
            tv.setText(Integer.toString(i));
        }
    }
    

Android-ohjelmissa ei ole main-metodia, kuten Java-ohjelmissa monesti on. Sen sijaan Android-ohjelmat muodostuvat aktiviteeteista, joita meillä on nyt yksi, Androidilaskuri. Aktiviteetin toiminta koostuu eri vaiheista (katso lisää Androidin kehittäjäsivuilta aliotsikosta Activity Lifecycle), joissa kutsutaan aktiviteetin eri metodeja. Tässä käytämme luomisvaiheessa kutsuttavaa onCreate()-metodia.

Metodissa luodaan GUI aiemmin tehdyn XML-tiedoston mukaan metodikutsulla setContentView(R.layout.main). Luodut komponentit löytyvät vastaavilla nimillä, eli esimerkiksi Robotti-nappia klikkaamalla suoritettava laskurin kasvatus lisätään oliolle Button ba, joka löytyy metodille findViewById() annettavalla tarkenteella R.id.Robotteja.

  1. Aja Androidilaskuri valitsemalla Eclipsen valikoista Run > Run, tai klikkaamalla Run-ikonia työkalurivillä. Eclipse kyselee, miten softa ajetaan, valitse Android Application. Jos tulee virheitä tai muita kummallisuuksia, peruuta niistä pois ja varmista, että äsken muokattu java-luokka on valittuna Eclipsen Package Explorer näkymässä.

Attachments