上来,先说两句别的~~
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,不知道未来是什么样子~~~~