2012-07-18 57 views
0

我在viewSwitcher中有2個佈局,當我滑動時需要更改。viewSwitcher中onFling的工作方式

package slide.trys.one; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.GestureDetector; 
import android.view.GestureDetector.OnGestureListener; 
import android.view.MotionEvent; 
import android.widget.ViewSwitcher; 

public class SlideActivity extends Activity implements OnGestureListener { 

private ViewSwitcher switcher; 
private GestureDetector gesturedetector = null; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    gesturedetector = new GestureDetector(this, this); 

} 

@Override 
public boolean onTouchEvent(MotionEvent event) { 
     return gesturedetector.onTouchEvent(event); 
} 


int SWIPE_MIN_VELOCITY = 100; 
int SWIPE_MIN_DISTANCE = 100; 

public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,float velocityY) { 

    float ev1X = e1.getX(); 
    float ev2X = e2.getX(); 

    final float xdistance = Math.abs(ev1X - ev2X); 

    final float xvelocity = Math.abs(velocityX); 

    if((xvelocity > SWIPE_MIN_VELOCITY) && (xdistance > SWIPE_MIN_DISTANCE)) 
    { 
     if(ev1X > ev2X) 
     { 
      switcher.showNext(); //Error in this part 
     } 
     else 
     { 
      switcher.showPrevious(); //Error in this part 
     } 
    } 

    return false; 
} 

public void onLongPress(MotionEvent e) { 

} 

public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,float distanceY) { 
    return false; 
} 

public void onShowPress(MotionEvent e) { 

} 

public boolean onSingleTapUp(MotionEvent e) { 
    return false; 
} 

public boolean onDown(MotionEvent e) { 
    return false; 
} 

} 

我是java和Android的新手。請幫助我,我在哪裏做錯了? 我收到錯誤switcher.showNext()switcher.showPrevious()

請幫忙。我有的例子是使用android 4.0.3,但我需要在2.1上工作。我不知道如何解決這個問題。

viewSwitcher會在Android 2.1上運行嗎?

我的XML文件。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

<ViewSwitcher 
    android:id="@+id/viewSwitcher" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:inAnimation="@anim/in_animation" 
    android:outAnimation="@anim/out_animation" > 

    <RelativeLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" > 

     <ImageView 
      android:id="@+id/imageView2" 
      android:contentDescription="@string/app_name" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/footer" /> 

    </RelativeLayout> 

    <RelativeLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" > 

     <ImageView 
      android:id="@+id/imageView1" 
      android:contentDescription="@string/app_name" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/blue_header" /> 

    </RelativeLayout>   

    </ViewSwitcher> 

</LinearLayout> 
+0

你必須在這裏發表您的佈局,以便別人找到你的錯誤,也許是在XML – XMight 2012-07-18 09:10:31

回答

0

使用ViewFlipper更好地切換佈局。

首先,瞭解ViewFlipper和ViewSwitcher的區別。 此外,對於2.1,在ViewFlipper的情況下,有一個bug存在(最高爲Android 2.3.4),解決辦法是在這裏:

http://daniel-codes.blogspot.com/2010/05/viewflipper-receiver-not-registered.html

所以,你延長ViewFlipper並做解決方法該bug,並在XML您訪問CustomViewFlipper這樣的:

<com.mypackage.MyViewFlipper 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/news_layout_flipper" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 
    <LinearLayout 
     android:id="@+id/first_to_show"> 
    </LinearLayout> 
    <LinearLayout 
     android:id="@+id/second_to_show"> 
    </LinearLayout> 
</com.mypackage.MyViewFlipper> 
+0

感謝您的答覆。 我什麼都沒做,但現在有效。但我正面臨另一個問題。當我單獨使用它時,此輕掃功能正常工作。但是當我在scrollView中實現它時,它不起作用,有什麼幫助? – 2012-07-19 12:41:49

+0

這是因爲scrollView自身檢測手勢。它不會像你期望的那樣工作。不要這樣做,修改你的架構或你想做的事情。通常情況下,您可以在滾動視圖上方放置一個圖層,並在其上檢測滑動並決定是否通過滾動視圖。 – XMight 2012-07-19 14:06:10

+0

你可否再解釋一下。因爲我是新手。所以。 你是什麼意思的圖層上面的scrollView? – 2012-07-20 04:51:34