2014-03-03 5 views
1

Goolge DFP 캐 러셀 배너를 ListView에 구현하려고했습니다.Google DFP 캐 러셀 배너 (ListView)

DFP 캐 러셀 배너는 기술적으로 수평 배너 슬라이더가있는 WebView입니다. (adTag :/6253334/dfp_showcase/회전 목마)

정상적으로 스크롤하여 광고를 클릭하여 열 수 있습니다.

그러나 내가 가로 뷰 (ListView 항목을 통해 가로로 스크롤)를 시작하면 배너는 자동으로 클릭됩니다 (그럴 필요가 없습니다). 그러나 회전 목마 항목을 세로로 스크롤 할 때가 아니라 회전 목마 항목에서 손가락으로 가로 스크롤을 시작할 때만 발생합니다.

이 터치를 AdView에 전송하지 못하게 할 방법이 있습니까? 이상한은 AD-링크가 열립니다 동안이 목록보기 물마루 스크롤 할 수 있음을 또한 ... 나는 사용자 정의 LinearView에 배너를 넣어 시도 :

@Override 
public boolean onInterceptTouchEvent(MotionEvent ev) { 

    switch (ev.getAction()) { 
     case MotionEvent.ACTION_DOWN: 
      xDistance = yDistance = 0f; 
      lastX = ev.getX(); 
      lastY = ev.getY(); 

      break; 
     case MotionEvent.ACTION_MOVE: 
      final float curX = ev.getX(); 
      final float curY = ev.getY(); 
      xDistance += Math.abs(curX - lastX); 
      yDistance += Math.abs(curY - lastY); 
      lastX = curX; 
      lastY = curY; 
      if(yDistance > xDistance) 
       return true; 
    } 
    return super.onInterceptTouchEvent(ev); 
} 

하지만 배너 후 즉시 조치 URL을 엽니 다 ACTION_DOWN은 onInterceptTouchEvent으로 전달됩니다.

는 코드 나는이 문제를 해결할 수있는 방법

Google Carousel에 의해 사용된다?

답변

0

문제가 발견되었습니다. ListView는 TouchView 이벤트를 WebView로 보냅니다. Google의 코드는 클릭 이벤트로 취소 이벤트를 처리합니다.

// If a scroll moves < snapThreshold, consider it a tap. 
Carousel.prototype.onTouchEnd = function (e) { 

    // If onTouchEnd was triggered by mouseout, ignore tap. 
    if (e.type === 'mouseout') { 
     return; 
    } 
    //if touch cancel was triggered, ignore tap 
    if (e.type === 'touchcancel') { 
     return; 
    } 

    if (this.scrolledOut) { 
     // Prevent clicks if we've already scrolled out. 
     var preventClick = function() { 
      e.stopPropagation(); 
      e.target.removeEventListener('click', preventClick, false); 
     }; 
     e.target.addEventListener('click', preventClick, false); 
     this.scrolledOut = false; 
     this.onSwipe(); 
    } 
    .... 
:

그래서 내가 클릭으로 "touchcancel"이벤트를 처리 할에 구글의 자바 스크립트 코드 변경