2010-06-13 64 views
0

滚动型我有一个脚蹼:机器人:在脚蹼

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout android:id="@+id/ParentLayout" 
    xmlns:android="http://schemas.android.com/apk/res/android" style="@style/MainLayout" > 
      <LinearLayout android:id="@+id/FlipperLayout" style="@style/FlipperLayout"> 
       <ViewFlipper android:id="@+id/viewflipper" style="@style/ViewFlipper"> 
        <!--adding views to ViewFlipper--> 
        <include layout="@layout/home1" android:layout_gravity="center_horizontal" /> 
        <include layout="@layout/home2" android:layout_gravity="center_horizontal" /> 
       </ViewFlipper> 
      </LinearLayout> 
</LinearLayout> 

第一布局,和home1,由滚动视图的。 我应该如何区分翻转手势和滚动? 目前:

  • 如果我删除滚动视图,我可以在
  • 刷卡如果我添加滚动视图,我只能滚动。

我看到一个建议,我应该重写onInterceptTouchEvent(MotionEvent),但我不知道如何做到这一点。我的代码,在这一刻,看起来是这样的:

public class HomeActivity extends Activity { 
-- declares 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    -- declares & preliminary actions 

    LinearLayout layout = (LinearLayout) findViewById(R.id.ParentLayout); 
    layout.setOnTouchListener(new OnTouchListener() { 
     public boolean onTouch(View v, MotionEvent event) { 
      if (gestureDetector.onTouchEvent(event)) { 
       return true; 
      } 
      return false; 
     }}); 

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    gestureDetector.onTouchEvent(event); 
    return true; 
    } 
class MyGestureDetector extends SimpleOnGestureListener { 
    @Override 
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 
    // http://www.codeshogun.com/blog/2009/04/16/how-to-implement-swipe-action-in-android/ 
    } 
} 

}

可有人请指导我在正确的方向?

谢谢。

回答

1

查看鳍状肢只显示一次一个视图,如解释here。当开发者想要给用户一个关于如何查看数据(列表,缩略图等)的选择时,它是一种非常有用的开关。因此,你同时不能滚动和扔掉的原因是因为一个视图只滚动,另一个视图只闪烁,一次只打开一个视图。

如果你想让你的显示器既滚动又扔,你将不得不设计一个能够同时兼容所需方法的布局。实现这一目标的第一步就是移除ViewFLipper并使用其他的东西。

希望这有帮助!

+0

谢谢你非常快速的回答。事实上,我正在考虑一种方法来捕捉ParentLayout级别的动作事件(包含脚蹼的动作事件),并在该级别决定该动作是否为水平动作(由脚蹼考虑)或一个垂直的(要传递给滚动视图)。 这就是为什么onInterceptTouchEvent在我看来是正确的。 所以没有办法实现我心中的想法? – Manu 2010-06-13 15:14:42

+0

我想也许我不完全确定你想要达到的目标。 home1和home2是什么,每个手势应该完成什么?你的应用应该做什么? – mtmurdock 2010-06-13 18:33:19

+0

home1和home2布局包含每个图像按钮的数量,每个图像按钮触发一个活动。 home1和home2包含在一个名为home的布局中,该布局托管着鳍状肢。现在:当用户滑动横跨我需要显示下一个家庭布局,这是由鳍状肢完成的。但由于它们有很多图像按钮,当手机处于横向模式时,它们不适合屏幕显示,所以我需要滚动home1布局。 – Manu 2010-06-16 08:13:37

1

基本上,如果你有一个ViewFlipper滚动型,所有你需要做的就是附加onTouchListener的滚动型:

ScrollView scrollView = (ScrollView) findViewById(R.id.scrollView);   
    scrollView.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event){ 
      if (myGestureDetector.onTouchEvent(event)){ 
       return true; 
      } 
      else{ 
       return false; 
      } 
     } 
    }); 
0

我尝试这样做它的工作原理:

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

@Override 
public boolean dispatchTouchEvent(MotionEvent e) 
{ 
    gestureDetector.onTouchEvent(e); 
    return super.dispatchTouchEvent(e); 
}