Intereting Posts
Android: обновлять элементы ListView каждые 1 минуту Экран Android + XAMARIN + Force останется в режиме «Портрет» (с помощью AndroidManifest) SQLite – Можно ли вставить BLOB через инструкцию insert? Android-эквивалент API-интерфейса iOS GCD dispatch_group Как экспортировать библиотеку в Jar в Android Studio? Экран ускорителя эмулятора intel x86 (установщик HAXM) версии 6.0.5 показывает, что он несовместим с окнами Keytool не запрашивает пароль (используя Facebook lib с Android) Как создать действительно маленькие кнопки в android из кода? OpenglES смешивание частиц, но не фон Не удается войти в Facebook из-за неверной ошибки токена доступа с помощью модуля Facebook Titanium В чем разница между ANR и сбоем в Android? Расположение стола для Android Портрет андроид или пейзаж CLOSED_LOGIN_FAILED и FacebookOperationCanceledException В чем разница между двумя вариантами использования учетных данных «VPN и приложения» и «Wi-Fi» при установке специального сертификата на эмулятор Android?

Как я могу ограничить показ в галерее Android только одним элементом для броска?

У меня есть галерея с несколькими полноэкранными изображениями. Я хочу ограничить жест fling только продвижением одного изображения за раз (например, приложение HTC Gallery). Каков правильный / простой способ достичь этого?

Solutions Collecting From Web of "Как я могу ограничить показ в галерее Android только одним элементом для броска?"

Просто переопределите метод onFling() виджета галереи и не вызывайте метод onFling() .

Это заставит галерею продвигать по одному элементу за салфетки.

У меня было одно и то же требование, и я только что обнаружил, что он сдвинет только один элемент для каждого, если я верну только false.

 @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { return false; } 

Пример кода, чтобы ответить на вопрос:

 public class SlowGallery extends Gallery { public SlowGallery(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public SlowGallery(Context context, AttributeSet attrs) { super(context, attrs); } public SlowGallery(Context context) { super(context); } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { //limit the max speed in either direction if (velocityX > 1200.0f) { velocityX = 1200.0f; } else if(velocityX < -1200.0f) { velocityX = -1200.0f; } return super.onFling(e1, e2, velocityX, velocityY); } } 

У меня есть решение, которое, хотя и не гарантирует максимум одного продвижения, чрезвычайно просто (и, вероятно, делает то, что вы делаете вручную в коде): просто уменьшите скорость x в параметре onFling. То есть, переопределите onFling, чтобы выглядеть так:

 @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { return super.onFling(e1, e2, velocityX / 4, velocityY); } 

Лучший,

Майкл

Привет, столкнулся с такой же проблемой, я решил проблему, используя ниже логику.

1-> Создать один класс, который должен расширять галерею
2-> и Override onFling.

См. Ниже код:

 package com.sra; import android.content.Context; import android.util.AttributeSet; import android.view.MotionEvent; import android.widget.Gallery; public class GallView extends Gallery{ public GallView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); // TODO Auto-generated constructor stub } public GallView(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub } public GallView(Context context) { super(context); // TODO Auto-generated constructor stub } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { return false; } } 

Используйте этот класс в xml в качестве галереи:


 <com.sra.GallView android:id="@+id/Gallery01" android:layout_width="fill_parent" android:layout_height="250dip" > </com.sra.GallView> 

Я не мог найти способ ограничить прокрутку, но я решил проблему, реализующую / адаптирующую с некоторым успехом этот код: http://permalink.gmane.org/gmane.comp.handhelds.android.devel/101327

Он реализует галерею с "броском"