ViewFlipper上已经实现了动态添加页数,并且每页动态放入TextView。问题:如何依据手在TextView上滑动的距离来判断是要跳转Activity来查看TextView上的内容,还是要将ViewFlipper翻页。现在就差这个判断了,我打算用滑动的距离的长短来判断,总是做不出来,目前的代码是这样的,现在就差红色部分的相结合,并且TextView监听器的位置不知道怎么放,我总是只能给最后一个添加进ViewFlipper的TextView添加监听,但之前添加的好像就失效了,可能是被覆盖了监听。。package com.test.sammie;import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.Log;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.LinearLayout.LayoutParams;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ViewFlipper;import com.or.service.MessageServer;
public class DialogActivity extends Activity implements OnClickListener,OnGestureListener,OnTouchListener {
private Button btnCencel=null;
    private TextView tv=null;
    private Button btnCheck=null;
    private ViewFlipper flipper; 
    private GestureDetector detector;
    private TextView showPageNow=null;
    private static int pageNow=1;
    private static int total=0;    private float down,up,cha;    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.dialog);
        btnCencel=(Button)this.findViewById(R.id.btncencel);
        btnCheck=(Button)this.findViewById(R.id.btncheck);
        flipper=(ViewFlipper)this.findViewById(R.id.ViewFlipper);
        showPageNow=(TextView)this.findViewById(R.id.pageNow);
        
        detector = new GestureDetector(this);
        
        
        flipper.setOnClickListener(this);
        btnCencel.setOnClickListener(this);
        btnCheck.setOnClickListener(this);
        
        IntentFilter filter = new IntentFilter();
        filter.addAction("Broadcast one!");
        registerReceiver(mReceiver, filter);
        
        
        
        flipper.setInAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_in));  
        flipper.setOutAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_out));
        
        init();
        
    }
    
    
    private void init(){
    
     String openOne=this.getIntent().getStringExtra("text");
     if(openOne!=null){
     tv=(TextView)addTextByText(openOne);
     tv.setTag(openOne);
     flipper.addView(tv);      total++;
     showPageNow.setText(1+"/"+total);
     }
    }
    
@Override
public void onClick(View v) {
if(v==btnCencel){
Intent intent_close=new Intent();
intent_close.setAction("com.or.sammie");
stopService(intent_close);
MessageServer messageServer=new MessageServer();
messageServer.setI(0);//为了重启次Activity
Intent intent_start=new Intent();
intent_start.setAction("com.or.sammie");
startService(intent_close);
pageNow=1;
total=0;
this.finish();
}
if(v==btnCheck){
Intent intent=new Intent(DialogActivity.this,Preview.class);
Bundle bundle=new Bundle();
bundle.putString("text", flipper.getCurrentView().getTag().toString());
intent.putExtras(bundle);
this.startActivity(intent);
}
if(v.getId()==flipper.getId()){
if(Math.abs(up-down)<50){
Intent intent=new Intent(DialogActivity.this,Preview.class);
Bundle bundle=new Bundle();
bundle.putString("text", flipper.getCurrentView().getTag().toString());
intent.putExtras(bundle);
this.startActivity(intent);
}
}

}
@Override
protected void onNewIntent(Intent intent) {
setIntent(intent);
super.onNewIntent(intent);
} protected BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
            if(action.equals("Broadcast one!")){
             Bundle bundle = intent.getExtras();
                if(bundle!=null){
                    String text=bundle.getString("text");
                    Toast.makeText(context, "新消息!", 0).show(); 
                    tv=(TextView)addTextByText(text);
                    tv.setTag(text);
                    
                    flipper.addView(tv);
                    
                    total++;
                    showPageNow.setText(pageNow+"/"+total);
                }
            }
}
};
@Override
protected void onDestroy(){
this.unregisterReceiver(mReceiver);
super.onDestroy();
}

//--------------------------滑动---------------------------------
public View addTextByText(String text){
        TextView tv = new TextView(this);
        tv.setText(text);
        tv.setGravity(1);
        tv.setTextSize(18);
        Drawable dr = this.getResources().getDrawable(android.R.drawable.dialog_frame); 
        tv.setBackgroundDrawable(dr);
        tv.getBackground().setAlpha(100);
        LayoutParams layoutParams = new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT);
        tv.setLayoutParams(layoutParams);
        tv.setGravity(Gravity.LEFT);
        return tv;
    }

@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
if(e1.getX()-e2.getX()>120) {
this.flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_in));    
this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_out));    
this.flipper.showNext();
if(pageNow==flipper.getChildCount()){
pageNow=1;
}else{
pageNow++;
}
showPageNow.setText(pageNow+"/"+total);
return true;
}else if(e2.getX()-e1.getX()>-120) {
this.flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_in));    
this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_out));    
this.flipper.showPrevious();
if(pageNow==1){
pageNow=flipper.getChildCount();
}else{
pageNow--;
}
showPageNow.setText(pageNow+"/"+total);
return true;
}
return false;
}
@Override
public boolean onTouch(View v, MotionEvent event) {
if(v==tv){
if (event.getAction() == MotionEvent.ACTION_DOWN) {
down=event.getX();
Log.i("down", down+"");
        } else if (event.getAction() == MotionEvent.ACTION_MOVE) {
            
        } else if (event.getAction() == MotionEvent.ACTION_UP) {
         up=event.getX();
         Log.i("up", up+"");
}


}

return true;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return this.detector.onTouchEvent(event);
};
@Override
public boolean onDown(MotionEvent e) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onShowPress(MotionEvent e) {
// TODO Auto-generated method stub

}
@Override
public boolean onSingleTapUp(MotionEvent e) {
return false;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
// TODO Auto-generated method stub
return false;
}
@Override
public void onLongPress(MotionEvent e) {
// TODO Auto-generated method stub

}

}