'da dokunma olayı varsa, ViewPager tarafından durdurulmasını durdurun Fragments sayfalarını görüntüleyen bir ViewPager
var. Her Fragman bir çevrimdışı web sitesi görüntüleyen bir Web Görünümüdür. Bu web görüntülemelerinden bazıları, çalışmasını sağlamak için javascript kaydırma olayları içeriyor.Dokunma olayı, web görüntüleme
Web görünümünde herhangi bir kaydırma olayı (javascript dahilinde) yoksa, dokunma olayı, web görünümünde tüketilmiyorsa, ViewPager
'a iletilir.
I
@Override
public boolean onInterceptTouchEvent(MotionEvent event)
{
return (this.swipeable) ? super.onInterceptTouchEvent(event) : false;
}
Ancak bu (beklendiği gibi) Kaydırılabilir olmaktan
ViewPager
önlenir, ama aynı zamanda web görünümünü ulaşan manyetik etkinliği durdurulmuş ViewPagers geçersiz denedi, bu yüzden iki istenmeyen etkilerini göstermektedir.
Dokunma olayını web'de ilk olarak görüntülemenin herhangi bir yolu var mı, daha sonra ViewPager
numaralı iletiye geri gönderen parçada tüketilmezse?
public class MyViewPager extends ViewPager implements GestureDetector.OnGestureListener
{
private static final String TAG = MyViewPager.class.getSimpleName();
private boolean swipeable = true;
private float lastX = 0;
private long lastTime = 0 ;
private GestureDetector mGestureDetector;
private boolean mScrolling = false;
public MyViewPager(Context context) {
super(context);
mGestureDetector = new GestureDetector(context, this);
}
public MyViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
mGestureDetector = new GestureDetector(context, this);
}
public void setSwipeable(boolean swipeable) {
this.swipeable = swipeable;
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event)
{
/* float speed = 0;
if(event.getAction() == MotionEvent.ACTION_MOVE)
{
if(lastX!=0) {
speed = (event.getRawX()- lastX)/(System.currentTimeMillis()-lastTime);
if(speed < 0.0){speed *=-1;}
Log.e(TAG, "Move at speed ->"+speed);
if(speed >0.5){return false;}
}
lastX = event.getRawX();
lastTime = System.currentTimeMillis();
return true;
}*/
// return true;
return (this.swipeable) ? super.onInterceptTouchEvent(event) : false;
}
@Override
public boolean onTouchEvent(MotionEvent event)
{
Log.i(TAG, "onTouch event");
// mGestureDetector.onTouchEvent(event);
return false;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velX, float velY) {
Log.i(TAG, "flinging");
return false;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distX, float distY)
{
float displacement = distX;
return false;
}
// Unused Gesture Detector functions below
@Override
public boolean onDown(MotionEvent event) {
return false;
}
@Override
public void onLongPress(MotionEvent event) {
// we don't want to do anything on a long press, though you should probably feed this to the page being long-pressed.
}
@Override
public void onShowPress(MotionEvent event) {
// we don't want to show any visual feedback
}
@Override
public boolean onSingleTapUp(MotionEvent event) {
// we don't want to snap to the next page on a tap so ignore this
return false;
}
}