无法弄清楚如何使用ImageViewTouch挂钩

再次学习

我正在使用该库(https://github.com/sephiroth74/ImageViewZoom),但在尝试清除时遇到了问题。我已经阅读了其他答案,但它们没有显示用于获取事件的实际代码。

我迷上了这样的逃亡事件:

 mImage.setOnTouchListener(new OnTouchListener()
 {
      @Override
      public boolean onTouch(View v, MotionEvent event) {
      return gestureDetector.onTouchEvent(event);
 }
 });
 gestureDetector = new GestureDetector(this, new MyGestureDetector(getApplicationContext(), this));

MyGestureDetector扩展了SimpleOnGestureListener。然后,我重写onFling方法。

这种方法的问题在于它禁用了1触摸功能,因此禁用了平移功能。我确定有更好的方法挂接到事件中(这样我就可以更改图像),但是我不确定-newb :(

我正在寻找的是一种类似于ImageViewZoom提供的其他挂钩的挂钩方式。像这样:

         mImage = (ImageViewTouch) view.findViewById(R.id.image);
    mImage.setOnClickListener(this);

    // set the default image display type
    mImage.setDisplayType( ImageViewTouchBase.DisplayType.FIT_TO_SCREEN );

    mImage.setSingleTapListener( new ImageViewTouch.OnImageViewTouchSingleTapListener()
    {
        @Override
        public void onSingleTapConfirmed()
        {
            Log.d(TAG, "onSingleTapConfirmed");
            setToolbarsVisible(!isToolbarsVisible());
        }
    });
维克拉姆

注意:我自己尚未测试/编码,因此可能无法立即使用。

我检查了源代码ImageViewTouch-它在SimpleOnGestureListener内部使用以提供各种基于手势的功能(包括单钩和双钩)。提供fling事件的回调。因此,您将必须自己编写代码。首先定义一个新接口,例如的OnImageViewTouchFlingEventListener内部/外部ImageViewTouch.java例如,在第320行的ImageViewTouch.java以下位置定义它

public interface OnImageViewTouchFlingEventListener {

    // Can be defined as `void onFlingEvent(boolean left)` ==> if left==true, user
    // flinged `left-to-right`, else `right-to-left`. Similarly, you can
    // modify the parameters to add checks for up-to-down and down-to-up.
    void onFingEvent();
}

接下来,ImageViewTouch.java在第31行之后添加一个成员

private OnImageViewTouchFlingEventListener mFlingEventListener;

mFlingEventListener在第64行之后添加一个公共方法进行初始化

public void setFlingEventListener( OnImageViewTouchFlingEventListener listener ) {
    mFlingEventListener = listener;
}

的第261行ImageViewTouch.java:方法onFling(.....)定义ImageView对fling事件的反应。首先,检查您是否同意当前功能。例如,您提到要让fling事件更改图像。如果您查看第266行,如果当前比例为1,则fling事件将不执行任何操作-它仅返回false。

您需要决定ImageView如何应对(以及在什么情况下)。假设您决定只有在比例缩放时,猛击才会更改图像one-否则它将平移。然后,对266行进行以下修改即可:

if (getScale() == 1f) {
    if (mFlingEventListener != null) {
        mFlingEventListener.onFlingEvent();
        return true;
    }
}

在您的代码中,当您OnTouchListener在ImageViewTouch上设置时,它将取代ImageViewTouch的内部触摸/手势处理所提供的所有触摸功能-因此没有单次/双击回调。这就是为什么您不能在ImageViewTouch.java之外实现fling事件回调的原因-可以,但是,然后,您还需要实现其他所有手势

更改您的活动代码:

该成员mFlingEventListener需要初始化:

mImage.setFlingEventListener(new ImageViewTouch.OnImageViewTouchFlingEventListener() {
    @Override
    public void onFlingEvent() {
        Log.d(TAG, "onFlingEvent fired");
        // handle change of image
    }
});    

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法弄清楚如何使用getchar(); 在C

来自分类Dev

无法弄清楚如何获得此总运行

来自分类Dev

无法弄清楚用法

来自分类Dev

无法弄清楚如何使用Soundcloud API测试代理

来自分类Dev

无法弄清楚如何<s:select>

来自分类Dev

无法弄清楚如何将美分与美元分开

来自分类Dev

无法弄清楚如何设置java.library.path

来自分类Dev

无法弄清楚如何查询Bing / Azure Marketplace API

来自分类Dev

无法弄清楚如何将导航栏居中

来自分类Dev

无法弄清楚如何解析此数据

来自分类Dev

Python,无法弄清楚如何保存循环变量

来自分类Dev

无法弄清楚如何检查列表是否包含0

来自分类Dev

无法弄清楚如何清除随机森林中的NaN

来自分类Dev

无法弄清楚如何在样式化组件和useState挂钩中使用props更改css

来自分类Dev

无法弄清楚如何在地图中检索对象

来自分类Dev

无法弄清楚如何使用getchar(); 在C中

来自分类Dev

无法弄清楚如何确保最后的模式

来自分类Dev

无法弄清楚如何为我的函数使用参数

来自分类Dev

无法弄清楚如何创建特殊条件

来自分类Dev

无法弄清楚如何收税

来自分类Dev

无法弄清楚如何捕获InputMismatchException

来自分类Dev

JAXB-无法弄清楚如何正确使用refID

来自分类Dev

无法弄清楚如何使用$ scope。$ watch

来自分类Dev

无法弄清楚如何打印toString

来自分类Dev

无法弄清楚如何使用西班牙口音

来自分类Dev

无法弄清楚如何使用lighttpd接收HTTP请求

来自分类Dev

iOS限制-无法弄清楚如何

来自分类Dev

无法弄清楚如何使用 OfficeExtension.Promise

来自分类Dev

无法弄清楚崩溃