[Android] Transition na de terugknop

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 18-03 09:33

_Thanatos_

Ja, en kaal

Topicstarter
Ik ben nieuw met android development, maar ik vind transitions behoorlijk basic, dus ik wil dit goed krijgen (en vroeg of laat moet het sowieso goed komen), dus vandaar dat ik er nu al mee kom. Ik heb uitgevonden hoe je een transition kunt definieren tussen twee activities met twee xml-bestandjes en een call naar overridePendingTransition(). Geen problem dusver.

Het probleem is het omgekeerde hiervan: de transition terug naar de vorige activity. Het artikel wat ik hierboven linkt, beschrijft hoe dat moet, maar er zitten twee haken&ogen aan:
1) Het werkt alleen met een activity die start is met startActivityForResult(). In mijn situatie is dat niet logisch, omdat de tweede activity geen resultaat voor de eerste produceert.
2) Het werkt niet voor de terug-knop die linksbovenin in de navigatiebalk verschijnt. Die pakt de default zoom-achtige transition.

Dus, twee concrete vragen:
1) Wat is er anders aan die onscreen terugknop waardoor die een andere transition pakt?
2) Kun je de "terug"-transition niet definieren in de activity die aangeroepen wordt, ipv in de activity die het aanroepen doet, zegmaar?

Wat heb ik al geprobeerd:
1) De overridePendingTransition() in de onOptionsItemSelected override aanroepen, vlak na navigateUpFromSameTask() (don't ask, dit is wat je default krijgt, ik heb het niet verzonnen). Dit werkt wel, maar ik heb geen flauw idee of dit de goeie plek is om de transition te bepalen. Ik had eerder een generieke "back" method ofzo verwacht, maar:
2) De overridePendingTransition() in de onBackPressed en onStop overrides plaatsen helpt geen zak, noch voor de onscreen back button, noch voor de hardware back button.

Punt 1 van wat ik geprobeerd heb, lost trouwens ook niet op dat je verplicht startActivityForResult() moet gebruiken en de terug-transition in de aanroepende activity moet zetten, wat ontzettend aanvoelt als een onlogische plek... Ik bedoel, als activity A bepaalt wat de transition naar activity B moet zijn, dan vind ik dat activity B ook mag bepalen wat de transition terug naar activity A moet zijn. Maar hoe :)

[ Voor 4% gewijzigd door _Thanatos_ op 07-03-2013 01:09 ]

日本!🎌


Acties:
  • 0 Henk 'm!

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 18-03 09:33

_Thanatos_

Ja, en kaal

Topicstarter
Niemand? Transitions zijn toch een standaard iets? Zou m.i. toch niet al te ingewikkeld mogen zijn... Er is vast wel iemand die ooit transitions heeft gemaakt... Toch?

日本!🎌


Acties:
  • 0 Henk 'm!

  • steveman
  • Registratie: Mei 2001
  • Laatst online: 09:53

steveman

Comfortabel ten onder

Ik had eigenlijk nog nooits iets met transitions gedaan, dus ben even aan proberen geslagen :)

http://www.londatiga.net/...ion-animation-on-android/

Bovenstaande werkt bij mij om de transition die volgt na het gebruik van de backbutton te vervangen.

nb net iets anders dan op de site, de daar gedefinieerde transities in de xml's gebruik ik voor de backbutton:

In de class waar ik de backknop gebruik:
Java:
1
2
3
4
5
6
@Override
    public void onBackPressed() {
        super.onBackPressed();
        overridePendingTransition(R.anim.incoming, R.anim.outgoing);
    }
    


En bij het starten werkt ie ook:

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
@Override
    protected void onListItemClick(ListView list, View view, int position, long id){
        super.onListItemClick(list, view, position, id);
        String testName = tests[position];
        try{
            Class<?> clazz = Class.forName("com.badlogic.androidgames." + testName);
            Intent intent = new Intent(this, clazz);
            startActivity(intent);
            overridePendingTransition (R.anim.incoming, R.anim.outgoing);
        } catch (ClassNotFoundException e){
            Toast.makeText(this, "Class not found: " + testName, 1).show();
        }
    }

[ Voor 65% gewijzigd door steveman op 09-03-2013 13:56 ]

"Take the risk of thinking for yourself. Much more happiness, truth, beauty, and wisdom will come to you that way." -Christopher Hitchens | In memoriam? 🏁 ipv kruis!


Acties:
  • 0 Henk 'm!

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 18-03 09:33

_Thanatos_

Ja, en kaal

Topicstarter
Kijk aan!
Maar die knop linksbovenin is ook een back-knop... die reageert niet op onBackPressed(), dus ik verwachtte eigenlijk dat er nog wel een algemener event/method is dat getriggerd wordt door een "terug" (hoe dat ook moge gebeuren)

日本!🎌


Acties:
  • 0 Henk 'm!

  • Jegorex
  • Registratie: April 2004
  • Laatst online: 16-06 18:03
Volgens mij word finish() aangeroepen als een activity word gesloten.
Ik heb nu geen Android SDK bij de hand, dus ik kan niet checken of dat ook gebeurt als je de terug knop gebruikt.

Acties:
  • 0 Henk 'm!

  • steveman
  • Registratie: Mei 2001
  • Laatst online: 09:53

steveman

Comfortabel ten onder

Activity|Android Developers

Standaard voert die inderdaad een finish uit. (Gebeurt dus ook bij de aanroep van super.onBackPressed())

Bij mij zit de back knop (hardwarematig) alleen linksboven wanneer ik m'n telefoon op de kop houd overigens. Een andere back knop kan ik me zo niet indenken (tenzij je die zelf maakt natuurlijk, dan is het een kwestie van dezelfde code in de handler plaatsen)

[ Voor 3% gewijzigd door steveman op 10-03-2013 00:19 ]

"Take the risk of thinking for yourself. Much more happiness, truth, beauty, and wisdom will come to you that way." -Christopher Hitchens | In memoriam? 🏁 ipv kruis!


Acties:
  • 0 Henk 'm!

  • Stukfruit
  • Registratie: Oktober 2007
  • Niet online
Het enige juist antwoord hier is dat je eigenlijk van animaties tussen Activity's af moet blijven. Dat is iets wat wordt geregeld door het OS en niet door de maker van een app. Als iedereen dat zomaar gaat aanpassen wordt het een grote janboel.

Mocht je overigens helemaal geen animaties voor een bepaalde Activity willen en daarom op zoek zijn naar hoe je dat moet overriden, dan kan het ook een stuk simpeler door een flag te zetten op de Intent (zie documentatie) waarmee je de Activity opstart.

Dat zit wel Schnorr.


Acties:
  • 0 Henk 'm!

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 18-03 09:33

_Thanatos_

Ja, en kaal

Topicstarter
Een andere back knop kan ik me zo niet indenken (tenzij je die zelf maakt natuurlijk, dan is het een kwestie van dezelfde code in de handler plaatsen)
Hey, ik ben een beginner, dus ik heb gewoon de quickstarts gevolgd. De tweede activity die ik heb gemaakt, gaf me een back-knop linksbovenin. Ik weet niet of dat goed of slecht of anders of raar is, maar hij staat er nou eenmaal.
Het enige juist antwoord hier is dat je eigenlijk van animaties tussen Activity's af moet blijven. Dat is iets wat wordt geregeld door het OS en niet door de maker van een app.
Dat is niet waar. Het OS is een provider van die animatie-mogelijkheden. Als app-bouwer kun je (moet je kunnen) bepalen wat een geschikte transitie is. Het OS kan niet voor een app bepalen wat de meest logische transitie is.

[ Voor 5% gewijzigd door _Thanatos_ op 11-03-2013 00:24 ]

日本!🎌


Acties:
  • 0 Henk 'm!

  • Stukfruit
  • Registratie: Oktober 2007
  • Niet online
Daarom kan je ze dus uitschakelen.

Dat zit wel Schnorr.


Acties:
  • 0 Henk 'm!

  • steveman
  • Registratie: Mei 2001
  • Laatst online: 09:53

steveman

Comfortabel ten onder

Een aangepaste transition die mooi bij de rest van de look en feel van de app past mag absoluut geen probleem zijn.

@ TS, welke quickstart volg je dan?

"Take the risk of thinking for yourself. Much more happiness, truth, beauty, and wisdom will come to you that way." -Christopher Hitchens | In memoriam? 🏁 ipv kruis!


Acties:
  • 0 Henk 'm!

  • Cor453
  • Registratie: Mei 2011
  • Laatst online: 08-07 22:22
Officieel kun je volgens de Android-achtige human interface guidelines wel sleutelen aan de animaties, maar is het voor de overall feeling van de gebruiker van belang dat dit niet te pas en te onpas gebeurt. Zelfde geldt voor (oke, ander principe) iOS Apps, die hebben ook een vastgestelde mogelijkheid voor fades en transitions.

Je mag dus volgens mij best met animaties rotzooien, ik zou het alleen gewoon door het OS laten doen. Zeker de nieuwere versies (ik doel op Android 4.0 en hoger) doen dat best aardig, al zeg ik het zelf.

Acties:
  • 0 Henk 'm!

  • codex
  • Registratie: Januari 2005
  • Laatst online: 09:28
Cor453 schreef op maandag 11 maart 2013 @ 23:22:
Officieel kun je volgens de Android-achtige human interface guidelines wel sleutelen aan de animaties, maar is het voor de overall feeling van de gebruiker van belang dat dit niet te pas en te onpas gebeurt. Zelfde geldt voor (oke, ander principe) iOS Apps, die hebben ook een vastgestelde mogelijkheid voor fades en transitions.

Je mag dus volgens mij best met animaties rotzooien, ik zou het alleen gewoon door het OS laten doen. Zeker de nieuwere versies (ik doel op Android 4.0 en hoger) doen dat best aardig, al zeg ik het zelf.
Probleem is alleen dat wanneer je een app ontwikkeld je niet alleen met >4.0 te maken krijg. Transities wijken af per versie, als jij het in jouw app uniform wil houden zou je wel met animaties aan de slag moeten. Bovendien zijn sommige transities ronduit lelijk.
Pagina: 1