Switchen des ViewFlippers durch Sliden über den Touchscreen ??

G

gurkenprinz

Neues Mitglied
0
Hallo Leute !!

Ich habe eigentlich das exakt selbe Problem wie dieser User.

Problem with ViewFlipper and TouchEvent - Android Forums

Leider hat ihm niemand geantwortet ;)

Ich möchte auch dass sich mein ViewFlipper ähnlich verhält wie der Homescreen.
Allerdings habe auch ich das Problem, dass der Flipper bei Berührungen immer nur das nächste Layout anzeigt, sprich von rechts nach links slided.

Code:
public boolean onTouch(View v, MotionEvent event) 
            {
                
                float startX = 0;
                if(event.getAction()==MotionEvent.ACTION_DOWN)
                {
                    startX=event.getRawX();
                }
                if(event.getAction()==MotionEvent.ACTION_UP)
                {
                    
                    float endX = event.getX();
                    if(endX<startX)
                    {
                        vf.setAnimation(AnimationUtils.loadAnimation(v.getContext(), R.anim.slide_right));
                        vf.showPrevious();
                    }
                    if(endX>startX)
                    {
                        vf.setAnimation(AnimationUtils.loadAnimation(v.getContext(), R.anim.slide_left));
                        vf.showNext();
                        
                    }
                }
return true;
Ich habs auch schon wie hier:

Making a ViewFlipper like the Home Screen using MotionEvent.ACTION_MOVE - Stack Overflow

mit einer switch anweisung gemacht ... hab aber das selbe Problem!

Hat jemand eine Idee was ich falsch gemacht habe ??

lg gurkenprinz
 
Also ich habe das mit einem GestureDetector gelöst, der auf SlideEvents hört (SimpleGestureDetector). Und dann setze ich die jeweiligen Ein- bzw. Austrittsanimationen.
 
gurkenprinz schrieb:
Hallo Leute !!

Ich habe eigentlich das exakt selbe Problem wie dieser User.

Problem with ViewFlipper and TouchEvent - Android Forums

Leider hat ihm niemand geantwortet ;)

Ich möchte auch dass sich mein ViewFlipper ähnlich verhält wie der Homescreen.
Allerdings habe auch ich das Problem, dass der Flipper bei Berührungen immer nur das nächste Layout anzeigt, sprich von rechts nach links slided.

Code:
public boolean onTouch(View v, MotionEvent event) 
            {
                
                float startX = 0;
                if(event.getAction()==MotionEvent.ACTION_DOWN)
                {
                    startX=event.getRawX();
                }
                if(event.getAction()==MotionEvent.ACTION_UP)
                {
                    
                    float endX = event.getX();
                    if(endX<startX)
                    {
                        vf.setAnimation(AnimationUtils.loadAnimation(v.getContext(), R.anim.slide_right));
                        vf.showPrevious();
                    }
                    if(endX>startX)
                    {
                        vf.setAnimation(AnimationUtils.loadAnimation(v.getContext(), R.anim.slide_left));
                        vf.showNext();
                        
                    }
                }
return true;
Ich habs auch schon wie hier:

Making a ViewFlipper like the Home Screen using MotionEvent.ACTION_MOVE - Stack Overflow

mit einer switch anweisung gemacht ... hab aber das selbe Problem!

Hat jemand eine Idee was ich falsch gemacht habe ??

lg gurkenprinz

Also ich hab mir den Link jetzt zwar nicht angeschaut, jedoch solltest du dir bewusst sein, dass immer entweder ACTION_DOWN oder ACTION_UP aufgerufen wird.
Somit ist startX immer 0, wenn die if Anweisung mit der ACTION_UP aufgerufen wird, d.h. nach links sliden fällt schonmal flach.
(Ich vermute mal Eclipse wollte dass du startX ausserhalb der if Anweisung initialisierst?^^)
Auf jeden Fall musst du startX in einer globalen Variable speichern...

Edit: ich sehe grad, im ersten Link wurde es so wie bei dir in lokalen Variablen gespeichert, der zweite Link jedoch benutzt für den Startwert eine globale.
 
Zuletzt bearbeitet:
Danke für die Hilfe !!

Habs jetzt startX als globale Variable deklariert und das ganze wieder mit der switch anweisung implementiert und jetzt funktionierts wunderbar !!

Danke !
lg gurkenprinz
 

Ähnliche Themen

R
Antworten
2
Aufrufe
698
swa00
swa00
S
Antworten
4
Aufrufe
4.377
mblaster4711
mblaster4711
L
Antworten
5
Aufrufe
814
swa00
swa00
Zurück
Oben Unten