Új hozzászólás Aktív témák
-
Neck
veterán
Mennyire "kezdő" ez a topic? Mert - habár programozó vagyok - most szeretnék nekiállni az Androiddal bohóckodni, azaz én eléggé kezdő leszek. Jöhetek ide a hülyeségeimmel?

-
fatal`
titán
válasz
szabi__memo
#1092
üzenetére
Amazont nézd meg esetleg, de szerintem ott sem lehet.
-
szabi__memo
nagyúr
válasz
WonderCSabo
#1096
üzenetére
Nem a google-t nem erdekli, hanem senkit. Es nem csak nalunk van ez hanem orszagok tucatjaiban. Es nincs fizetos ceg aki piacot nyujtana. Ne ez a dobbenet.
-
WonderCSabo
félisten
válasz
szabi__memo
#1095
üzenetére
Magyarország kis ország, kevés fejlesztővel, így rohadtul nem érdekli a Googlet.
-
szabi__memo
nagyúr
Komolyan mondom hihetetlen, hogy nincs semmi legális korrekt lehetőség. Döbbenet.
-
fatal`
titán
válasz
trisztan94
#1093
üzenetére
Ha kifizeted neki az adót, akkor biztos működhet. Mert adószámot kér.
-
fatal`
titán
válasz
trisztan94
#1090
üzenetére
Nem éppen. Magyarországról nem lehet fizetős appot feltenni, mert nem tudsz merchant accot regisztrálni.
-
trisztan94
őstag
válasz
szabi__memo
#1089
üzenetére
Szia!
Hogy érted azt, hogy van-e rá lehetőség?Befizeted a $25-ös developer költséget a Google-nek és onnantól kezdve fel tudsz rakni akármit: fizetőset, micro fizetéseset, reklámosat.. (Persze előbb elbírálják az appod, de mostanában kb. mindent engednek
) -
szabi__memo
nagyúr
Sziasztok!
Van valami lehetőség fizetős appot feltölteni marketre (akár más is lehet, nem csak a play)?
Válaszokat akár magánba is küldhetitek.
Köszönöm -
trisztan94
őstag
Van egy sprite-om ami 300px széles, és ki kellene tölteni egy 800px széles window-t. Hogy lehet ezt a legkönnyebben megoldani?
Én így oldottam meg, de szerintem ez így baromi teljesítmény zabáló (folyton változtatgatni a sprite helyzetét..)
Render() metódus [libgdx]: (A create() metódusban van megadva az alap pozíciója, ami 0,-5)
batch.begin();
grassSprite1.draw(batch);
grassSprite2.draw(batch);
grassSprite3.draw(batch);
grassSprite1.setPosition(280, -5);
grassSprite2.setPosition(280, -5);
grassSprite3.setPosition(280, -5);
grassSprite1.draw(batch);
grassSprite2.draw(batch);
grassSprite3.draw(batch);
grassSprite1.setPosition(570, -5);
grassSprite2.setPosition(570, -5);
grassSprite3.setPosition(570, -5);
grassSprite1.draw(batch);
grassSprite2.draw(batch);
grassSprite3.draw(batch);
grassSprite1.setPosition(0, -5);
grassSprite2.setPosition(0, -5);
grassSprite3.setPosition(0, -5);
batch.end();Azért van 3 grassSprite, mert három különböző "layer"-en vannak. Innen csórtam.
Szerk: ha széthúzom a sprite-okat 800px szélesre akkor sajna nagyon romlik a minőségük, ezért kell ez a "duplikálás" (mi erre a helyes magyar szó?
)Más (hunfatal) :
Úgy oldottam meg végül az ütközés utáni body törlést, hogy létre hoztam egy array-t (deleteBodies), oda hozzáadtam a contactlistenerben a body-t amit törölni kell (A fixture-ökből szedtem ki a getBody() fgv-el), majd a render metódus elején (tehát a contactlisteneren kívül) töröltem. Így nincs külön osztályban, de működik.
Mit gondol(tok)sz? jó lesz így?
kaud:
ContactListenerben:dropDeletionList.add(fixtureA.getBody());
A render metódus elején:
if(dropDeletionList.size > 0){
Iterator<Body> iter2 = dropDeletionList.iterator();
Iterator<Body> iter = raindrops.iterator();
while (iter2.hasNext()){
Body dropToDel = iter2.next();
while(iter.hasNext()){
Body drop = iter.next();
if(drop.equals(dropToDel)){
iter.remove();
world.destroyBody(dropToDel);
}
}
}
dropDeletionList.clear();
}A raindrops array iterátora azért kell, hogy ne csak a body-t törölje ki, hanem a hozzá tartozó textúrát is.
-
fatal`
titán
válasz
trisztan94
#1085
üzenetére
Ilyen esetben példányszintű változót használj és osztálynév.this.változónévként hivatkozz rá.
Viszont nem itt. Contactlistenerben ne törölj physicsworld elemet, mert több, egyszeri ütközés elején crashelni fog az app.
Egy másik osztályban állítsd be valamilyen flaggel, hogy melyik bodyt akarod törölni és a következő libgdx update ciklusban töröld ki a bodyt és állítsd vissza a flaget (hogy a következő updatenél ne próbálja meg törölni megint).
-
trisztan94
őstag
válasz
trisztan94
#1083
üzenetére
Szerk: (#1084) hunfatal: Köszönöm, megnézem majd

Még egy dolgot kérdeznék

A collision detection eddig így volt megoldva:
Iterator < Body > iter = raindrops.iterator();
while (iter.hasNext()) {
Body raindrop = iter.next();
if (raindrop.y + 64 < 0) {
dropped++;
iter.remove();
}
if (raindrop.overlaps(bucket)) {
dropSound.play();
catched++;
iter.remove();
}
}Amikor összeér a vödör és a csepp, akkor nagyon szépen eltűnt a csepp és lejátszotta a hangot.
Ez amúgy a libgdx "Simple app" tutorialján alapszik, csak átalakítanám box2d-re (gravitáció, "szél" [x tengelyen gravitáció], box2dlight, stbstb miatt)Tehát beraktam ez helyett a box2d-s collision detection-t. így:
Iterator < Body > iter = raindrops.iterator();
while (iter.hasNext()) {
Body raindrop = iter.next();
world.setContactListener(new ContactListener() {
@Override
public void beginContact(Contact contact) {
Fixture fixtureA = contact.getFixtureA();
Fixture fixtureB = contact.getFixtureB();
if ((String) fixtureA.getBody().getUserData() == "bucket" && (String) fixtureB.getBody().getUserData() == "drop" || (String) fixtureA.getBody().getUserData() == "drop" && (String) fixtureB.getBody().getUserData() == "bucket") {
//csepp és vödör ütközik
dropSound.play();
catched++;
iter.remove();
}
if ((String) fixtureA.getBody().getUserData() == "ground" && (String) fixtureB.getBody().getUserData() == "drop" || (String) fixtureA.getBody().getUserData() == "drop" && (String) fixtureB.getBody().getUserData() == "ground") {
//csepp és föld ütközik
dropped++;
iter.remove();
}
}
@Override
public void endContact(Contact contact) {}
@Override
public void preSolve(Contact contact, Manifold oldManifold) {
// TODO Auto-generated method stub
}
@Override
public void postSolve(Contact contact, ContactImpulse impulse) {
// TODO Auto-generated method stub
}
});
}Viszont az iter.remove()-ra ezt a hibát dobja:
"Cannot refer to a non-final variable iter inside an inner class defined in a different method"
Ráraktam az iterátorra a "final" modifikációt, akkor nem hibázik, de amikor valami ütközik (csepp - talaj, csepp - vödör), akkor nem az tűnik el amelyik ütközött, hanem egy tök random.
Értitek, hogy mit magyarázok?
Tudok készíteni egy videót a dologról, ha kell.Köszönöm szépen előre is a segítséget!

-
fatal`
titán
válasz
trisztan94
#1083
üzenetére
Nézz körül az andengine fórumon, a box2d ugyanaz.
Ne fixturet hasonlíts, hanem bodyt (fixture.getBody()) és/vagy userDatat.
-
trisztan94
őstag
Nagyon szépen köszönöm!

Arra esetleg valami egyszerű megoldás, hogy két specifikus body között történt-e ütközés?
Most úgy csinálnám, hogy:
if(fixtureA == "valami" && fixtureB == "masik" || fixtureA == "masik" && fixtureB == "valami"){
//do
}Tehát ugye fordítva is meg kell néznem. Mondjuk ez nem olyan nagy dolog, de ha mégis van rá valami egyszerű megoldás, akkor azt használnám
(libgdx box2d dokumentációja sajnos nagyon sok helyen "coming soon"
) -
fatal`
titán
válasz
trisztan94
#1080
üzenetére
(String)fixtureA.getBody().getUserData()
és
(String)fixtureB.getBody().getUserData()A fixture.toString() egész mást ad vissza

-
PandaMonium
őstag
Persze, hogy kell, csak nem "android módon", de még csak nem is Java-ban (nem is elérhető benne csak Javascript, C# meg mittudoménmicsoda). Én is csak ismerkedés céljából javasoltam a saját engine-t, ha határidős meló van és még nincs motor az app alá akkor nehogy most kezdj el írni hozzá. Egyébként nem olyan óriási dolog saját engine-t írni, én is épp azon vagyok (bár én desktopra, de szintén OpenGL-el és Java-val) de az tény, hogy kell hozzá kitartás és sokat kell olvasni szakmai könyveket. Akárhogy is, szerintem ha csak magának csinálja akkor ha összerak egy bármilyen alap enginet ami már képes meghajtani egy szimpla játékot abból sokkal többet tanul mint ha Unity-vel C#-ban firkál egy előre írt, agyonegyszerűsített API-ban.

-
trisztan94
őstag
Sziasztok!
libgdx-el és box2d-val kapcsolatban lenne egy kérdésem.
Hogy tudok egy Body-nak adni egy saját "nevet"?
Jelenleg így van beállítva egy body nekem:
groundDef = new BodyDef();
groundDef.type = BodyType.StaticBody;
groundDef.position.set(new Vector2(0, 0));
groundBody = world.createBody(groundDef);
groundShape = new PolygonShape();
groundShape.setAsBox(800, 10);
groundFixture = new FixtureDef();
groundFixture.shape = groundShape;
groundFixture.density = 1f;
groundFixture.friction = 1f;
groundFixture.restitution = 0f;
groundFixture.filter.categoryBits = CATEGORY_GROUND;
groundFixture.filter.maskBits = MASK_GROUND;
groundBody.createFixture(groundFixture);
groundBody.setUserData("ground");A legutolsó sorban hozzáadtam a userData-hoz a "ground" nevet, de mintha nem is lenne ott.
Ilyen a contact listenerem:
@Override
public void beginContact(Contact contact) {
Fixture fixtureA = contact.getFixtureA();
Fixture fixtureB = contact.getFixtureB();
Gdx.app.log("beginContact", "between " + fixtureA.toString() + " and " + fixtureB.toString());
}
...Amikor két body ütközik, akkor kiír egy baromi hosszú kódot arra, hogy melyik két body ütközött:
beginContact: between com.badlogic.gdx.physics.box2d.Fixture@69dbb4d1 and com.badlogic.gdx.physics.box2d.Fixture@573c3ba2

-
Karma
félisten
válasz
PandaMonium
#1078
üzenetére
Azért ez a "semmit se tanul" kijelentés igen erős, tekintve hogy a Unity milyen népszerű és erős. Programozni azzal is kell
.Ha pénz van a dologban, és be van tervezve a licencköltség, akkor mindenképp a Unity. Ilyen esetben saját engine-t írni öngyilkosság; de legalábbis nagyon sötét megrendelőre utal ha belemegy.
Hobbiismerkedésnél persze más a helyzet.
-
-
caindwan
aktív tag
akkor ha 3D-vel szeretnék dolgozni már csak az Unity maradt?
-
negyedes
addikt
megitn egy adatbazisos kerdesem lenne:
felkapcsolodok imap-al a google szervere, println-el kiiratom az uzeneteket, de mikor be szeretnem tenni az adatbazisba nullpointerexception dob.
ez az insert:
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_SENDER, sender);
initialValues.put(KEY_RECEIVER, receiver);
initialValues.put(KEY_SUBJECT, subject);
initialValues.put(KEY_DATE, date);
initialValues.put(KEY_TEXT, text);
initialValues.put(KEY_ATTACH, attach);
initialValues.put(KEY_IMPORT, ipm);
mDb.insert(SQLITE_TABLE_INBOX, null, initialValues);es ez amit meghivok miutan kiolvastam a leveleket az inboxbol:
dbHelper.newEmail(senderAddress, "nincs", subject, date, textMessage, "nincs", "nincs" );ha en manualisan, idezojelekben adom meg akkor mukodik, de csak a main activityben, ha a fogadas classban adom meg mar nem megy.
kiirattam minden valtozot meg az insert elott es atadja hivaskor az ertekeke, szoval nem tesz null-t sehova
-
Deck
titán
Sziasztok!
Szeretném a SystemUI-t úgy módosítani, hogy ne legyen áttetsző alapból a statusbar és a navigation bar hanem fekete legyen. Mivel a gyári launchernél mindig áttetsző lesz. Vagy inkább a launchert szerkesszem? Mivel másik launchernél marad fekete.
Tehát mit keressek a kibontott SystemUI.apk-ban?
-
válasz
trisztan94
#1070
üzenetére
Én csak így a partvonalról...
Firefox OS most elvileg pont a webes világgal próbálkozik...annyira nem eredményes...eddig.
Nemrég webes platformról natívra tettek át appokat...most csak a facebook jut eszembe...de volt más is.
Az a pletyka, hogy annyira nem gyors mint kéne...és annyira nem tudnak nagy dolgokat csinálni mint natíva...Ezt csak hallottam...
-
trisztan94
őstag
Mennyire lehetséges jó minőségű, gyors alkalmazásokat készíteni Cordovával és /vagy PhoneGap-pel? Mivel én alapból webes területen dolgozom, nagyon megkönnyítené a dolgom a html-css-js használata mobil alkalmazásokban, csak az a kérdés, hogy mennyire életszerű a dolog... van valakinek tapasztalata velük? Esetleg egy pro-con összefoglalás ez és a natív (java) alkalmazások között?
Mennyire jó szempont a cross-platform ?
-
WonderCSabo
félisten
Valaki járt már el hasonlóan? Vagy valami mást használt ORM-hez?
Hogy rögzítve legyen a válasz erre a kérdésre:
Kettő libet próbáltam ki. Az egyik az ActiveAndroid. Ez lightweight, egyszerű, csak 16KB, és egyszerű, letisztult API-ja van. Hátránya az, hogy customizálni szinte egyáltalán nem lehet, csak a saját magának létrehozott táblákkal képes dolgozni, és viszonylag egyszerű lekérdezésekkel, amit a query builderével lehet írni.
A másik lib az ORMLite. Ez picit bonyolultabb, és picit többet kódot kell ahhoz írni, hogy az egyszerű példákat is megcsináld. Cserébe teljesen customizálható, azt a db-t használja amit Te megadsz neki, bármilyen queryt lehet írni, és sokkal több funkciója van, mint az előzőnek. Sajnos mindennek ára van, majdnem 300KB a lib. Illetve van még egy nagy előnye is, nem csak Android SQLite backendje van, hanem MySQL, Postgres, Microsoft SQL Server, H2, Derby, HSQLDB, és sima Sqlite. Így a megírt adatbázisos kód könnyen portolható más platformra.
-
trisztan94
őstag
válasz
PandaMonium
#1054
üzenetére
Elfelejtettem válaszolni, bocsi

Köszönöm szépen, pont erre volt szükségem, meg is oldottam vele.

-
WonderCSabo
félisten
válasz
negyedes
#1055
üzenetére
Attol, hogy egy parameter null, egyaltalan nem kovetkezik az, hogy a meghivott fv nullpointert is fog dobni miatta. Nezd meg a javadocot es/vagy forrast, es meglatod mi tortenik a fv-ben.
Az Adapteres temara: nem rossz a SimpleCursorAdapter, en is arra szavazok. Egyebkent azert nem a kedvencem. Ha nem nagyon sok vagy nagyon nagy objektumaiad vannak, sztem nyugodtan huzd be memoriaba, es egy ArrayAdaptert csinalj. mivel ugyis listat kezelsz.
-
Karma
félisten
válasz
negyedes
#1064
üzenetére
Hát, ennyi kód ismeretében csak általánosan megy...
Amikor az adaptert létrehoztad, egy listát adtál neki data gyanánt. Ezt a listát tedd el tagváltozóba, és használd a remove metódusainak egyikét a törlendő elemmel vagy annak indexével.
Mivel ilyen naivan sikerült az adaptert megcsinálni, először meg kell keresned egy ciklussal a helyes indexet...
Erősen javaslom, hogy nézd meg a SimpleCursorAdaptert a kézzel varázslás helyett. Csak több munkát keversz magadnak...
-
-
negyedes
addikt
egy simpleadapteres listat hogy tudok frissiteni ha pl kitoroltem egy elemet?
-
PandaMonium
őstag
válasz
trisztan94
#1053
üzenetére
Mondjuk leellenőrzöd, hogy a touchPos a textúrád koordinátáin belül van-e.
Így ni:
Vector3 touchPos = new Vector3();
touchPos.set(Gdx.input.getX(), Gdx.input.getY()*(-1), 0);
if(touchPos.x > karika.x && touchPos.x < (karika.x+karika.width) && touchPos.y < karika.y && touchPos.y > (karika.y-karika.height)){
karika.setPosition(new Vector2(touchPos.x - 106 / 2, touchPos.y + 238*2));
}
Amit az if-en belül írtam ott nem vagyok benne biztos, hogy léteznek azok a paraméterek olyan formában ahogy írtam őket, de elég logikus a dolog: A karika.x a karika x koordinátája, a karika.y az y koordinátája a karika.width a karika textúrájának szélessége, a karika.height a karika textúrájának magassága.
Elsőre bonyolultnak tűnhet ez a sor de rajzold le magadnak otthon a feltételeket egy papírra, (vizuálisan mindent sokkal könnyebb megérteni) és te is rájössz, hogy pofon egyszerű az egész.
Ja és igen, a feltételben a "touchPos.y < karika.y && touchPos.y > (karika.y-karika.height)" rész csak akkor működik ha felfelé növekvő, lefelé csökkenő koordináta rendszert használsz, máskülönben: "touchPos.y > karika.y && touchPos.y < (karika.y+karika.height)" a nyerő (ugyan az, csak fordítva).
Elég reggel van még, de ha nem írtam el semmit akkor működnie kell így.
-
trisztan94
őstag
Hogy tudom azt nézni inputhandler-ben, hogy a textúrára érkezett-e a drag event?
public boolean touchDragged(int screenX, int screenY, int pointer) {
if(Gdx.input.isTouched()){
Vector3 touchPos = new Vector3();
touchPos.set(Gdx.input.getX(), Gdx.input.getY()*(-1), 0);
karika.setPosition(new Vector2(touchPos.x - 106 / 2, touchPos.y + 238*2));
}
}
return true;
}Így ugye mindig a drag helyére ugrik a textúrám, de én azt szeretném, hogy csak akkor történjen meg a drag, ha a textúrát húzza.. értitek

-
WonderCSabo
félisten
válasz
negyedes
#1051
üzenetére
Hmm, lehet, hogy fáradt vagyok, de nekem ez most korrektnek tűnik. Ellenőrizd le, hogy jó táblából jó kulcsal akarsz-e törölni, és helyes értéket adsz-e át. A fv. visszatérési értékét nézted? Visszaadja, hogy hány sort törölt ki.
Az is megkönnyítené, ha egy SQLite manager progival megnyitod a db-det, és úgy ellenőrized le, hogy biztos az van-e benne, amit Te gondolsz. Ha internal storageban van a db, akkor ehhez persze először ki kell másolni externalra. -
negyedes
addikt
Nem tudok rajonni hogy ez a kod miert nem torli az adott record-ot:

mDb.delete(SQLITE_TABLE_PROFILE, KEY_PROFILE_NAME + " = ? ", new String[] {profileName});
-
trisztan94
őstag
válasz
trisztan94
#1046
üzenetére
Még hozzátennék egy gyorskérdést:
van ez a ciklusom:
while(tubeIterator.hasNext()){
tube = tubeIterator.next();
BodyDef tubeDef = new BodyDef();
tubeDef.type = BodyType.StaticBody;
tubeDef.position.set(tube.getPosition().x, tube.getPosition().y);
tubeBody = world.createBody(tubeDef);
tubeLoader.attachFixture(tubeBody, "tube", tubeFixture, tube.getWidth());
tubeBodyOrigin = tubeLoader.getOrigin("tube", tube.getWidth()).cpy();
}itt végigiterálok egy tömbön, melyben a "csődarabok" pozíciója van letárolva. Mindig szélesség / 25 darab csődarab van (mert 25px széles egy db), de ez igazából lényegtelen. Úgy oldottam meg a physics mask rátételét az összes darabra, hogy ebbe a ciklusban mindig létrehozom a BodyDefiníciót, mindig ráerősítem a body-ra azt illetve a fixture-t is minden egyes darabhoz "felcsatolom".
Nem túl memóriazabáló ez így?
Lehet ezt szebben megoldani? -
trisztan94
őstag
Sziasztok!
Box2D-vel kapcsolatban, azon belül collision detection-nel illetve Physics Body Editorral kapcsolatban kérdeznék.
A helyzet változatlan, van egy karikám, szeretném, ha érzékelné a játék, ha a karika teteje hozzáér a csőhöz.
PandaMonium ajánlotta erre a Physics Body Editor nevezetű csodás programot.Először is ezzel kapcsolatban kérdeznék:
Rajzoltam két shape-t a collision-re figyelő részeken:

Ugye itt a teteje és az alja a lényeges. Nézegettem a tool oldalán lévő tutorialt, a sample alkalmazást is, de arra sehogy sem tudok rájönni, hogy hogyan lehetne egy mozgó képre rárakni azt a két shape-t. Mert ugye a karikám touchDrag-re mozog oda ahová húzzuk, de akárhányszor elhúzom ez fogad:

Persze itt alapból rendesen illeszkedik a képre, csak arrébb húztam, hogy látszódjon. Nem megy a képpel a maszk.. Jelenleg így van definiálva az egész a create() metódusomban:
BodyEditorLoader karikaLoader = new BodyEditorLoader(Gdx.files.internal("data/collision-masks/karika.json"));
BodyDef karikaDef = new BodyDef();
karikaDef.type = BodyType.DynamicBody;
karikaDef.position.set(karika.getPosition().x, karika.getPosition().y);
karikaDef.angle = karika.getRotation();
karikaBody = world.createBody(karikaDef);
FixtureDef karikaFixture = new FixtureDef();
karikaFixture.density = 0.5f;
karikaFixture.friction = 0.8f;
karikaFixture.restitution = 0.6f;
karikaLoader.attachFixture(karikaBody, "karika", karikaFixture, karika.getWidth());
karikaBodyOrigin = karikaLoader.getOrigin("karika", karika.getWidth()).cpy();Hogy kéne azt megoldani, hogy a maszk mozogjon vele együtt? Arra már rájöttem, hogy a render() metódusban kéne lennie, de akárhogy próbálgattam helyezgetni a dolgokat (pl: KarikaDef.position-t beraktam a render metódusba mindig a karika draw-olása után), de valamiért sehogy sem működik.
Viszont ami működik rendesen az a gravitáció. Na de kitaláljátok, hogy mire működik a gravitáció? Hát persze, hogy a DebugRenderer-rel kirajzolt maszkra (amiről eddig szó volt). A karikára hogy tudom rárakni? (Igazából az sem tiszta, hogy most a karika textúrámból hogy tudok egy Body-t csinálni amire aztán ráerősítem a maszkot
)Na, most így hirtelenjében ennyi. A collision detection-ös kérdésemet csak azután teszem fel miután ezt sikerült megoldani (vagy elküldtetek a picsába
) 
Köszönöm szépen előre is!!

-
Karma
félisten
válasz
negyedes
#1043
üzenetére
Ó. Megnéztem a doksit, persze hogy nem jó ez se, hiszen a parent az a ListView.
Amit te inbox_listnek neveztél, az a megnyomott elem... Onnan próbáld meg a findViewById-t.De igazából sokkal jobb lenne, ha az egészet kidobnád a francba, s a parent.getItemAtPosition(position) hívással megszereznéd az adatobjektumodat, és onnan vennéd ki a három mezőt. Tudod, MVC meg ilyenek...
-
negyedes
addikt
válasz
negyedes
#1043
üzenetére
Azt hiszem rajottem mi a baja, az id-k a tablamban mind 0-k de nem ertem miert.
private static final String DATABASE_CREATE_IN =
"CREATE TABLE " + SQLITE_TABLE_INBOX + " (" +
KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
KEY_SENDER + " TEXT," +
KEY_RECEIVER + " TEXT," +
KEY_SUBJECT + " TEXT," +
KEY_DATE + " TEXT," +
KEY_TEXT + " TEXT," +
KEY_ATTACH + " TEXT," +
KEY_IMPORT + " TEXT" + " )";ez a create stringje.
-
Karma
félisten
válasz
negyedes
#1041
üzenetére
Módosítsd a findViewById hívásokat, most valószínűleg az activity-d metódusát hívod. Ha tippelnem kéne, belső nem-static osztályt írtál az adapternek.
TextView send = (TextView) parent.findViewById(R.id.sender);
TextView date = (TextView) parent.findViewById(R.id.date);
TextView subject = (TextView) parent.findViewById(R.id.subject); -
negyedes
addikt
válasz
WonderCSabo
#1040
üzenetére
koszi szepen, vegul ijra irtam a queryt. de belefutottam egy ujabb bajba amit eddig nem vettem eszre:
adott a kovetkezo kod:
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View inbox_list,
int position, long id) {
final String messageInbox = "inbox";
TextView send = (TextView) findViewById(R.id.sender);
TextView date = (TextView) findViewById(R.id.date);
TextView subject = (TextView) findViewById(R.id.subject);
String messageSender = send.getText().toString();
String messageDate = date.getText().toString();
String messageSubject = subject.getText().toString();
intent.putExtra(EXTRA_MESSAGE_SENDER, messageSender);
intent.putExtra(EXTRA_MESSAGE_DATE, messageDate);
intent.putExtra(EXTRA_MESSAGE_SUBJECT, messageSubject);
intent.putExtra(EXTRA_MESSAGE_INBOX, messageInbox);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
});elmeletileg ez megnezni az aktualis click poziciojat es kivalasztja a textview-bol az ertekeket, de nekem allandoan az elso erteket adja meg.
hogy tudnam azt megcsinalni hogy minden uj clicknel a listaban a normalis ertekek keruljenek az extra-ba?
-
WonderCSabo
félisten
Én ezt már csak azért nem javasolnám, mert a szomszéd pistika által is megírt injectiont sem védi ki.
Bár ha itt ha jól látom pont nem volt user input.(#1034) negyedes: Ha minden igaz az adapter minden egyes elemhez rendel egy View-t. Az adott sort csak akkor tudod eltüntetni, ha kiszeded a null elemeket az átadott listából.
Egy másik megoldás még az lehet, hogy csak elrejted a Viewt.public class YourAdapter extends ArrayAdapter<YourType> {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ListView listView = (ListView) parent;
if (convertView == null) {
if (getItemViewType(position) == 0) { // not null
convertView = ...; // inflate list item view
} else { // null
convertView = new View(getContext());
convertView.setVisibility(View.GONE);
}
}
if (getItem(position) == 0) { // not null
... // update data of the reused list item view
}
return convertView;
}
@Override
public int getItemViewType(int position) {
if (getItem(position) != null) { // not null
return 0;
}
return 1; // null
}
@Override
public int getViewTypeCount() {
return 2; // not null, null
}
}Nem teszteltem ki, de működnie kell.
-
trisztan94
őstag
válasz
PandaMonium
#1037
üzenetére
Köszönöm szépen, sikerült megoldani vele!
(az utolsó kivételével, de az még mindegy
) -
Karma
félisten
válasz
negyedes
#1036
üzenetére
A DB-ben az oszlopodat gondolom Sendernek hívják, a KEY_SENDER csak a tagváltozó/konstans a Java segédosztályodon. Ha tényleg kézzel akarod összerakni a select hívást (amit nem értek miért tennél), a valódi oszlopneveket kell használnod.
Azaz pl.
String selectQuery = "SELECT " + DBConstants.KEY_SENDER + ", " + DBConstants.KEY_RECEIVER + ", " ...;
Cursor cursor = mDb.rawQuery(selectQuery, null); -
PandaMonium
őstag
válasz
trisztan94
#1035
üzenetére
Collision detection -ra még mindig a Box2D -t tudom javasolni. Ezzel tudsz collision mask-ot létrehozni a karikádhoz, és ezt a collision maskot egy fájlba tudod exportálni. Jó hír, hogy a LibGDX-hez van plugin ami betölti az ilyen collision maskokat szóval még nem is kell sajátot írnod (bár az sem volna olyan nagy kihívás szerintem). Az, hogy a cső kitakarja a karika jobb oldalát nem kis dió, tekintve, hogy ahogy fel-le mozgatja az ember a karikát a csőnek továbbra is ki kell takarnia. A karikát később kell renderelned mint a csövet, hogy fölötte legyen. A 4 képes megoldást semmiképp sem alkalmaznám, nagy macera feleslegesen, inkább írnék a karika jobb szélére valami maszkot, hogy azt a részt ahol a cső és a maszk találkozik vágja ki a textúrából.

-
negyedes
addikt
String selectQuery = "SELECT KEY_SENDER, KEY_RECEIVER, KEY_DATE, KEY_SUBJECT, KEY_TEXT FROM " + SQLITE_TABLE_INBOX + " WHERE KEY_RECEIVER IS NOT NULL ";
Cursor cursor = mDb.rawQuery(selectQuery, null);erre azt dobja nekem hogy no such column KEY_SENDER, ha kitorlom jon a kovetkezo.

-
trisztan94
őstag
Üdv néktek!
Egy collision detection-ös gyorskérdésem lenne:
Van ez a karika:
Szerk: úgy néz ki valami hiba történt a képpel, a következő képen látni, hogy ez egy "átlátszó" karika

Erre szeretnék egy olyan collision detection-t írni, hogy csak a karika fenti és lenti részén érzékelje, valahogy így: (a zöld részeken érzékelje)

A másik dolog az, hogy egy "csövön lenne áthúzva", most így néz ki:

Itt ugye nyílván az a cél, hogy a baloldalán a cső "fölött" legyen, tehát ne fedje le a cső, viszont a jobb oldalán fedje le, létrehozván egy olyan illúziót, hogy a karikát áthúzzuk a csövön.
Eddig érthető?
Én ezt úgy gondoltam ki, hogy 4 felé vágom a képet, "összerakom" őket kódban, hogy egy képnek nézzen ki, és a különböző darabokra kötöm a collision detection-t.. ez így hülyeség?

Bocsi, ha nagyon alap kérdés!
Köszönöm! -
negyedes
addikt
azt hogy tudom megoldani hogy egy listview-ben ha egy adott eleme a listanak null ne jelenjen meg?
-
trisztan94
őstag
válasz
PandaMonium
#1031
üzenetére
Valóban nem vagyok képben, de egyszer meg kell tanulni

Sajnos én csak magamtól tanulok, könyvekből nagyon nem megy, max videókból. Kell nekem 1-2 hét mire belerázódok, megismerem a környezetet, stbstb, de addig bombázlak majd titeket a hasonló kérdéseimmel, előre is bocsi

Eddig nem hogy játék fejlesztéssel, de még java-val sem foglalkoztam, így kicsit nehezebb az az indulás, de érzem, hogy menni fog

Ui: szerintem esti brainstorm-olásom következménye lett az eddigi legrondább kód amit írtam, és amit valszeg holnap rögtön ki is javítok. De legalább működik. Akár meg is leshetitek itt.
Meg ne kérdezzétek, hogy mi mit jelent, fogalmam sincs, működik
de mondom, ez majd valamelyik tisztább pillanatomban el fog tűnni 
Ezt generálom vele amúgy tök random (a "csövet")
-
WonderCSabo
félisten
válasz
PandaMonium
#1031
üzenetére
Én is akartam mondani, de nem akartam udvariatlan lenni, szóval örülök, hogy megelőztél.

-
PandaMonium
őstag
válasz
trisztan94
#1030
üzenetére
Nem bántás, de ha ennyire nem vagy még képben a játékfejlesztéssel érdemes lenne fellapozni valami könyvet a témával kapcsolatban mielőtt "nagy fába vágod a fejszédet".

-
trisztan94
őstag
válasz
WonderCSabo
#1029
üzenetére
Köszönöm szépen!

-
WonderCSabo
félisten
válasz
trisztan94
#1028
üzenetére
-
trisztan94
őstag
Sziasztok!
Van egy touchDragged figyelőm libgdx játék alatt, ami így néz ki:
@Override
public boolean touchDragged(int screenX, int screenY, int pointer) {
karika = world.getKarika();
Vector2 pos = new Vector2(screenX, screenY);
karika.setPosition(pos);
return false;
}Na most itt ugye annyit csinálunk, hogy a karika mindig arra a pozícióra menjen ahová az ujjunkat húzzuk.. Balra és jobbra szépen megy, de valamiért a fel-le felcserélődik, tehát amikor felfele húzom az ujjam, akkor lefele megy, amikor lefele húzom az ujjam, akkor felfele. Miért van ez?
Mivel lehet megoldani? 
Köszi!
Szerk:
Más: Azt hogyan lehet megoldani, hogy egy objektum ne tudjon "kimenni a pályáról"? (tehát mintha fal lenne ott v nemtom)
-
WonderCSabo
félisten
válasz
trisztan94
#1026
üzenetére
Nem feltétlenül kell clean. Igen, elvileg ennyi.
-
trisztan94
őstag
válasz
WonderCSabo
#1022
üzenetére
Ja csak ennyi?
És akkor tudom használni? (gondolom clean kell, nem?) -
thon73
tag
válasz
WonderCSabo
#1024
üzenetére
Köszi, ez jó ötlet. De kicsit félreérthető voltam, én nem az Activity-n BELÜL szeretném megtudni, hogy eltűnt, hanem KÍVÜLRŐL szeretném látni, hogy most már eltűnt/újraindult. Csak olyan ötleteim vannak, hogy megnézem a futó task-ok között stb., de nincs erre valami fejlettebb fejlesztői megoldás?
Pl. az onActivityResult más módon (az on...-ok között más sorrendben) kerül meghívásra a két esetben; és szerettem volna kicsit körüljárni, hogy mi történik. De csak nagyon körülményes megoldásokat találtam. -
WonderCSabo
félisten
1. Ha már kilőtte az Activityt, akkor vagy az egész processzt, akkor nyilván már mindegy. A kilövés előtt lefutnak metódusok, pl. az Activity onStop, onDestroy fv-e, illetve az Application onTerminate fv-e.
Ha még nem lövi ki, de már érzi, hogy kevés a memória, akkor az onLowMemory, illetve az onTrimMemory meghívódhat. Nézd meg az Activity és az Application életciklus doksiban, hogy pontosabban mikor is hívódnak meg ezek. -
thon73
tag
Sziasztok!
Tudja valaki:
1. hogyan lehet arról tudomást szerezni, hogy a rendszer (pl. memóriaigény miatt) kilőtte a hátterben álló programot/activity-t?
2. hogyan lehet ezt kikényszeríteni; vagyis, h. a rendszer lője ki a programot, mintha csak további erőforrásra lenne igénye? (A TaskKiller ugyanúgy csinálja?)
Mindkettő kizárólag teszteléshez kellene, tehát root, eclipse-es pc kapcsolat, stb. nem probléma. Köszönöm! -
WonderCSabo
félisten
válasz
trisztan94
#1021
üzenetére
Belemásolod a .jar fájlt a libs mappába. A forráskódot tartalmazó másik jart semmiképpen ne másold be közvetlenül a lib mappába, mert ekkor az APK belerakja feleslegesen. Be lehet csatolni azért a forrást, de picit szarakodni kell.
-
trisztan94
őstag
Lehet megnézem majd ezután a projekt után, köszi

Más:
A universal tween engine-t szeretném belerakni utólag a libgdx-es projektembe. Ugye ez az, amit a setup ui felajánl a projekt létrehozásakor egy checkbox formájában. (csak akkor úgy gondoltam, hogy ez nekem nem kell)
Letöltöttem a két .jar fájlt az oldalukról . Hogy tudom most ezt hozzáadni a projektemhez?

-
fatal`
titán
válasz
trisztan94
#1018
üzenetére
2D-hez szerintem jobb az AndEngine, igaz, a LibGDX gyorsabb, de sokkal több szop*ssal jár.
-
PandaMonium
őstag
válasz
trisztan94
#1018
üzenetére
Sajnos linkelni nem lehet mert valami nagyon hülye javascriptes módon van megoldva az oldaluk de így tudod megnézni, hogy mivel tud többet a Unity Pro mint a free verziója:
Felmész a Unity oldalára, jobb felső sarokban "Buy", itt pedig a Unity Pro résznél "Compare". Szerintem amúgy jobban jársz ha LibGDX-et használsz, sokkal szabadabban tudsz dolgozni minden korlát nélkül, ráadásul nagyon sokat tudnál tanulni belőle.
-
trisztan94
őstag
Hát akkor már inkább libgdx
Igaz, AndEngine-nek sosem néztem utána, de sokkal "mature"-ebbnek néz ki a libgdx. Meg azért ott van dokumentáció.Más:
Lehet rá tudom venni magam és az ügyfelem, hogy átlálljunk unity3d-re. A free version miben korlátoz? Nem kellenek nekem bele unity-t reklámozó dolgok, tudjam deploy-olni droidra, stbstb.. Vagy ehhez mindenképp a pro kell? (arra meg nincs keret)
-
RexpecT
addikt
Van egy Activity amiből indítok egy másik Activityt, úgy hogy az nem jelenik meg a képernyőn(android:theme="@android:style/Theme.NoDisplay").
Viszont mikor elindítom a másik Activityt és megnyomom a vissza gombot akkor kifagy az alkalmazás.
Hiába írom fel az onBackPressed() metódust, ugyanúgy kifagy
-
fatal`
titán
válasz
trisztan94
#1013
üzenetére
AndEngine is opensource, csak doksi nemnagyon van, inkább csak példakódok meg a fórum. Viszont 2D only.
-
caindwan
aktív tag
válasz
PandaMonium
#1011
üzenetére
köszi, szerintem is tutorialok lesznek az elején, na meg van pár ötlet mit lehetne alkotni, aztán remélem marketen fog kikötni

-
PandaMonium
őstag
válasz
caindwan
#1010
üzenetére
Igen, ez minden féle platformon való játékok készítésére remek eszköz. Az ingyenes verzióban van pár korlátozás, de igazából semmi olyan ami meggátolna a játékfejlesztésben, a hiányzó feature-ök nagyrészét pedig ha kicsit belejössz letudod majd magadnak is programozni. Töltsd le és keress Youtube-on tutorial videókat hozzá, nagyon sok van, elég könnyen tanulható.

-
caindwan
aktív tag
válasz
PandaMonium
#1008
üzenetére
köszönet! Saját, fuhh
az talán még nem igazán menne, még azt sem tudom, hogy kellene egy ilyennek kinéznie 
-
caindwan
aktív tag
tudom, hogy nem rég felmerült a kérdés, de valahogy sehogy se megy ez.. Grafikus fejlesztő programot keresek játékokra, lehetőleg ami windowson fut. Eddig mind csak linuxra volt.
-
Karma
félisten
válasz
negyedes
#1004
üzenetére
Amikor rakod össze a WHERE feltételt, az egyenlőségjel jobb oldalát aposztrófok közé kell tenni. Ez okozza az egészet.
Pl. az idézett querynél: KEY_SENDER + "=" + sender helyett KEY_SENDER + "= '" + sender + "'".
Vagy az egyébként jóval bonyolultabb SQLiteProgram osztályokkal meg tudod oldani, amit hunfatal mond.
-
negyedes
addikt
igen ez volt a hiba. koszonom, de mar is egy ujat dobott:
1: sqlite returned: error code = 1, msg = near "@yahoo": syntax error, db=/data/data/com.example.firstmail/databases/Emailapp
2: android.database.sqlite.SQLiteException: near "@yahoo": syntax error: , while compiling: SELECT DISTINCT sender, date, subject, text FROM InboxEmails WHERE sender=tesztkuldo@yahoo.com GROUP BY date=2013.07.16 16:18pm HAVING subject=Tema
-
Karma
félisten
válasz
negyedes
#1002
üzenetére
Eggyel több nullt írtál a szükségesnél, így szerintem a CancellationSignallal végződő, 16-os API-t hívod meg véletlen.
Megszámoltam, tényleg. (10 paraméter vs. 7-9).
-
negyedes
addikt
Cursor mCursor = mDb.query(true, SQLITE_TABLE_INBOX, new String[] {
KEY_SENDER, KEY_DATE, KEY_SUBJECT, KEY_TEXT }, KEY_SENDER + "=" + sender, null, KEY_DATE + "=" + date, KEY_SUBJECT + "=" + subject,
null, null, null);erre a sorra ezt a hibat dobja az app-om
01-24 08:03:16.676: E/AndroidRuntime(6136): java.lang.NoSuchMethodError: android.database.sqlite.SQLiteDatabase.query
ez mit jelent? nem elegendo az api level?
-
caindwan
aktív tag
Sikerült megoldani, a probléma abban volt hogy a value-s dolgot az onClick metódus alatt kellett megoldani és nem ott ahol volt

Új hozzászólás Aktív témák
- GYÖNYÖRŰ iPhone 13 mini 128GB Blue -1 ÉV GARANCIA - Kártyafüggetlen, MS3293
- BESZÁMÍTÁS! ASRock B650M R7 7700 32GB DDR5 1TB SSD RX 7900 XTX 24GB Fractal Design Pop Air RGB 850W
- Eladó Samsung A12 4/64GB / 12 hó jótállás / ÚJ KIJELZŐ
- ERAZER Cooling Kit V2 Vízhűtés - MD 62737 Beast 16 X1 gamer laptophoz
- Dell Inspiron 3511 /i7-1165G7/MX350/16GB/512GB M.2/WIN11/Újszerű akku/Játékra is! Számlával!
Állásajánlatok
Cég: BroadBit Hungary Kft.
Város: Budakeszi
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest

)
)

(libgdx box2d dokumentációja sajnos nagyon sok helyen "coming soon"
)





Amit te inbox_listnek neveztél, az a megnyomott elem... 




