• 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,不知道未来是什么样子~~~~

  • 相关阅读:
    swagger Unable to render this definition
    企业应用向ASP.NET Core迁移
    .NET Core EF框架使用SQL server 2008数据库分页问题:Incorrect syntax near 'OFFSET'. Invalid usage of the option NEXT in the FETCH statement
    .NET Core应用中使用分布式缓存及内存缓存
    .NET Core Session的使用方法
    .NET Core 2.1中的HttpClientFactory最佳实践
    转载:ZooKeeper Programmer's Guide(中文翻译)
    Python【map、reduce、filter】内置函数使用说明(转载)
    Python使用基础
    Redis Sentinel:集群Failover解决方案(转载)
  • 原文地址:https://www.cnblogs.com/fanglove/p/2757439.html
Copyright © 2020-2023  润新知