gallery解決快速滑動以及滑動距離過寬的問題
阿新 • • 發佈:2019-01-05
gallery作為android大控制元件之一,在4.0版本以上,你會發現,gallery物件上會有一條黑線,很有可能要摒棄了,目前還是可以使用的。
gallery的使用:系統gallery,使用後,滑動以下,會連續快速的滑動,有些時候是不需要這樣的,比如,實現廣告迴圈播放,不需要快速滑動。下面是解決這個問題的方法程式碼:
繼承gallery,修改onFling方法,如果單純的讓滑動快速效果失效,在onFling方法中直接返回false即可;以下程式碼是解決了快速滑動以及滑動距離過大(需要滑動半屏才能滑動一張)問題。
package com.example.animaldemo; import android.content.Context; import android.util.AttributeSet; import android.view.KeyEvent; import android.view.MotionEvent; import android.widget.Gallery; @SuppressWarnings("deprecation") public class MyGallery extends Gallery{ public MyGallery(Context context) { super(context); // TODO Auto-generated constructor stub } public MyGallery(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub } public MyGallery(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); // TODO Auto-generated constructor stub } private boolean isScrollingLeft(MotionEvent e1, MotionEvent e2) { return e2.getX() > e1.getX(); } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { // TODO Auto-generated method stub // return super.onFling(e1, e2, 0, velocityY);//方法一:只去除翻頁慣性 // return false;//方法二:只去除翻頁慣性 注:沒有被註釋掉的程式碼實現了開始說的2種效果。 int kEvent; if(isScrollingLeft(e1, e2)){ //Check if scrolling left kEvent = KeyEvent.KEYCODE_DPAD_LEFT; } else{ //Otherwise scrolling right kEvent = KeyEvent.KEYCODE_DPAD_RIGHT; } onKeyDown(kEvent, null); return true; } }