Autore Topic: Animazione scorrimento activity in activitygroup  (Letto 2325 volte)

Offline djdedo

  • Utente normale
  • ***
  • Post: 209
  • Respect: +15
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
Animazione scorrimento activity in activitygroup
« il: 16 Marzo 2012, 12:18:06 CET »
0
Ciao ragazzi sono alle prime armi con le activitygroup. Le ho dovute utilizzare perchè la mia app presenta un layout con i tabhost e in una activity del tabhost devo richiamarne altre quindi cercando un pò in rete ho ripiegato sull'uso delle activitygroup e le ho implementate nella mia app seguendo questo tutorial trovato in rete
TICE: Experience - Multiple Android Activities in a TabActivity
Funziona tutto solo che vorrei visualizzare una animazione al passaggio da una activity ad un altra ma non sto riuscendo a trovare un modo

Cercando di informarmi un pò ho notato che l'uso delle activitygroup è deprecato e bisognerebbe usare i fragment.
Chi ha delucidazioni in merito? Non sto davvero riuscendo a capire come agire
« Ultima modifica: 16 Marzo 2012, 12:44:00 CET da djdedo »

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Animazione scorrimento activity in activitygroup
« Risposta #1 il: 16 Marzo 2012, 17:39:12 CET »
0
Ciao,
non ho idea di come risolvere il tuo quesito in particolare però anche io rinnovo il consiglio di utilizzare i fragment. Dai un occhio a questo esempio:

https://github.com/JakeWharton/ActionBarSherlock/blob/master/samples/fragments/src/com/actionbarsherlock/sample/fragments/FragmentTabs.java

Tu ho indirizzato ad ActionbarSherlock 4.0 per garantire la compatibilità con le versioni inferiori ad ICS.


Offline djdedo

  • Utente normale
  • ***
  • Post: 209
  • Respect: +15
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
Re:Animazione scorrimento activity in activitygroup
« Risposta #2 il: 16 Marzo 2012, 17:40:51 CET »
0
Ciao grazie della risposta. Sto giusto studiando il tutorial di questo sito sui fragment, appena scrivo qualcosa (spero di funzionante) mi faccio sentire :D

Offline djdedo

  • Utente normale
  • ***
  • Post: 209
  • Respect: +15
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
Re:Animazione scorrimento activity in activitygroup
« Risposta #3 il: 17 Marzo 2012, 11:34:27 CET »
0
Rieccomi qua, mi sono studiato il tutorial di questo sito "introduzione ai fragment" e il codice da te indicatomi.
Sono riuscito ad avere qualcosa di funzionante ma ritorno ad avere il problema che al richiamo di un nuovo fragment il mio tabhost scompare.
Il discorso è questo in sintesi, io ho un tabhost con 5 tab ed in una di queste tab ho una sorta di menu formato da una lista che richiama altre activity. Ovviamente io voglio che al richiamo di queste altre activity comunque queste "rimangano" nel tab e non si sovrappongono e con l'activitygroup ci ero anche riuscito.
Ho modificato tutto utilizzando i fragment e sono riuscito a farmi ritornare questo menu nel tab ma al richiamo della nuova activity (che estende comunque fragmentactivity) questa si sovrappone al tabhost. Sicuramente è perchè la richiamo mediante creazione di una nuova intent ma quello che vorrei è che il nuovo fragment si sovrapponesse al fragment del menu sempre restando dentro il tabhost.
Serve che posto un pò di codice?

Offline djdedo

  • Utente normale
  • ***
  • Post: 209
  • Respect: +15
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
Re:Animazione scorrimento activity in activitygroup
« Risposta #4 il: 17 Marzo 2012, 13:35:22 CET »
0
Brillantemente risolto utilizzando i fragmentransaction dove sostituisco un fragment ad un altro in questo modo
Codice (Java): [Seleziona]
Fragment newFrag= new MiaClasseEstendeFragment();
FragmentTransaction t = getFragmentManager().beginTransaction();
t.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left);
t.replace(R.id.fragment_corrente_da_sostituire, newFrag);
t.addToBackStack("newFrag");
t.commit();

Offline hide8

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Windows 7
Re:Animazione scorrimento activity in activitygroup
« Risposta #5 il: 04 Luglio 2012, 16:36:30 CEST »
0
Brillantemente risolto utilizzando i fragmentransaction dove sostituisco un fragment ad un altro in questo modo
Codice (Java): [Seleziona]
Fragment newFrag= new MiaClasseEstendeFragment();
FragmentTransaction t = getFragmentManager().beginTransaction();
t.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left);
t.replace(R.id.fragment_corrente_da_sostituire, newFrag);
t.addToBackStack("newFrag");
t.commit();

qualcuno sa perchè se utilizzo le animazioni R.anim.slide_in_right ecc  mi restituisce questo errore:
E/AndroidRuntime(1884): Caused by: java.lang.RuntimeException: Unknown animator name: translate

non sono riuscito a capire il motivo.
grazie

Offline djdedo

  • Utente normale
  • ***
  • Post: 209
  • Respect: +15
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
Re:Animazione scorrimento activity in activitygroup
« Risposta #6 il: 04 Luglio 2012, 16:40:43 CEST »
0
Il motivo è semplice, quelle animazioni non sono di default ma le ho dovute scrivere (ho trovato il codice sulla rete). L'effetto di animazione default di android è esattamente il contrario di come lo volevo io.
Queste sono le animazioni da mettere nella cartella anim in res del progetto android


slide_in_right.xml
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<!--
/* //device/apps/common/res/anim/slide_in_right.xml
**
** Copyright 2007, The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
**     http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/
-->


<set xmlns:android="http://schemas.android.com/apk/res/android">
   <translate android:fromXDelta="50%p" android:toXDelta="0"
           android:duration="@android:integer/config_mediumAnimTime"/>
   <alpha android:fromAlpha="0.0" android:toAlpha="1.0"
           android:duration="@android:integer/config_mediumAnimTime" />
</set>


slide_out_left.xml
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<!--
/* //device/apps/common/res/anim/slide_out_left.xml
**
** Copyright 2007, The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
**     http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/
-->


<set xmlns:android="http://schemas.android.com/apk/res/android">
   <translate android:fromXDelta="0" android:toXDelta="-50%p"
           android:duration="@android:integer/config_mediumAnimTime"/>
   <alpha android:fromAlpha="1.0" android:toAlpha="0.0"
           android:duration="@android:integer/config_mediumAnimTime" />
</set>

Offline hide8

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Windows 7
Re:Animazione scorrimento activity in activitygroup
« Risposta #7 il: 04 Luglio 2012, 16:59:41 CEST »
0
io utilizzo esattamente quei due file che dici tu, anch'io li ho trovati in rete e li ho copiati in res/anim
Questo è il LogCat completo:
Codice (XML): [Seleziona]
07-04 14:55:31.109: E/AndroidRuntime(1946): FATAL EXCEPTION: main
07-04 14:55:31.109: E/AndroidRuntime(1946): java.lang.RuntimeException: Unable to start activity ComponentInfo{app.test.testing/app.test.testing.HomeTab}: java.lang.RuntimeException: Unknown animator name: translate
07-04 14:55:31.109: E/AndroidRuntime(1946):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
07-04 14:55:31.109: E/AndroidRuntime(1946):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
07-04 14:55:31.109: E/AndroidRuntime(1946):     at android.app.ActivityThread.access$600(ActivityThread.java:123)
07-04 14:55:31.109: E/AndroidRuntime(1946):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
07-04 14:55:31.109: E/AndroidRuntime(1946):     at android.os.Handler.dispatchMessage(Handler.java:99)
07-04 14:55:31.109: E/AndroidRuntime(1946):     at android.os.Looper.loop(Looper.java:137)
07-04 14:55:31.109: E/AndroidRuntime(1946):     at android.app.ActivityThread.main(ActivityThread.java:4424)
07-04 14:55:31.109: E/AndroidRuntime(1946):     at java.lang.reflect.Method.invokeNative(Native Method)
07-04 14:55:31.109: E/AndroidRuntime(1946):     at java.lang.reflect.Method.invoke(Method.java:511)
07-04 14:55:31.109: E/AndroidRuntime(1946):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
07-04 14:55:31.109: E/AndroidRuntime(1946):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
07-04 14:55:31.109: E/AndroidRuntime(1946):     at dalvik.system.NativeStart.main(Native Method)
07-04 14:55:31.109: E/AndroidRuntime(1946): Caused by: java.lang.RuntimeException: Unknown animator name: translate
07-04 14:55:31.109: E/AndroidRuntime(1946):     at android.animation.AnimatorInflater.createAnimatorFromXml(AnimatorInflater.java:129)
07-04 14:55:31.109: E/AndroidRuntime(1946):     at android.animation.AnimatorInflater.createAnimatorFromXml(AnimatorInflater.java:126)
07-04 14:55:31.109: E/AndroidRuntime(1946):     at android.animation.AnimatorInflater.createAnimatorFromXml(AnimatorInflater.java:93)
07-04 14:55:31.109: E/AndroidRuntime(1946):     at android.animation.AnimatorInflater.loadAnimator(AnimatorInflater.java:72)
07-04 14:55:31.109: E/AndroidRuntime(1946):     at android.app.FragmentManagerImpl.loadAnimator(FragmentManager.java:687)
07-04 14:55:31.109: E/AndroidRuntime(1946):     at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:833)
07-04 14:55:31.109: E/AndroidRuntime(1946):     at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1032)
07-04 14:55:31.109: E/AndroidRuntime(1946):     at android.app.BackStackRecord.run(BackStackRecord.java:622)
07-04 14:55:31.109: E/AndroidRuntime(1946):     at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1382)
07-04 14:55:31.109: E/AndroidRuntime(1946):     at android.app.Activity.performStart(Activity.java:4474)
07-04 14:55:31.109: E/AndroidRuntime(1946):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1929)
07-04 14:55:31.109: E/AndroidRuntime(1946):     ... 11 more
« Ultima modifica: 04 Luglio 2012, 17:03:57 CEST da hide8 »

Offline djdedo

  • Utente normale
  • ***
  • Post: 209
  • Respect: +15
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
Re:Animazione scorrimento activity in activitygroup
« Risposta #8 il: 04 Luglio 2012, 17:04:02 CEST »
0
Sicuro che non sbagli ad importarle? Posta un pò di codice altrimenti non si capisce

Offline hide8

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Windows 7
Re:Animazione scorrimento activity in activitygroup
« Risposta #9 il: 04 Luglio 2012, 17:11:26 CEST »
0
a sto punto sicuramente sbaglio ad importarle....il codice è identico al tuo e se richiamo un'altra animazione di default funziona correttamente
mi puoi spiegare come le hai importate tu per favore?

Offline djdedo

  • Utente normale
  • ***
  • Post: 209
  • Respect: +15
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
Re:Animazione scorrimento activity in activitygroup
« Risposta #10 il: 04 Luglio 2012, 17:13:06 CEST »
0
Controlla se negli import non hai android.R.anim ma hai il tuo package. Se riesci ad utilizzare quelle di default stai utilizzando il package di android e non quello del tuo progetto quindi non le vede per forza

Offline hide8

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Windows 7
Re:Animazione scorrimento activity in activitygroup
« Risposta #11 il: 04 Luglio 2012, 17:32:11 CEST »
0
scusa ma non riesco a capire, mi puoi spiegare cosa dovrei fare con quei due file per importarli correttamente nel progetto.
tra l'altro mi sono accorto che siccome sto usando Android 4.0 nella libreria in res.anim sono già presenti quei due file, dovrei poter richiamare direttamente quelli quindi

Offline djdedo

  • Utente normale
  • ***
  • Post: 209
  • Respect: +15
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
Re:Animazione scorrimento activity in activitygroup
« Risposta #12 il: 04 Luglio 2012, 17:34:18 CEST »
0
devi importare il tuo R quindi tra gli import devi trovarti questo
Codice (Java): [Seleziona]
import tuo.package.R;

Offline hide8

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S2
  • Sistema operativo:
    Windows 7
Re:Animazione scorrimento activity in activitygroup
« Risposta #13 il: 04 Luglio 2012, 17:41:36 CEST »
0
quello lo faccio, pensandoci bene non mi troverebbe neanche il file se non l'avessi importato correttamente.
invece l'errore me lo da sul tag translate proprio dell'xml, quindi i file con le animazioni li vede

Offline djdedo

  • Utente normale
  • ***
  • Post: 209
  • Respect: +15
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
Re:Animazione scorrimento activity in activitygroup
« Risposta #14 il: 04 Luglio 2012, 17:47:47 CEST »
0
Sinceramente non so proprio come aiutarti, prova a seguire questa discussione dove uno si ritrova col tuo stesso errore


http://stackoverflow.com/questions/4817900/android-fragments-and-animation