【问题标题】:Android Gallery - Replace Bitmap in ImageView after scrolling stoppedAndroid Gallery - 滚动停止后替换 ImageView 中的位图
【发布时间】:2011-11-28 16:32:04
【问题描述】:

我已经编写了一个包含多张图片的可缩放图库。

  • 图像可以缩放。
  • 可以拖动缩放的图像。
  • 如果图片没有缩放,图库可以滚动。

布局由LinearLayoutTextView(画廊名称)和Gallery 本身组成。

画廊中的一个项目由一个RelativeLayout 组成,其中包含一个FrameLayout 和一个ImageView(我读到我需要FrameLayout 进行缩放)和一个TextView 来显示图像的缩放状态。

我使用自定义View.OnTouchListener 来实现缩放。

现在我试图用高分辨率图片替换ImageView 中的图片画廊已停止滚动,以便用户可以更好地/进一步放大。

我将OnItemSelectedListenersetCallbackDuringFling 设置为false。

如果你快速甩动屏幕,即使这样也能正常工作。
但是,如果您将手指放在显示屏上并将其缓慢移动到边缘,OnItemSelectedListener 会在下一个项目到达之前触发中心和滚动动画停止。相反,画廊会像失去触摸接触一样跳跃,并立即将画廊中的下一个项目居中。此外,当手指缓慢移动时,OnItemSelectedListener 在同一个项目上被多次调用(我通过保存最后一个选定项目的位置来避免这个问题)。

所以(长话短说)我正在寻找Gallery 的“滚动/对齐网格”效果的回调/监听器。我也尝试了AnimationListener,但是当我在其上调用getAnimation 时,画廊返回null。

我在这里很绝望......有人可以帮忙吗?

【问题讨论】:

    标签: android animation scroll gallery zooming


    【解决方案1】:

    问题已解决:我现在使用 android.support.v4.view.ViewPagerOnPageChangeListener 中的自定义回调:

    • onPageSelected
    • onPageScrollStateChanged
    • onPageScrolled

    【讨论】:

      【解决方案2】:

      我建议对您的方法稍作改动。对于您的画廊,覆盖 onScroll(MotionEvent, MotionEvent, float, float)onFling(MotionEvent, MotionEvent, float, float) 让他们返回他们的超级但在 MotionEvent.ACTION_DOWN || MotionEvent.ACTION_UP 将移动标志设置为 true ||分别为假。

      现在,在返回图像视图时,在 getView(int, View, ViewGroup) 方法中的图库的 BaseAdapter 中,如果移动标志为真,则返回低分辨率 ImageView,否则返回高分辨率。

      【讨论】:

      • 感谢您的提示,但只要下一个项目可见(滚动),就会调用 getView(...)。此外,我已经尝试使图像依赖于手势。但这对我也不起作用,因为如果你有 MotionEvent.ACTION_UP 画廊可能仍在滚动以使当前项目居中。我想项目居中后替换图像。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-27
      • 1970-01-01
      • 1970-01-01
      • 2016-07-03
      相关资源
      最近更新 更多