Category Archives: Általános

Amit nem tudok kategóriához rendelni.

Tanácsok a középszintű informatika érettségi előtt

Megpróbálom összefoglalni azokat a gondolatokat és tanácsokat, amelyeket a tanulóimnak szoktam mondani az informatika érettségi előtt. A tanácsok azoknak szólnak, akik egy tisztességes a gyakorlati részben 80% vagy a feletti eredmény szeretnének elérni. Persze van benne olyan tanács is, amelyiket a majd lesz valahogy érettségizők is megfogadhatnak.

A tanácsok kéretlenek és a sok éves javítási tapasztalat és felkészítés mondatja velem. Én magam sosem érettségiztem informatikából hiszen akkor még a tantárgy se létezett. 🙂

Általánosságban

  1. Ha eddig szakaszosan gyakoroltál és még van 1-2 napod. Próbáld ki egy feladatsoron egyben, hogy bírod-e a 3 órát. Figyeld hol fáradsz el.
  2. A tollal a feladatlapon végig jelezd aláhúzással, hogy mit oldottál meg.
  3. Ahogy hozzáfogsz egy új feladathoz azonnal mentsd el a megfelelő néven a megfelelő helyre.
  4. Sűrűn ments (CTRL+S)
  5. Ne futtasd a szemed a feladatokon. Ha úgy érzed csak egy villanásra is, hogy “megfutott a szemed” állj meg olvasd újra a feladatot.
  6. Az egyes feladatleírásokat olvasd el egyben, de legalább 2-3 részfeladatot egyszerre. Majd olvasd újra részenként és hajtsd végre. Ne próbálj megjegyezni 3-4 feladatrészt.
  7. A mintát mindig figyeld meg. Hasonlítsd össze a feladatban leírtakkal és a saját megoldásoddal. Vagyis ne csak a feladat előtt, hanem a megoldása után is ellenőrizd.
  8. Azokat a feladatokat old meg először, amelyek könnyen és gyorsan mennek. Ne állj meg kísérletezni és ne ragadj le olyan feladatnál, amelyiket nem tudod megoldani.
  9. Jelöld a papíron, amit nem tudtál megoldani.
  10. Ha végeztél mindennel amit meg tudtál oldani és van még időd térj vissza hozzájuk és próbálkozz.

Szövegszerkesztés

  1. Gyakorolj sokat, még akkor is ha úgy érzed ez könnyű, mert ezzel időt tudsz nyerni a többi feladathoz.
  2. Ha bemásoltad a forrás szöveget, akkor jelöld ki az egészet (CTRL+A) és állítsd a betűtípust Times New Roman 12-es betűméretre (Olvasd el a feladatban mi a szövegtörzs alapértelmezett betűtípusa.).
  3. Az összes bekezdésben állítsd a térközt 0-ra és a sorközt szimplára.
  4. Ha kihagysz egy feladatot jelöld!

Prezentáció

  1. Mielőtt hozzáfogsz állítsd át a dia oldalainak arányát 4:3-ra, mert eddig mindig ezzel az oldalaránnyal készült a minta.
  2. Figyelj a betűméretekre.
  3. Mindig tartsd szemmel a mintát.

Webszerkesztés

  1. Mint a szövegszerkesztés.
  2. Itt különösen fontos, hogy az elején odafigyelj hová mentesz!
  3. Ha több azonos formázású oldalas a feladat, akkor készíts el egyet és azt mentsd másként, így megspórolsz egy csomó formázást.
  4. A képek hivatkozása relatív legyen. Vagyis ha megnézed a kódot, akkor az <img src=”… “> az src tulajdonságban nem szerepelhet a C:\ karakter sorozat.

Táblázatkezelés

  1. Gyakorolj!
  2. Ha egyetlen feladatot sem tudsz megoldani, akkor is formázz a minta és a leírás szerint.
  3. Old meg a számolós feladatokat papíron. Számold ki! Ha papíron nem megy, nem fog a táblázatkezelővel sem.
  4. Nézd át a százalékszámítást matekból.
  5. A százalék lábat (%) általában úgy számoljuk ki, hogy a nagyobbat osztjuk a kisebbel. Sose szorozz 100-al, hiszen a százalék egy arány és legtöbbször 0-1 közé eső szám.
  6. Old meg az egyszerű feladatokat. Az alap függvények, mint a Szum(), Darab(), Min(), Max(), Átlag() adják magukat, csak az argumentumaikra kell az értelmezés és az energia, hogy melyik tartományra is vonatkozik.
  7. A Ha() függvényt is viszonylag könnyű felismerni, mert ha benne van a mondatban a “ha” szócska, szinte biztos, hogy azt kell alkalmazni. Itt a feltétel összerakása szokott gondot okozni.
  8. Ha összegezni, megszámolni vagy átlagolni kell egy tartomány értékeit, de van valamilyen kikötés, feltétel, hogy csak azokat számold meg, add össze vagy átlagold amelyekre igaz, hogy …, akkor biztos, hogy a szumha(), darabteli() vagy mostanában a darabhatöbb() függvény vagy az átlagha() lesz a megoldás.
  9. Ha már nincs több ötleted, például annyi ha() függvényt kellene összeépíteni, hogy ez már neked is sok akkor az az Fkeres() függvény lesz.
  10. A csemege az index(), hol.van() függvény páros. Ez akkor jöhet szóba, ha olyat kell megmondani ki volt a legnagyobb, melyik volt a legdrágább.
  11. A kerekítésnél is érdemes odafigyelni a szövegre. Ha azt mondja a feladat, hogy jelenítsd meg 3 tizedes jeggyel, akkor nem kell a kerekítés() függvényt használni, mert akkor elég a szám formátum és annak beállítása. Csak akkor kell a kerekítés() függvény, ah a feladat azt mondja kerekítsd a kapott eredményt 3 tizedes jegyre.
  12. Ezen kívül a kicsi(), nagy() függvények fordulhatnak elő, amelyek valahanyadik legkisebb vagy legnagyobb értéket adja vissza.
  13.  A darab2() függvény mindent megszámol, ami csak létezik a tartományban.
  14. A darabüres() függvény az üres cellákat számolja össze vagyis azokat amelyekben a tartományon belül nincs semmi.
  15. A diagram készítése előtt jelöld ki a tartomány amelyikből a diagramot készítesz.

Adatbázis-kezelés

  1. Figyelj az importálásra.
  2. Az első sor tartalmazza a mezőneveket.
  3. A txt állományok kódolására figyelj oda..
  4. Nézd a feladatot és adattípusokat is állítsd be az importáláskor. Különösen légy figyelmes Dátum/idő és logikai típusok esetén.
  5. Figyelj a kulcs mezőre. Létezik-e egyáltalán a txt állományban. Ha igen, akkor állítsd be a kulcsot importáláskor. Ha nem létezik, akkor légy figyelmes és ha hagyod, hogy a varázsló adjon hozzá kulcs mezőt, akkor nevezd át az importálás után.
  6. A lekérdezéseknél a megjelenített mezőkre figyelj.
  7. Olvasd el többször a kérdést és húzd alá, hogy mit kell csinálnod.
  8. Figyelj a rendezésre.
  9. Ne adj hozzá minden táblát a lekérdezéshez, csak annyit amire feltétlenül szükség van a kérdés megválaszolásához.
  10. Ha kérdésben a számold meg vagy add össze szavakat látod, az összesítő lekérdezés.

Amennyiben kifelejtettem valamit, márpedig biztos, hogy igen. Segíts!!! Írd meg mire érdemes még odafigyelni.

Ötszáz programozás feladat – 2016. május

Feladat leírása


Egy apróságokat árusító boltban minden árucikk darabja 500 Ft. Ha egy vásárlás során valaki egy adott árucikkből több darabot is vesz, a második ára már csak 450 Ft, a harmadik pedig 400 Ft, de a negyedik és további darabok is ennyibe kerülnek, tehát az ár a harmadik ugyanazon cikk vásárlása után már nem csökken tovább.
A pénztárhoz menők kosarában legalább 1 és legfeljebb 20 darab árucikk lehet. A kosarak tartalmát a penztar.txt fájl írja le, amelyben soronként egy-egy árucikk neve vagy az F karakter szerepel. A fájlban legfeljebb 1000 sor lehet. Az F karakter azt jelzi, hogy az adott vásárlónak nincs már újabb árucikk a kosarában, fizetés következik. Az árucikkek neve ékezet nélküli, több szóból is állhat, hossza legfeljebb 30 karakter.

A példa alapján az első vásárló összesen 1 tollat vásárolt, ezért összesen 500 Ft-ot kell fizetnie. A második vásárlás során hatféle árucikket vásároltak – a HB ceruzából és a colostokból többet is –, összesen 3900 Ft értékben.

Készítsen programot, amely a penztar.txt állomány adatait felhasználva az alábbi kérdésekre válaszol! A program forráskódját mentse otszaz néven! (A program megírásakor a felhasználó által megadott adatok helyességét, érvényességét nem kell ellenőriznie, és feltételezheti, hogy a rendelkezésre álló adatok a leírtaknak megfelelnek.)

A képernyőre írást igénylő részfeladatok eredményének megjelenítése előtt írja a képernyőre a feladat sorszámát (például: 3. feladat:)! Ha a felhasználótól kér be adatot, jelenítse meg a képernyőn, hogy milyen értéket vár! Az ékezetmentes kiírás is elfogadott.

1. feladat

Olvassa be és tárolja el a penztar.txt fájl tartalmát!

A megoldás alapötlete, hogy egy darab egydimenziós lista (vektor) , minden egyes elem egy újabb lista.

Megnyitottam olvasásra a penztar.txt.
  Egy for ciklussal bejárom a fájlt.
    Minden sorárának végéről levágom ('/n') karaktert.
    Ha az elem éppen nem egy 'F' karakter, akkor
      egy listába gyűjtöm az árucikkeket (egyVasarlas)
    különben
      Hozzáfűzöm a vásárlások listához az összegyűlt árúcikkeket
      törlöm az egyVasarlas lista tartalmát

2. feladat

Határozza meg, hogy hányszor fizettek a pénztárnál!

A len() függvény megadja a lista hosszát. Ez a vásárlások száma.

3. feladat

Írja a képernyőre, hogy az első vásárlónak hány darab árucikk volt a kosarában!

A vasarlasok lista első elemének (0. sorszámú) hossza a válasz.

4. feladat

Kérje be a felhasználótól egy vásárlás sorszámát, egy árucikk nevét és egy darabszámot! A következő három feladat megoldásánál ezeket használja fel!

input() a felhasználótól kérem be az adatokat. Az input() függvény string típust add vissza, amit az int() függvénnyel alakítok egész számmá.

Feltételezheti, hogy a program futtasásakor csak a bemeneti állományban rögzített adatoknak megfelelő vásárlási sorszámot és árucikknevet ad meg a felhasználó.

5. feladat

Határozza meg, hogy a bekért árucikkből
a. melyik vásárláskor vettek először, és melyiknél utoljára!
b. összesen hány alkalommal vásároltak!

A megszámlálás tétel átalakított formáját használtam.
Végigjártam az összes vásárlást és minden vásárlás alkalmával megnéztem, hogy van-e a kosár a megfelelő árucikk. Ha van akkor annak a vásárlásnak a sorszámát elteszem egy listába.

A lista első eleme az első vásárlás sorszáma, az utolsó eleme az utolsó vásárlás sorszáma. A lista hossza a vásárlások száma.

6. feladat

Határozza meg, hogy a bekért darabszámot vásárolva egy termékből mennyi a fizetendő összeg! A feladat megoldásához készítsen függvényt ertek néven, amely a darabszámhoz a fizetendő összeget rendeli!

Az ertek(darab) függvény meghívásakor átadom a bekért darabszámot. Mivel minden árucikk 400 Ft ezért az ár a darab 400-szorosa, ha egy darabot vásároltak, akkor +100 Ft, ha 2 vagy annál több akkor viszont +100 Ft az első és +50 a második árucikk felára.

7. feladat

Határozza meg, hogy a bekért sorszámú vásárláskor mely árucikkekből és milyen mennyiségben vásároltak! Az árucikkek nevét tetszőleges sorrendben megjelenítheti.

A kosar most egy dictionary. Ezt más programozási nyelven asszociatív tömbnek hívják. Minden bejegyzéshez tartozik egy kulcs (key) és egy érték (value) együtt item.

Bejárjuk az adott sorszámú vásárlást (for). Azért van 1 kivonva a sorszámból, mert a lista első sorszáma 0.  Az egyVasarlas tartalma minden ciklusban egy árucikk.

Ha (if) az árucikk nincs benne (not in) a kosárban (kosar.keys()), akkor létrehozzuk az árucikk nevű kulcsot (kosar[egyVasarlas]) és az értéket 1-re állítom.

Különben (else), ha már volt ilyen árucikk ebben vásárlásban, vagyis van ilyen kulcs, akkor az értékét megnövelem 1-el.

A második ciklus (for) végigjárja a kosar dictionary-t és kiírja a kulcsot (cikk) és az értéket (db) a kosárból (kosar.items())

Ez egy megszámlálás programozási tétel python alkalmazása volt.

7. feladat (másképp)

Ha hamarabb elolvastam volna a 8. feladatot, akkor így készítem el a 7. feladatot:

A kosár tartalmából készített dictionary létrehozását általánosítottam (absztraháltam) úgy hogy az egyKosar függvénynek csak a vásárlás sorszámát adom át és a függvény visszatérési értéke a kosár tartalma megszámolva a benne lévő tárgyakat.

8. feladat

Készítse el az osszeg.txt fájlt, amelybe soronként az egy-egy vásárlás alkalmával fizetendő összeg kerüljön a kimeneti mintának megfelelően!

A feladat megoldása az előzőek birtokában, már gyerekjáték. Egy fájlba írást kell kombinálni egy összegzés programozási tétellel, amelyben felhasználom az ertek() és az egyKosar() függvényeket.

A print() megjegyzésként azért maradt benne, hogy lásd, mielőtt a fájlba írtam volna azelőtt kiírtam a képernyőre.

A magyarázat a következő:
Megnyitottam írásra az osszeg.txt állományt, a logikai neve v. Az i változó a vásárlás sorszáma ezt 0 értékkel inicializálom. A for ciklus bejárja az összes vásárlás és minden vásárlás értékét az osszeg változóba gyűjtöm. A belső for ciklus bejárja az átalakított vásárlást (egyKosar(i).values()). A darab a vásárláskor az az adott árúból megvásárolt darabszám. Az osszeg változóba az ertek() függvény által visszaadott vásárolt darabszám szerinti értéket összegzem.

A v.write() úgy működik, mint a print() csak fájlba ír, a \n a sortörés. A végén csak megnövelem az i-t vagyis a vásárlás sorszámát.

Extra egy másik activity indításához

Egy másik activity indítása IV. rész

Egy kis extra, érdekesség az elemek megjelenítéséhez. Az egyes UI-n megjelenített objektumokat animálni is lehet. Persze ez általában csak a programozót (fejlesztő) szórakoztatja és utána szinte az összeset letiltatják a megrendelők, de érdekességnek, hogyan hogyan lehet animáció erőforrást létrehozni megjárja.

Tween animáció erőforrás létrehozása.

  1. Hozd létre az animáció erőforrásának könyvtárát.
    1. Kattints jobb egérrel az /app/res mappára.
    2. Válaszd a New –> Android resource directory menüt
    3. Resource type: anim
    4. Directory name: anim
  2. Hozd létre az erőforrás állományt.
    1. Kattints jobb egérrel az /app/res/anim mappára.
    2. Válaszd a New –> Animation resource file menüt.
    3. A File name legyen myanim
  3. Adj hozzá a <set> (készlet) elemhez egy <alpha> elemet és módosítsd a tulajdonságait.
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <alpha
        android:duration="5000"
        android:fromAlpha="0.0"
        android:toAlpha="1.0"
        />
</set>
  • A fromAlpha az átlátszóság kezdő értéke. Most teljesen átlátszó.
  • A toAlpha, hogy az animáció végén milyen legyen az átlátszósága, most 1, tehát teljesen átlátszatlan.
  • A duration tulajdonság az animáció lezajlási ideje, most 5 mp. (Ezt lehet, hogy nem segít beírni az Android Studio.)

Az animáció elindítása.

  1. Nyisd meg az /app/java/DisplayMessageActivity.java állományt.
  2. Az onCreate() eljárást egészítsd ki a következő utasításokkal:
Animation myAnim = AnimationUtils.loadAnimation(this, 
                                      R.anim.myanim);
tvName.startAnimation(myAnim);

Tehát betöltötted (loadAnimation) az erőforrást a myAnim objektumba, majd a tvName példányon lejátszottad (startAnimation()) .

Együtt az egész onCreate() eljárás:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_display_message);
    Intent intent = getIntent();
    String message = 
    intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
    TextView tvName = (TextView) 
                      findViewById(R.id.tvName);
    tvName.setText(message);
    Animation myAnim =  
                   AnimationUtils.loadAnimation(this,
                                       R.anim.myanim);
    tvName.startAnimation(myAnim);
}

Természetesen, ha lenne id-je (azonosítója) az Üdvözöllek feliratnak, akkor arra is elindíthatnánk az animációt. Sőt, ha az erőforrás több animációt tartalmaz, akkor keverheted is őket.

Egyéb animáció lehetőségek:

  • Scale: Átméretezés
  • Rotate: forgatás
  • Translate: mozgatás
  • Alpha: átlátszóság

Példa forgatásra:

<rotate
    android:fromDegrees="0.0"
    android:toDegrees="360.0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:duration="3000" />

Sőt, ha az animáció a <LinearLayout>-ra alkalmazod

  1. Rendelj id-t a layouthoz
    android:id="@+id/messageLayout"
  2. Hozz létre egy LinearLayout objektumot, amit összekapcsolsz az UI-n lévő layouttal az id-n keresztül a DisplayMessageActivity onCreate() eljárásában.
    LinearLayout linearLayout = (LinearLayout) 
                      findViewById(R.id.messageLayout);
  3. Indítsd az animációt a layout-on.
    linearLayout.startAnimation(myAnim);
  4.  Együtt az egész:

activity_display_message.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"
    android:id="@+id/messageLayout">

    <TextView
        android:id="@+id/tvUdv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text = "@string/tvUdv"
        android:textSize="30sp"
        android:layout_gravity="center_horizontal"/>
    <TextView
        android:id="@+id/tvName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="30sp"
        android:layout_gravity="center_horizontal"/>

</LinearLayout>

DisplayMessageActivity.java – onCreate() eljárás

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_display_message);
    Intent intent = getIntent();
    String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
    TextView tvName = (TextView) 
                      findViewById(R.id.tvName);

    LinearLayout linearLayout = (LinearLayout) 
                     findViewById(R.id.messageLayout);

    tvName.setText(message);
    Animation myAnim =
    AnimationUtils.loadAnimation(this, R.anim.myanim);

    linearLayout.startAnimation(myAnim);
}

 

Egy másik activity indítása IV. rész

Egy másik activity indítása III. rész

Készítsük el a második Activity-t!

  1. Az /app/java/hu.batsanyigimnazium.corvus.myanotherview-ra jobb egérgombbal kattints és válaszd a new –> Activity –> Empty Activity.
    1. Activity name legyen DisplayMessageActivity
    2. A Generate layout file legyen bejelölve.
    3. Layout name legyen activity_display_message
    4. A package name maradjon változatlan
  2. Kattints a Finish gombra.

Most létrejött az az activity amelyet a Send gombra kattintáskor elindítunk. Ha most kipróbálod (lefordítod, futtatod), akkor már működik az alkalmazás, de csak fehér képernyő látható.

Készítsük el az UI-t!

  1. Nyisd meg az /app/re/layout/activity_display_message.xml állományt.
  2. A <RealtiveLayout> használj <LinearLayout>-t.
    1. Töröld a padding és content tulajdonságokat.
    2. Adj hozzá android:orientation=”vertical” tulajdonságot.
  3. Hozz létre egy <TextView> elemet a tuladonságai legyenek rendre:
    1. android:layout_width = “wrap_content”
    2. android:layout_heigth = “wrap_content”
    3. android:text=”Üdvözöllek” és ezt tedd ki string erőforrásba. Lásd: II. rész – Hozz létre egy String erőforrást a neve “tvUdv”
    4. android:textSize = “30sp”
    5. android:layout_gravity = “center_horizontal”
  4. Hozz létre még egy <TextView> a tulajdonságai legyenek:
    1. android:id = “@+id/tvName”
    2. android:layout_width = “wrap_content”
    3. android:layout_heigth = “wrap_content”
    4. android:textSize = “30sp”
    5. android:layout_gravity = “center_horizontal”

Most így néz ki az /app/res/layout/activity_display_message.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text = "@string/tvUdv"
        android:textSize="30sp"
        android:layout_gravity="center_horizontal"/>
    <TextView
        android:id="@+id/tvName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="30sp"
        android:layout_gravity="center_horizontal"/>

</LinearLayout>

Vegyük át az adatokat az intent-től

  1. Nyisd meg az /app/java/…/DisplayMessageActivity.java állományt.
  2. Az onCreate() eljárásban kérdezzük meg, ki aktivált (milyen szándék hozott létre) getIntent().
  3. Majd az intent-től kérdezzük meg, mi az extra üzenetünk.
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_display_message);
    Intent intent = getIntent();
    String message =  
    intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
}

“Megjegyzés: Ha az Intent osztály hibát jelez, nyomj [Alt]+[Enter].”

Adjuk oda az üzenetet a TextView-nak!

Már csak oda kell adunk a kapott üzenetet a “tvName” TextView elemnek, hogy meg tudja jeleníteni.

  1. Hozz létre az onCreate() eljárásban egy új TextView osztály tvName nevű példányát, amelyet összekötsz (rámutat) az UI <TextView> “tvName” azonosítójú elemével.
  2. Majd beállítod a text tulajdonságának értékét a message tartalmára.

Most így néz ki a DisplayMessageActivity onCreate() eljárása:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_display_message);
    Intent intent = getIntent();
    String message = 
    intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
    TextView tvName = (TextView) 
                      findViewById(R.id.tvName);
    tvName.setText(message);
}

Ezzel az eredeti kitűzött célunkat elértük. Kész vagyunk.

<<< III. rész  Egy kis extra >>>

Egy másik activity indítása III. rész

Egy másik activity indítása II. rész

Miután elkészítetted az induló activity-t a képpel, beviteli mezővel és a gombbal, már csak rá kell venned a Send gombot, hogy valóban elküldje a beírt neved egy másik activity-nek.

A gomb viselkedésének megváltoztatása

  1. Nyisd meg /app/res/layout/activity_main.xml állományt.
  2. Egészítsd ki a <Button> elemet a következő tulajdonsággal:
android:onClick="SendName"

Ez a tulajdonság érzékennyé teszi (respond) a gombot és a mégy nem létező SendName eljárás végrehajtását eredményezi, ha rákattintasz.

  1. Tedd a kurzort a “SendName” értékbe.
  2. Nyomd meg az [Alt]+[Enter]-t vagy a sor elején megjelenő villanykörtére kattints és válaszd a  Create a ‘SendName(View view)’ in MainActivity menüpontot.
  3. Nyisd meg /app/java/…/MainActivity.java állományt. Ezt látod:
public class MainActivity extends AppCompatActivity {

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

    public void SendName(View view) 
    {
    }
}

Tehát létrejött egy publikus (Public), mindenki számára látható eljárás (void), amelynek neve SendName és azt a View-t fogja megkapni (ebben az esetben a btnName gomb a View), amely meghívta. Ebből következik, hogy ugyanazt az eljárást több View is meghívhatja.

Mi történjen, ha megnyomtad a gombot?

Induljon el egy másik activity és jelenjen meg az üdvözlés.

  1. Add hozzá a következő sort a ‘SendName’ eljáráshoz:
public void SendName(View view) {
    Intent intent = new Intent(this, 
                    DisplayMessageActivity.class);
}

“Megjegyzés: A vessző utáni sortörés nem kötelező!!”

Ehhez egy Intent objektumra van szükség, amely arra való, hogy az android központi objektumait (activity – tevékenység, broadcastreceiver – üzenetszórás, service – szolgáltatás) aktiváljuk, elindítsuk. Nekünk “csak” egy activity-t kell elindítanunk és ezáltal futás idejű kötés jön létre a környezeten belül az indító activity és induló activity között. A Intent egy passzív adatstruktúra, amely a végrehajtandó akciót és egy URI-t tartalmaz. Egyszerűbben szólva egy aktiváló üzenet.

A mi esetünkben tehát az intent (szándék) tartalmazni fogja a küldő objektumot (this) és a még nem létező DisplayMessageActivity objektumot (ezt később készítjük el) akarjuk aktiválni.

  1. Az üzenet vagyis az EditText-be (beviteli mező) írt nevet is át kell adnunk az újonnan elindított activity-nek. Ehhez létre kell hoznod az EditText megfelelőjét a MainActivity.java programban.
public void SendName(View view) {
    Intent intent = new Intent(this,
                        DisplayMessageActivity.class);
    EditText etName = (EditText) 
                      findViewById(R.id.etName);
}

“Megjegyzés: A pontosvesszőig lehet egy sor az utasítás!”

Az etName egy EditText osztályba tartozó példánya.
A findViewById(R.id.etName) azt az erőforrás mutatót adja vissza, amelyik a Activity_main.xml-ben létrehozott etName elemet azonosítja. Ezt cast-olni (szerepet azonosítani) kell ezért van a findViewById előtt az (EditText).

  1. Kérdezzük le, mit írt a felhasználó a beviteli mezőbe.
public void SendName(View view) {
    Intent intent = new Intent(this, 
                        DisplayMessageActivity.class);
    EditText etName = (EditText) 
                      findViewById(R.id.etName);
    String name = etName.getText().toString();
}

A String osztály name példányát hoztuk létre és egyből definiáltuk is a tartalmát is. A getText() eljárás lekérdezi a tartalmat a toString() metódus (method – eljárás)  pedig szöveggé (string) alakítja.

  1. Adjuk hozzá az intent példányunkhoz egy extra értéket, vagyis az üzenetünket is ágyazzuk bele az intent-be.
public void SendName(View view) {
    Intent intent = new Intent(this, 
                        DisplayMessageActivity.class);
    EditText etName = (EditText) 
                      findViewById(R.id.etName);
    String name = etName.getText().toString();
    intent.putExtra(EXTRA_MESSAGE, name);
}

A putExtra() fogja beágyazni az intentbe az EXTRA_MESSAGE constanson keresztűl a name string tartalmát. Észrevetted, hogy EXTRA_MESSAGE konstansunk sincs.

  1. Hozzuk létre az EXTRA_MESSAGE constanst a MainActivity osztályunk elején.
    1. Tedd a kurzort az EXTRA_MESSAGE szövegbe.
    2. Nyomj [Alt]+[ENTER] billentyűkombinációt és válaszd a Create constant filed ‘EXTRA_MESSAGE’ menüpontot.
    3. Cseréld a private hozzáférést public-ra.
public class MainActivity extends AppCompatActivity {

   public static final String EXTRA_MESSAGE =   "hu.batsanyigimnazium.corvus.myanotherview.MESSAGE";

Amikor majd lekérdezzük az extra üzenetét az intent-nek, akkor így egy nyilvános (public) állandó (constant) tartalmát fogjuk lekérdezni. A konstans tartalmazza a saját csomagod kulcsát (Package name key) és MESSAGE szót.

Indtsuk el az activity-t!

  1. A ‘SendName’ eljárás egésztsd ki a startActivity(intent) utasítással. Ezzel aktiválod az előkészített intent segítségével az új activity-t.

Természetesen még nem működik, hiszen adósok vagyunk a  DisplayMessageActivity.class osztállyal.

<<<II. rész IV. rész>>>

Egy másik activity indítása II. rész

Egy másik activity indítása I. rész

A második részben elkészítjük a első activity user interface-t (innentől UI). Lesz View és ViewGroup, ImageView, EditText és Button.

A szerkesztőben az /app/res/layout/activity_main.xml-t egészítsd ki a következő view-kal. Hívhatnám objektumnak, elemnek is. Az objektum a legáltalánosabb megjelölése, mert az OOP (Object Orient Program) ezeknek az elemek egy-egy reprezentációi az elvégzendő feladatnak. Rendelkeznek tulajdonsággal, és viselkedéssel és általában származnak valamely másik objektumtól vagyis vannak örökölt tulajdonságaik és viselkedésük. Bocs.

Tegyünk az UI-ra egy képet.

  1. Töltsd le a bicikli tömörített állomány és csomagold ki olyan helyre, ahol megtalálod a képeket.
  2. Előkészítés:
    1. Az Android Studio /app/res mappájára kattints jobb egérgombbal. Válasz a New –> Android resource directory-t
    2. A Resource type legyen drawable.
    3. A Diectory name legyen drawable-ldpi.
    4. A Source set legyen main.
    5. A 1-4. pontot ismételd rendre: drawable-mdpi, drawable-hdpi és drawable-xhdpi directory nevekkel.
  3. A képek bemásolása a könyvtárakba.
    1. Keresd meg a kicsomagolt képeket
    2. Jelöld ki gomb_example_ldpi.png képet és másold (CTRL+C)
    3. Az Android Studio-ban kattints jobb egérgombbal a /app/res/drawable könyvtárra és válaszd a Paste menüpontot.
    4. A felugró ablakban jelöld a drawable-ldpi könyvtárat és OK.
    5. Ismételd a megfelelő állományokkal és könyvtárakkal a 2-4. pontot. (a gomb_example.png.nek a drawable-mdpi van a helye.

Erre a sok macerára azért volt szükség, hogy a különböző képpontszámú eszközökön mindig a legmegfelelőbb minőségű kép jelenjen meg. Ha minden képnek a meg van a megfelelő képpontszámú megfelelője, akkor az Android kiválasztja a megfelelőt és ezzel neked törődnöd nem kell.

  1. Jöhet az /app/res/layout/activity_main.xml módosítása
    1. Kezd el írni <Imag… és megjelenő menüből válaszd az ImageView-t. A válaszd az jelenti üss ENTERT!
    2. A layout_width és height tulajdonságot a listákból választva add meg wrap_content vagyis pontosan akkora legyen, mint amit tartalmaz.
    3. Kezd el írni andr… és válaszd android: a listából.
    4. Kezd el írni src és válaszd a listából.
    5. Nyomj CTRL+Space és válaszd a listából @drawable/
    6. Nyomj CTRL+Space és válaszd gomb_example a listából.
    7. Kezd el írni andr… válaszd android: a listából.
    8. Kezd el írni layou… és válaszd a listából layout_gravity-t
    9. Majd az új listából center_horizontal-t (Ezzel a képet a képernyő közepére helyezted vízszintesen.)
    10. Kezd el írni andr… válaszd android: a listából.
    11. Kezd el írni layout… és válasz a listából layout_marginTop-t
    12. Írd be 20sp (Az sp egy relatív képernyő függő egység)
<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/gomb_example"
    android:layout_gravity="center_horizontal"
    android:layout_marginTop="20sp"/>

Egy új elrendezés és beviteli mező

  1. Most szúrjunk be egy ViewGroup-t, amely egy beviteli mezőt (EditText) és egy gombot tartalmaz, egymás mellett.
    1. Szúrj be egy új <Linearlayout> elrendezést (ViewGroup object), de ennek az orientation tulajdonságát állítsd horizontal-ra.
    2. Szúrj be egy EditText view-objektumot
    3. A width tulajdonsága legyen 0dp.
    4. A height tujadonság legyen wrap_content.
    5. Ekkor hibát jelez (piros aláhúzás) a szerkesztő. Ezért szúrj be egy android:layout_weigth tulajdonságot értéke legyen 1. (Ezzel azt érted el, hogy az objektum a képernyő szélességét foglalja el, de ha beszúrsz mellé egy gombot, akkor helyet hagy neki az android:layout_width=”match_parrent”-tel ellentétben.)
    6. Adj még hozzá egy android:id=”@+id/etName” tulajdonságot, amely ellátja egy azonosítóval, amely segítségével majd hozzáférünk a tartalmához. (A plusz jel csak akkor szükséges, ha egy új erőforrás-azonosító adsz meg és nem szükséges ha konkrét erőforrásokat például karakterláncok vagy elrendezést azonosítasz.)
    7. Adj még hozzá egy android:hint=”Please name” magyarázó szöveget.

Most itt tartasz:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <EditText
        android:id="@+id/etName"
        android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:hint="Please name"/>
</LinearLayout>

Hozz létre egy String erőforrrást

A String erőforrás használatára azért van szükség, mert így nyelvfüggetlenné tudjuk tenni az alkalmazást. Ha egy külön xml állományban tároljuk a képernyőn megjelenő szövegeket, akkor könnyen meg tudjuk változtatni.

  1. Kattints bele a hint tulajdonság sorába.
  2. A sor elején egy villanykörte jelenik meg, kattints rá!
  3. Válaszd az Extract string resource menüt.
  4. Töltsd ki a nezőket:
    1. Resource name legyen etHint
    2. Source set legyen main
    3. File name  legyen a string.xml
  5. Kattints az OK-ra

Most már így néz ki a módosított android:hint:

android:hint="@string/please_name"

Az /app/res/values/string.xml állomány tartalma pedig ez:

<resources>
    <string name="app_name">Two Activity</string>
    <string name="etHint">please name</string>
</resources>

A gomb létrehozása

  1. Szúrj be egy <Button> objektumot.
  2. A width és height tulajdonságának értéke legyen wrap_content.
  3. Adj hozzá id-t, amely a “btnName” azonosító legyen.
  4. Adj hozzá text tulajdonságot értéke legyen “Send

A gomb így néz ki:

<Button
    android:id="@+id/btnName"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Send"/>

A teljes /app/res/layout/activity_main.xml tartalma:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/gomb_example"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="20sp"/>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <EditText
            android:id="@+id/etName"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:hint="@string/please_name"/>
        <Button
            android:id="@+id/btnName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Send"/>
    </LinearLayout>
</LinearLayout>
<<< I. rész III. rész >>>

Egy másik activity indítása I. rész

Minden valamirevaló összetett alkalmazás valamilyen kezdőképernyővel, tájékoztatóval, promoval indul. Ehhez fogok támpontot nyújtani az Android Developer Traning-je segítségével.

Applikáció rövid leírása

Az applikáció rendkívül egyszerű lesz és persze semmire se jó. Elhelyezünk egy képet a kezdőképernyőn és megkérdezzük a felhasználó nevét. Majd egy gombra kattintva megnyitunk egy új activity-t, amelyen üdvözöljük a felhasználó s nevén szólítjuk.

Készítsünk új applikációt Android Studio-val

  1. Kattins a File –> New –>  New Project menüpo.ntjára.
  2. Töltsd ki a következő mezőket, majd Next:
    • Application Name legyen “MyAnotherView”
    • Company domain legyen egyedi, mert ebből lesz a package name, például corvus.batsanyigimnazium.hu, ahol a corvus cseréld le valami sajátra, természetesen ékezet és szóköz nélkül.
    • Package name ha jól választottál Company domain-t akkor semmi dolgod vele. Ennek kell egyedinek lennie.
    • Project location legyen olyan, hogy megtaláld a könyvtárat, ha a intézőben keresed. 🙂
  3. Válaszd a Phone and Tablet lehetőséget, a többit ne jelöld be.
  4. A minimum SDK legyen API 10: Android 2.3.3 (Gingerbread) és kattints a Next-re.
  5. Válasz az Empty Activity-t a template-k közül és Next.
  6. Hagyj mindent így:
    • Activity name legyen MainActivity
    • Generate Layout file jelölt
    • Layout name: activity_main
  7. Kattints a Finish gombra.

Most kész van egy lefordítható és futtatható project, amelyik a “Hello World” feliratot jeleníti meg telefonon és az applikáció nevét.

Applikáció címkéjének megváltoztatása

Nyisd meg a /app/res/values/strings.xml állományt.

<resources>
    <string name="app_name">Two Activity</string>
</resources>

A szöveges erőforrások között turkálunk, az AndroidManifest.xml állományban csak egy erre mutató hivatkozás van. ha akarod itt megnézheted:

/app/manifest/AndroidManifest.xml

android:label="@string/app_name"

Emulátor használata

  1. Indísd el az AVD manager-t. Tools –> Android –> AVD Manager
  2. A AVD ablakban kattins a Create Virtual Device gombra.
  3. Válassz egy Nexus telefon, ha rám hallgatsz elég a Nexus 4.
  4. A kattints a Next gombra .
  5. Fogadd el egy Next-el a Marshmallow operációs rendszert.
  6. Majd kattints a Finish gombra

Saját telefon vagy tablet használata

  1. Kösd össze USB-n keresztül a számítógépet a telefonnal. Várd meg amíg telepíti a Windows az eszköz driver-t, és ne kapcsold háttértár módba.
  2. A eszközödön engedélyezned kell a Hibaelhárítás lehetőséget.
    • Settings (Beállítások) –> Developer options (Fejlesztői lehetőségek) –> USB Hibaelhárítás bejelölve
    • Ha nem találod a Fejlesztői lehetőségek menüt. a Telefonról menüben  (About phone) A Build number-re kattints hétszer és megjelenik a Fejlesztői lehetőségek menü.

Az applikáció futtatása

  1. Kattints az Eszköztáron a Run ikon-ra vagy SHIFT+F10
  2. Válaszd ki az eszközt a megjelenő ablakból.
    • Connected Device lehet saját eszköz vagy már futó emulátor
    • Available Emulators a még nem elindított AVD-k egyike.

Az emuátor nem indul tl gyorsan, sőt lassan, de ez még mindíg gyorsabb, mint az előző verzióban.

Készítsük el az Activity-k User Interface-t

Nyisd meg (bár szerintem nyitva van) az /app/res/layot/activity_main.xml állományt.

Két panel között választhatsz Design és Text, a szerkesztő felület alatt találod a két panel fület. Design a várható látvány grafikus felületen, a Text felületen fogunk dolgozni.

  1. Töröld a <TextView> elemet a kódból.
  2. A RelativeLayout helyett LinearLayout-on, tehát cseréld a <RelativeLayout> elemet <LinearLayout>-ra.
  3. Egészítsd ki a <LinearLayout> elemet a következő tulajdonsággal (attribute):
android:orientation="vertical"
  1. Töröld az összes android:padding és tools:content tulajdonságot.

A beszúrt tulajdonság (orientation) arra készteti az elrendezést (layout), hogy az benne megjelenített objektumokat egymás alatt rendezze el (vertical).

Most így néz ki az /app/res/layot/activity_main.xml állomány:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical">
</LinearLayout>

Ezzel előkészítettük az alkalmazást.

eskisehir escort


escort Denizden herkese merhaba 18 yasindayim 169 boyundayim sarisin kahverengi gozlu 60 kiloyum Citir vucudumu kasli bir erkekle birlestirmek saatlerce erotizm yasamak cinselligin merak ettigim tum kisimlarini tatmak istiyorum Yeni bir bursa escort oldugum icin tecrube edinecegim bircok pozisyon oldugunu dusunuyorum Cinselligin her yonunu kesfetmeye bayiliyorum ve olgun erkeklerin bana bu konuda yardimci olacagina inaniyorum Deneyimlerine guvenen her erkegin bana ulasmasini benimle ayni yatagi paylasip cinsel tecrubeler paylasmasini istiyorum 30-40 yas arasindaki erkekleri tercih ettigimi belirtmek istiyorum Tercih ettigim yastaki erkeklerin her seyi beni cok etkiliyor Partnerimin ust dudagimi emerek isirmasi beni kudurtur Beni tahrik eden noktalari kesfederseniz sizi cok eglendiririm Tahrik oldugumda surekli erotik sozcukler soylerim ask cumleleri fisildarim Partnerimle dans etmeye bayilirim Dans ederken partnerimin dizine surtunmek beni en cok etkileyen durumdur Her dans figurune yatkin olan esnek vucudum yatakta da mukemmeldir Her pozisyonda seks yapmaya hazirim Cinsel durtuleri cok guclu bir escort olarak saatlerce benimle erotizm yasayabilecek romantik yapili hafif hasin erkekleri tanimak istiyorum Seksi bir citirla ayni yatagin icinde dakikalarca opusmek saatlerce sevismek icin hala ne bekliyorsunuz? Sizi zevkin doruklarina cikarmak icin sabirsizlaniyorum Beni dilediginiz zaman ayarlayabilirsiniz Otele ve eve geliyorum ve istediginiz kadar ucrete bagli olarak sizinle birlikte olurum Simdi telefonunu eline al ve numarami tusla

eskisehir eve ve otele giden escort
eskisehir kendi evinde gorusen escortlar
eskisehir sinirsiz escortlar
escort eskisehir bayan
eskisehir escort ilan

Escort bayanlar seni bekliyor