listview 和 左右滑动冲突

是这样的:基本实现了这个功能,但是呢。这个gesture的响应的滑动只能在ViewFlipper中没有Item的地方滑动,而在有Item内容的地方,根本就不响应。所以其实只有在item上边一小条的地方滑动~~。但是我现在实现的是可以在ViewFlipper所有地方都能响应OnFling()函数,Item只要能响应自身的click就可以了。 如何实现??

我把代码贴出来:
————————————————————

Java code

 

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

package wyf.ytl;

 

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.util.Log;

import android.view.GestureDetector.OnGestureListener;

import android.view.ViewGroup.LayoutParams;

import android.view.animation.AnimationUtils;

import android.view.GestureDetector;

import android.view.Gravity;

import android.view.MotionEvent;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.Gallery;

import android.widget.ImageView;

import android.widget.LinearLayout;

import android.widget.ListView;

import android.widget.TextView;

import android.widget.ViewFlipper;

 

public class Common_Channels extends Activity implements OnGestureListener{

     

    ListView ListView1,ListView2,ListView3;

    //BaseAdapter ba1,ba2,ba3;

    BaseAdapter ba;

    GestureDetector detector;

    ViewFlipper flipper;

    LinearLayout layout;

     

    int [] drawableIds={

            R.drawable.andy, R.drawable.bill, R.drawable.edgar, R.drawable.torvalds,

            R.drawable.turing

    };

    int[] msgIds={ R.string.andy, R.string.bill , R.string.edgar ,R.string.torvalds,

            R.string.turing

    };

     

    @Override

    protected void onCreate(Bundle savedInstanceState) {

         

        super.onCreate(savedInstanceState);

        //flipper = (ViewFlipper) this.findViewById(R.id.ViewFlipper01);

        flipper=new ViewFlipper(this);

        detector = new GestureDetector(this);   

         

        InitListView();

        InitFliper();

         

        layout=new LinearLayout(this);

        layout.addView(flipper);

        setContentView(layout);

    }

    public boolean InitFliper(){

         

        flipper.addView(ListView1);

        flipper.addView(ListView2);

        flipper.addView(ListView3);

        return true;

    }

     

    public boolean InitListView(){

        //BaseAdapter temp_ba=new BaseAdapter() 

        ba=new BaseAdapter(){

            public int getCount() {

                return 5;

            }

            public Object getItem(int position) {

                // TODO Auto-generated method stub

                return null;

            }

            public long getItemId(int position) {

                // TODO Auto-generated method stub

                return 0;

            }

            public View getView(int position, View convertView, ViewGroup parent) {

                LinearLayout ll=new LinearLayout(Common_Channels.this);

                ll.setOrientation(LinearLayout.HORIZONTAL);

                ll.setPadding(5,5,5,5);

                ImageView ii=new ImageView(Common_Channels.this);

                ii.setImageDrawable(getResources().getDrawable(drawableIds[position]));

                ii.setScaleType(ImageView.ScaleType.FIT_XY);

                ii.setLayoutParams(new Gallery.LayoutParams(10098));

                ll.addView(ii);

                TextView tv=new TextView(Common_Channels.this);

                tv.setText(getResources().getText(msgIds[position]));

                tv.setTextSize(24);

                tv.setTextColor(Common_Channels.this.getResources().getColor(R.color.white));

                tv.setPadding(5555);

                tv.setGravity(Gravity.LEFT);

                ll.addView(tv);

                return ll;

            }

        };

        /*  

        ba1=temp_ba;

        ba2=temp_ba;

        ba3=temp_ba;  

        */

        ListView1=new ListView(Common_Channels.this);

        ListView2=new ListView(Common_Channels.this);

        ListView3=new ListView(Common_Channels.this);

        ListView1.setAdapter(ba);

        ListView2.setAdapter(ba);

        ListView3.setAdapter(ba);

        return true;

    }

     

    @Override

    public boolean onTouchEvent(MotionEvent event) {

        // TODO Auto-generated method stub

        Log.i("Fling""Activity onTouchEvent!");

        return this.detector.onTouchEvent(event);

    }

    @Override

    public boolean onDown(MotionEvent e) {

        // TODO Auto-generated method stub

        return false;

    }

    @Override

    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,

            float velocityY) {

        Log.i("Fling""Fling Happened!");

        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();

             

        else if (e1.getX() - e2.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();

        }

        return true;

    }

    @Override

    public void onLongPress(MotionEvent e) {

        // TODO Auto-generated method stub

    }

    @Override

    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,

            float distanceY) {

        return false;

    }

    @Override

    public void onShowPress(MotionEvent e) {

 

    }

    @Override

    public boolean onSingleTapUp(MotionEvent e) {

        return false;

    }

}

 

 

 

行了,解决了~ ,我从ListView这里,直接传到activity的ontouchevent() 那里了~就响应了,谢谢各位~
ListView1.setOnTouchListener(new OnTouchListener(){

@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
Log.i("ListView1", "ListView1 onTouchEvent!");
Common_Channels.this.detector.onTouchEvent(event);
return false;
}

});

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值