Gallery与imageView的onClick事件冲突解决方法

上来,先说两句别的~~

1。刚到新公司 ,遇见这样的问题,由于害怕给leader不好印象,所以解决的时候有点急,现在想想其实没有什么~~~

2。放好心态

 

介绍一下我代码的情况:

gallery在activity中的代码 

     gallery.setAdapter(galleryAdapter);
        gallery.setSelection(getMax());
        gallery.setOnItemSelectedListener(new OnItemSelectedListener() {

            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                try {
                    poster_position = position % GALLERY_IMAGE_COUNT;
                    setPosterPosition();

                } catch (Exception e) {
                    e.printStackTrace();
                }
            }

            public void onNothingSelected(AdapterView<?> parent) {
                F.ot("onNothingSelected");
            }
        });

galleryAdapter中getView的代码

holder.imageView.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                //gallery的中的imageview的Click事件
                Message msg = new Message();
                msg.arg1 = argPos;
                msg.what = Activity_Home.GALLERY_ITEM_CLICK;
                mHandler.sendMessage(msg);
            }
        });

因为是这样子写的代码,所以只能处理到imageView的单击事件,忽略的gallery的touch事件

基于这种情况,网上大概有两种方法。

第一种:

1.就是在galleryAdapter中的getView中,写出imageView的ontouch事件,

2.然后分别在ACTION_DOWN,和ACTION_UP,记录下x度座标

3.如果两个X,相减的值小于5,则认为是imageView的单击事件

4.否则imageView的ontouch事件,返回false,交给gallery处理

5.最后说一句,我用这种方法,没做出来,一直接受不到ACTION_UP事件。这个方法”小月“了

第二种:

把imageView的ontouch事件传到gallery中,让gallery处理。原因不明,直接上代码

holder.poster.setOnTouchListener(new OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                gallery.onTouchEvent(event);
                return false;
            }
        });
        holder.poster.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                //gallery的中的imageview的Click事件
                Message msg = new Message();
                msg.arg1 = argPos;
                msg.what = Activity_Home.GALLERY_ITEM_CLICK;
                mHandler.sendMessage(msg);
            }
        });

 

 到新公司的第一个任务就是改近30个BUG,不知道未来是什么样子~~~~

posted @ 2012-11-06 18:02  柱柱  阅读(1230)  评论(0编辑  收藏  举报