У меня есть галерея с несколькими полноэкранными изображениями. Я хочу ограничить жест fling только продвижением одного изображения за раз (например, приложение HTC Gallery). Какой правильный/самый простой способ достичь этого?
Как я могу ограничить показ в галерее Android только одним элементом для броска?
Ответ 1
Просто переопределите метод Gallery Widget onFling()
и не вызывайте метод superclass onFling()
.
Это приведет к тому, что галерея продвинет один элемент за каждый промах.
Ответ 2
У меня было одно и то же требование, и я только что обнаружил, что он будет скользить только один элемент для каждого, если я верну только false.
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
return false;
}
Ответ 3
пример кода, чтобы ответить на вопрос:
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);
}
}
Ответ 4
У меня есть решение, которое, хотя и не гарантирует максимум одного продвижения, чрезвычайно просто (и, вероятно, делает то, что вы делаете вручную в коде): просто уменьшите скорость x в параметре onFling. То есть, переопределите onFling, чтобы выглядеть так:
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
return super.onFling(e1, e2, velocityX / 4, velocityY);
}
Бест,
Майкл
Ответ 5
Привет столкнулся с такой же проблемой, я решил проблему с использованием ниже логики.
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>
Ответ 6
Я не мог найти способ ограничить прокрутку, но я решил проблему, реализующую/адаптирующую с некоторым успехом этот код: http://permalink.gmane.org/gmane.comp.handhelds.android.devel/101327
он реализует галерею с "fling"