当前位置: 代码迷 >> 多核软件开发 >> 关于多个ListView用ViewFlipper实现横向滑动的有关问题
  详细解决方案

关于多个ListView用ViewFlipper实现横向滑动的有关问题

热度:4878   发布时间:2013-02-26 00:00:00.0
关于多个ListView用ViewFlipper实现横向滑动的问题 - 移动平台 / Android
是这样的:基本实现了这个功能,但是呢。这个gesture的响应的滑动只能在ViewFlipper中没有Item的地方滑动,而在有Item内容的地方,根本就不响应。所以其实只有在item上边一小条的地方滑动~~。但是我现在实现的是可以在ViewFlipper所有地方都能响应OnFling()函数,Item只要能响应自身的click就可以了。 如何实现??

我把代码贴出来:
————————————————————
Java code
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(100, 98));                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(5, 5, 5, 5);                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;    }}
  相关解决方案