Android viewpager 检测滑动超出范围

2023-12-07

在我的 Android 应用程序中,我使用 viewpager 进行图像滑动。我的要求是,如果用户滑出第一页和最后一页,则活动应该完成。

我已经采取了这个example。但方法setOnSwipeOutListener在我的活动中没有被调用。

这是我的自定义视图寻呼机类:

public class CustomViewPager extends ViewPager {

    public CustomViewPager(Context context) {
        super(context);
    }

    public CustomViewPager(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    float mStartDragX;
    OnSwipeOutListener mListener;

    public void setOnSwipeOutListener(OnSwipeOutListener listener) {
        mListener = listener;
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        float x = ev.getX();
        switch (ev.getAction()) {
        case MotionEvent.ACTION_DOWN:
            mStartDragX = x;
            break;
        case MotionEvent.ACTION_MOVE:
            if (mStartDragX < x && getCurrentItem() == 0) {
                mListener.onSwipeOutAtStart();
            } else if (mStartDragX > x
                    && getCurrentItem() == getAdapter().getCount() - 1) {
                mListener.onSwipeOutAtEnd();
            }
            break;
        }
        return super.onInterceptTouchEvent(ev);
    }

    public interface OnSwipeOutListener {
        public void onSwipeOutAtStart();

        public void onSwipeOutAtEnd();
    }

} 

在我的活动课下面,我称之为setOnSwipeOutListener我的自定义 viewpager 类上的方法,但它没有被调用。

myPager = (CustomViewPager) findViewById(R.id.home_pannels_pager);

.......

myPager.setOnSwipeOutListener(new OnSwipeOutListener() { // the method never called
    @Override
    public void onSwipeOutAtStart() {
        Log.e("swipe Out At Start ", "swipe out");
    }

    @Override
    public void onSwipeOutAtEnd() {
        Log.e("swipe Out At End ", "swipe end");
    }
});

myPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
    @Override
    public void onPageSelected(int po) {
        Log.e("positon", ""+po);
    }
});

请帮助我检测用户是否已滑过第一页和最后一页以关闭此活动以及如何从代码中调用该方法。


就我而言,onInterceptTouchEvent 不起作用。我用 onTouchEvent 更改了方法,它正在工作。原来的解决方案来自tjlian616

    @Override
public boolean onTouchEvent(MotionEvent ev){
    if(getCurrentItem()==getAdapter().getCount()-1){
        final int action = ev.getAction();
        float x = ev.getX();
        switch(action & MotionEventCompat.ACTION_MASK){
        case MotionEvent.ACTION_DOWN:
            mStartDragX = x;
            break;
        case MotionEvent.ACTION_MOVE:
            break;
        case MotionEvent.ACTION_UP:
            if (x<mStartDragX){
                mListener.onSwipeOutAtEnd();
            }else{
                mStartDragX = 0;
            }
            break;
        }
    }else{
        mStartDragX=0;
    }
    return super.onTouchEvent(ev);
}    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android viewpager 检测滑动超出范围 的相关文章

  • onBeaconServiceConnect 未调用

    和以前一样 我使用 Android Beacon 库 它已经工作了 我可以通过 BLE 低功耗蓝牙找到信标 但是现在 更新到最新版本的库后 现在方法onBeaconServiceConnect 不再跑了 请告诉我我需要做什么才能让它发挥作用
  • Twitter 登录说明

    我想在 Android 中创建一个 Twitter 应用程序 为此 我想创建一个登录页面并登录到 Twitter 为此 我们需要消费者密钥和消费者密钥 这是什么意思 要创建此登录页面 除了 Twitter 帐户之外 我们还需要其他任何东西吗
  • Android:使用 OAuth 访问 google 任务时出现问题

    由于 google 任务没有公共 api 我想编写解决方法并像浏览器一样请求数据 然后解析结果以进一步显示 为了访问数据 我使用 google 实现了 OAuth 身份验证来访问此 url https mail google com htt
  • 在android中通过BLE传输图像

    我使用以下代码传输 1 MB 的图像 如果在每个数据包之间实现线程延迟 则图像将成功传输 如果未设置线程延迟 则所有数据包均从BluetoothGattServer 发送 但BluetoothGattCallback 不会接收所有数据包 任
  • 带有一、二和三个按钮的 Android 警报对话框

    我不经常发出警报 但每次发出警报时 我都会花一些时间来阅读文档 https developer android com guide topics ui dialogs html并弄清楚如何去做 由于我现在不得不这样做几次 所以我将在下面写一
  • 从 Android 代码设置的 SECRET_CODE

    我知道如何使用清单文件中的秘密代码 它与此源代码配合良好
  • 播放 SoundCloud 曲目

    我可以在 Android 应用程序中播放 SoundCloud 中的曲目吗 我正在尝试这段代码 但它不起作用 String res https api soundcloud com tracks 84973999 stream client
  • 如何在android上的python kivy中关闭应用程序后使服务继续工作

    我希望我的服务在关闭应用程序后继续工作 但我做不到 我听说我应该使用startForeground 但如何在Python中做到这一点呢 应用程序代码 from kivy app import App from kivy uix floatl
  • 从 React Native Js 代码调用 Android Native UI 组件方法

    我创建了一个 CustomView SignatureView java 它扩展了 LinearLayout 以捕获 Android Native 中的签名 并创建了SignatureCapturePackage java和Signatur
  • 如何解决 Firebase AuthUi 中无法找到显式活动?

    使用 firebase UI 时 我无法找到显式活动类 com firebase ui auth KickoffActivity protected void onCreate Bundle savedInstanceState super
  • Android在排序列表时忽略大小写

    我有一个名为路径的列表 我目前正在使用以下代码对字符串进行排序 java util Collections sort path 这工作正常 它对我的 列表进行排序 但是它以不同的方式处理第一个字母的情况 即它用大写字母对列表进行排序 然后用
  • android EditText 输入类型用于 StreetNumber 字段

    我试图在地址对话框的 streetNumber 字段中选择正确的 inputType 我想先显示数字键盘 然后让用户输入字母字符 对于一些非常特殊的情况 更接近这个的是 inputType datetime 但这不允许输入字母字符 那么如何
  • 如何检查 Android 中连接的 wifi 网络是否处于活动状态

    如何自动检查android中连接的WiFi网络上的互联网是否处于活动状态 我可以检查 wifi 是否已启用或 wifi 网络是否已连接 但我不确定如何检查互联网是否已连接 这可能吗 private boolean connectionAva
  • 使用 PhoneGap 使 Android 应用程序易于访问(对于残障人士)

    有人有过使用 PhoneGap 使 Android 应用程序可访问的经验吗 至少我们需要使我们的应用程序符合第 508 条规定 我尝试实现一些标准的辅助功能 文本框标签 向 div 添加标题属性等 但是 当在 Android 中使用 Tal
  • 在旋转时从错误的资源文件夹中提取可绘制对象

    在这里拉我的头发 因此 我正在使用一个具有多种类型的可绘制对象的应用程序 并且它们的结构如下 res Portrait resources drawable mdpi drawable hdpi drawable xhdpi Landsca
  • 在游戏视图下添加 admob

    我一直试图将 admob 放在我的游戏视图下 这是我的代码 public class HoodStarGame extends AndroidApplication Override public void onCreate Bundle
  • react-native run-android 失败并出现错误:任务 ':app:dexDebug' 执行失败

    我使用的是 Windows 8 1 和react native cli 1 0 0 and react native 0 31 0 添加后react native maps对于该项目 我运行了命令react native upgrade并给
  • Android 后台服务示例,具有交互式调用方法

    我不是 Android 方面的专家 我正在寻找一个 Android 应用程序的示例 该应用程序使用一个服务 其中有真正的功能方法 或者换句话说 一个服务可以用来做什么 我们什么时候需要它 超越简单的东西服务举例 我确信您渴望获得一些工作代码
  • 哪些 Flutter 插件或功能可以利用外部 iOS/Android 显示器来显示与主显示器不同的内容

    我正在构建一个跨平台应用程序 需要在外部显示器上显示不同的视图 通常通过连接到 LCD 投影仪的 HDMI 适配器电缆连接 Flutter 是否能够在内置的外部显示器上显示不同的屏幕 在现有的 Flutter 插件中还是使用现有的 Flut
  • Android 中带有组的列表视图

    我有一个列表视图 每行都有一些日期和文本 我可以像 iPhone 中那样将这个 listView 分组 组之间有标题吗 在 android 中是否可能 请帮忙 即 我需要在 Listview 行之间有标题栏 以便如果我使用日期对其进行分组

随机推荐

  • 如何使用sklearn改变混淆矩阵中方框的颜色?

    这是我生成混淆矩阵的代码片段 我想知道如何使用 sklearn 更改混淆矩阵中那些不在与热图相同的对角线中的框的颜色 nb classes 15 confusion matrix torch zeros nb classes nb clas
  • 创建变量类型列表

    我正在尝试创建某种类型的列表 我想使用列表表示法 但我只知道 System Type a 的类型是可变的 如何创建变量类型的列表 我想要类似这段代码的东西 public IList createListOfMyType Type myTyp
  • 如何在 awk 中转义单引号

    我想做以下事情 awk BEGIN FS printf s 1 但是用这种方式转义单引号是行不通的 awk BEGIN FS printf s 1 这个怎么做 感谢帮助 这可能是您正在寻找的 awk BEGIN FS printf s 1
  • 正则表达式转义双引号内的双引号

    我有一个需要解析为 JSON 的字符串 问题是 它有时可能包含双引号 导致解析错误 例如 id clients 58844 id clients name 100 test qw 我需要一个正则表达式来替换开头和结尾之间的任何双引号 wit
  • Laravel 中的模型没有 Dingo 的查询结果 - 如何在失败时做出 RESTful 响应?

    我正在使用 Laravel 创建一个基于以下内容的 API野狗API 在我的路线中 我有 Route api v1 function Route resource object My Namespace MyController 在我的控制
  • 打字稿“对象可能为‘空’”误报

    我有以下代码 isEmpty vehicle VehicleTitle return this options this options vehicle type this options vehicle type length 0 IDE
  • 为什么默认有content_main.xml和activity_main.xml而不是只有activity_main.xml?

    我刚刚开始学习Android应用程序开发 我有 Android Studio 1 4 在我的布局文件夹中 我有两个 XML 文件 content main xml and activity main xml 我使用在线教程来学习 但他们只有
  • 学习Spring框架时遇到java.lang.NoClassDefFoundError

    我一直在寻找失败的原因 但无法弄清楚 文件的结构 src com learn spring beans annotation Main java TestObject java beans annotation xml 主程序 java p
  • 自动映射器用子对象覆盖列表中缺少的源属性

    我在使用自动映射器时遇到问题 我设置了一个测试 Windows 窗体应用程序 下面是代码 另外看看每个MessageBox后面的注释 public class FirstClass public string FirstProp get s
  • 分享在 React Native android/ios 中不起作用?

    我如何共享将在反应本机移动应用程序网络浏览器中打开的 pdf 文件链接或图像链接 我添加了一个共享按钮 但是当用户单击它时 它会打开共享菜单选项 如 WhatsApp Gmail 消息等 的位置 但是当单击 WhatsApp 时 它不会发送
  • 如何确保 CFID 符合 PCI 合规性?

    由于 ColdFusion 具有可预测的 CFID 我们的 PCI 扫描一直失败 我们得到的确切失败是 可预测的 Cookie 会话 ID 现在 CFTOKEN 不再是可预测的 因为我已将 CF 配置为对 CFTOKEN 使用 UUID 但
  • Visual Studio 单元测试:dll 不受信任

    我正在努力运行一些单元测试 并想知道是否有人有任何有见地的东西 设置是我们在服务器上有一堆引用的 DLL 当我尝试执行时 我得到了旧的 测试运行部署问题 文件或目录的位置 c source ProjectName bin debug 3rd
  • 在 Bash 中重定向 stderr 和 stdout [重复]

    这个问题在这里已经有答案了 我想重定向两者标准输出 and 标准误一个进程到一个文件 我如何在 Bash 中做到这一点 看一看here 它应该是 yourcommand gt filename 它将标准输出和标准错误重定向到文件filena
  • 如何将选项卡栏控制器添加到拆分视图控制器应用程序的根视图

    我对 iPad 很陌生UISplitViewController 我需要在主视图 左视图的底部添加一个包含 3 个选项卡的选项卡栏 我为这 3 个选项卡中的每一个选项卡都有不同的视图控制器 我还没有找到任何其他在基于拆分视图的应用程序中使用
  • Asynctask状态始终显示正在运行

    我想在完成第一个任务后执行异步任务 但是 当打印第一个任务的状态时 它始终显示 正在运行 如果并行执行两个任务 则只会执行较小的任务 我在 Activity oncreate 方法中运行这两个方法 有什么想法吗 这是我的代码示例 publi
  • 在 Excel 中,如何用最后一个前面的非空白单元格填充空白单元格?

    如何用最后一个前面的非空白单元格填充空白单元格 例如 我有这个两列表 A abc dce fds B kjh abc 我想要的是 A A abc A dce A fds B B kjh B abc 我尝试了像 IF ISBLANK A2 A
  • uipickerview swift 3 中的国家/地区列表

    我用谷歌搜索如何找到国家列表并尝试实施PickerView 但我陷入了我尝试做的这一点countries count它给了我一个错误 无法将 int 类型的返回表达式转换为 string 类型的返回表达式 有什么建议么 import UIK
  • 如何在 iOS 上截取代码截图? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 如何从代码中截取屏幕截图 http www iphonedevsdk com forum iphone sdk development 2353 possible make sc
  • 查找UDP数据包的源IP/进程

    我在用recvfrom 在我的 C 程序中接收来自多个客户端的 UDP 数据包 这些客户端可以使用自定义用户名登录 一旦他们登录 我希望他们的用户名与唯一的客户端进程配对 这样服务器就可以根据数据包的来源自动知道用户是谁 我如何从收到的数据
  • Android viewpager 检测滑动超出范围

    在我的 Android 应用程序中 我使用 viewpager 进行图像滑动 我的要求是 如果用户滑出第一页和最后一页 则活动应该完成 我已经采取了这个example 但方法setOnSwipeOutListener在我的活动中没有被调用