android图片库开始移动或减慢并停止移动

发布于 2024-09-06 09:22:20 字数 316 浏览 4 评论 0原文

我正在使用 android gallery 有没有任何侦听器或方法我可以知道当用户开始运动、停止运动、减慢或移动时哪个会被触发?

我看到您可以覆盖以下方法,

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

但我如何知道滚动是否要停止或开始?

i am using android gallery is there any listener or way i can know which get fired when user start motion, stop motion, slowing down or moving ?

i see you can overide the following method

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

but how do i know if scrolling is going to stop or started ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

挖鼻大婶 2024-09-13 09:22:20

你的方法是正确的,现在根据你的显示宽度,你将比较原始速度和修改后的速度。

private float modifiedVelocityX;

private void init() {
    Display display = ((WindowManager) getContext().getSystemService(
            Context.WINDOW_SERVICE)).getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
Log.i(TAG, "Width = " + display.getWidth() + " Height = " + display.getHeight());
modifiedVelocityX = (float) (width * 1.0); //*** 1.0 = Velocity Factor.
    }

@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
        float velocityY) {
        float mod = velocityX < 0 ? -modifiedVelocityX : modifiedVelocityX;
if (getSelectedItemPosition() == 1 || getSelectedItemPosition() == getAdapter().getCount() - 2) {
            mod = velocityX < 0 ? -1 : 1;
        }

Log.i(TAG, "Original Velocity X was " + velocityX + " now my Modified Velocity is " + mod);
    return super.onFling(e1, e2, mod, velocityY);
}

you are in the right way, now based in your display width you will compare the Original Velocity with the Modified Velocity.

private float modifiedVelocityX;

private void init() {
    Display display = ((WindowManager) getContext().getSystemService(
            Context.WINDOW_SERVICE)).getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
Log.i(TAG, "Width = " + display.getWidth() + " Height = " + display.getHeight());
modifiedVelocityX = (float) (width * 1.0); //*** 1.0 = Velocity Factor.
    }

@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
        float velocityY) {
        float mod = velocityX < 0 ? -modifiedVelocityX : modifiedVelocityX;
if (getSelectedItemPosition() == 1 || getSelectedItemPosition() == getAdapter().getCount() - 2) {
            mod = velocityX < 0 ? -1 : 1;
        }

Log.i(TAG, "Original Velocity X was " + velocityX + " now my Modified Velocity is " + mod);
    return super.onFling(e1, e2, mod, velocityY);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文