精华内容
下载资源
问答
  • 2021-11-19 20:43:14

    iOS 返回键方案

    1.有node的label属性,提前生成列表,每个页面获取dom的时候就获取到此节点,用于返回操作,经过首页的测试收集关键字集合[“返回”,”Back”,”close”,”Close”,”back””topBar icon 01 02”,”558FC254 2DD6 4183 ABC3 FE4A89”]

    2.没有返回键的页面,但是有X,适用于1规则

    3.如果1,2规则都不满足,那么使用右滑,目前从主页测试来看 90%的页面都是满足的

    def press_back_ios(self, page):
            """
            ios由于没有物理返回键,下方的1234,来实现返回操作,优先级 1234
            1.返回键
            直播列表页面:topBar icon 01 02,topBar icon 01 02,,true,true,16,55,20,22,0,
    
            2.点击x
            直播页面:SHVPClose,SHVPClose,,true,true,335,44,28,28,2,
    
            3.返回 name点击
    
            4.右滑
            s.swipe(0.01, 0.5, 0.5, 0.5)
    
            :return:
            """
            if page.pressBackButtonIos:
                self.s(label=page.pressBackButtonIos).click
                return
            self.s.swipe(0.01, 0.5, 0.5, 0.5)
    
    

    实操验证:页面验证(失效——右滑失效)

    name—label—value

    直播详情页 失效

    直播页面:SHVPClose,SHVPClose,true,true,335,44,28,28,2, 是右上角的X,此页面没有返回按钮

    京东超市 失效
    ------------------------ XCUIElementTypeOther
    开始打印返回,返回,true,true,15,53,20,21,0,

    京东电器 生效
    ------------------------ XCUIElementTypeButton
    开始打印MenuIconBack White,MenuIconBack White,true,true,16,55,20,20,0,

    服装美妆 生效
    ------------------------ XCUIElementTypeButton
    开始打印MenuIconBack White,MenuIconBack White,true,true,16,55,20,20,0,

    免费水果 生效
    ------------------------ XCUIElementTypeButton
    开始打印返回,返回,true,true,16,44,44,44,0,

    生活缴费 生效
    ------------------------ XCUIElementTypeButton
    开始打印返回,返回,true,true,0,43,44,43,0,

    领京豆 生效
    没有node

    借钱 生效
    ------------------------ XCUIElementTypeButton
    开始打印返回,返回,true,true,16,56,20,20,0,

    秒杀 生效
    ------------------------ XCUIElementTypeOther
    开始打印返回,返回,true,true,3,48,35,36,0,

    直播主页面 生效
    ------------------------ XCUIElementTypeButton
    开始打印topBar icon 01 02,topBar icon 01 02,true,true,16,55,20,22,0,

    排行榜 生效
    ------------------------ XCUIElementTypeButton
    开始打印558FC254 2DD6 4183 ABC3 FE4A89,558FC254 2DD6 4183 ABC3 FE4A89,true,true,16,56,20,20,0,

    品牌闪购 生效
    ------------------------ XCUIElementTypeButton
    开始打印返回上一级,返回上一级,true,true,10,43,21,44,0,

    商详 生效
    ------------------------ XCUIElementTypeButton
    开始打印返回,返回,true,true,10,50,30,30,0,

    更多相关内容
  • Fragment中监听返回键

    千次阅读 2015-06-15 11:36:59
    有些时候在Activity中监听的返回键,但此Activity中的Fragment并不想返回键...下面的代码适合如下情况:一Activity中实现了连续两次点击物理返回键退出应用程序,但此Activity中的Fragment物理返回键功能是从Fragment

    有些时候在Activity中监听的返回键,但此Activity中的Fragment并不想返回键实现同样的功能,所以需要Fragment中监听返回键。令人失望的是Fragment并不能直接对物理返回键进行监听,所以需要自己另外去进行代码实现。

    下面的代码适合如下情况:一个Activity中实现了连续两次点击物理返回键退出应用程序,但此Activity中的Fragment物理返回键功能是从Fragment栈中移除此界面。


    宿主FragmentActivity要实现的接口,以便确定当前屏幕可见的Fragment

    public interface BackHandledInterface {
    
        public abstract void setSelectedFragment(BackHandledFragment selectedFragment);
    }

    主界面的FragmentActivity

    public class MainActivity extends FragmentActivity implements BackHandledInterface{
    
        private BackHandledFragment mBackHandedFragment;
    
        private Button mBtn;
    
        /** 上次点击返回键的时间 */
        private long lastBackPressed;
        /** 上次点击返回键的时间 */
        private static final int QUIT_INTERVAL = 2000;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            this.mBtn = (Button)findViewById(R.id.btn);
            this.mBtn.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    MyFragment f = new MyFragment();
                    FragmentManager fm = getSupportFragmentManager();
                    FragmentTransaction ft = fm.beginTransaction();
                    ft.replace(R.id.container, f);
                    ft.addToBackStack("tag");
                    ft.commit();
                }
            });
        }
    
        @Override
        public void setSelectedFragment(BackHandledFragment selectedFragment) {
            this.mBackHandedFragment = selectedFragment;
        }
    
        @Override
        public void onBackPressed() {
            if(mBackHandedFragment == null || !mBackHandedFragment.onBackPressed()){
                if(getSupportFragmentManager().getBackStackEntryCount() == 0){
                    long backPressed = System.currentTimeMillis();
                    if (backPressed - lastBackPressed > QUIT_INTERVAL) {
                        lastBackPressed = backPressed;
                        Toast.makeText(this, "再按一次退出", Toast.LENGTH_LONG).show();
                    } else {
                        finish();
                        System.exit(0);
                    }
                } else {
                    getSupportFragmentManager().popBackStack();
                }
            }
        }
    }

    Fragment的基类,实现对物理返回键的监听

    public abstract class BackHandledFragment extends Fragment {
    
        protected BackHandledInterface mBackHandledInterface;
    
        /**
         * 所有继承BackHandledFragment的子类都将在这个方法中实现物理Back键按下后的逻辑
         * FragmentActivity捕捉到物理返回键点击事件后会首先询问Fragment是否消费该事件
         * 如果没有Fragment消息时FragmentActivity自己才会消费该事件
         */
        protected abstract boolean onBackPressed();
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            if(!(getActivity() instanceof BackHandledInterface)){
                throw new ClassCastException("Hosting Activity must implement BackHandledInterface");
            }else{
                this.mBackHandledInterface = (BackHandledInterface)getActivity();
            }
        }
    
        @Override
        public void onStart() {
            super.onStart();
            //告诉FragmentActivity,当前Fragment在栈顶
            mBackHandledInterface.setSelectedFragment(this);
        }
    
    }
    

    显示在当前屏幕的Fragment

    public class MyFragment extends BackHandledFragment {
    
        private boolean hadIntercept;   
    
        @Override
        public View onCreateView(LayoutInflater inflater,
                @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
            return getLayoutInflater(savedInstanceState).inflate(R.layout.fragment_a, null);
        }
    
        @Override
        protected boolean onBackPressed() {
            if(hadIntercept){
                return false;
            }else{
                getFragmentManager().popBackStack();
                hadIntercept = true;
                return true;
            }
        }
    }

    如果要在Fragment中的物理返回键实现其他功能,则可根据此代码另行改进。

    思路来源于另一位博友的优雅的让Fragment监听返回键 ,感谢这位博友。

    点击下载代码

    展开全文
  • 在安卓APP应用中,通常按下返回键后会关闭程序,有时候我们为了避免误按返回健导致程序的退出,会对按下返回健进行检测,并要求连续按下两次才退出程序。 在Delphi中开发安卓时,如何检测并实现两次退出APP呢。你...

    在安卓APP应用中,通常按下返回键后会关闭程序,有时候我们为了避免误按返回健导致程序的退出,会对按下返回健进行检测,并要求连续按下两次才退出程序。
    在Delphi中开发安卓时,如何检测并实现两次退出APP呢。你可以使用发下方式。

    定义变量

    首先需要定义一个用于记录按下返回健时间的变量:

      private
        { Private declarations }
        vTiming: Cardinal; // 时间计数
    

    定义常量

    其次,为了方便调整按下两次返回健的时间间隔,我们定义一个常量来记录:

    const
      CIntervals: Integer = 1800;  //两次按键的间隔时间 毫秒
    

    这里我们给常量定义了1800,也就是1.8秒的时间,表示按两次按健应在1.8秒内完成。那么在实际使用时,可以根据自己的需要来调整这个时间间隔值。

    引用Toast

    uses
     u_Toast;
    

    这个单元在我上一篇博客里有,请参见:《Delphi D10.X安卓APP开发中简单使用原生Toast》(直接点击前面的内容可跳转查看)
    他是为了在按下第一次返回健时给予一个友好的提示。

    初始化按健时间

    这里,我们是在窗体创建的时候记录下时间:

    procedure TForm5.FormCreate(Sender: TObject);
    begin
      vTiming := TThread.GetTickCount;
    end;
    

    监听窗体按健,实现两次返回健退出程序

    procedure TForm5.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;
      Shift: TShiftState);
    begin
      //如果是按下返回键,并且大于间隔时间,则提示
      if (Key = vkHardwareBack) And (TThread.GetTickCount- vTiming> CIntervals) then
      begin
        Key := 0;
        vTiming := TThread.GetTickCount;
        Toast('再按一次退出');
      end;
    end;
    

    整体代码

    总体的代码量很小,也就不上传演示Demo到下载空间了,大家可以根据这里的讲述在自己的项目里使用。
    以下是我Demo的全部代码内容,就没给窗体内容的,窗体上就显示了一个标题,其实也是可以不用的。

    unit fMain;
    
    interface
    
    uses
      System.SysUtils, System.Types, System.UITypes, System.Classes,
      System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics,
      FMX.Dialogs, FMX.Objects;
    
    type
      TForm5 = class(TForm)
        Text1: TText;
        procedure FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;
          Shift: TShiftState);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
        vTiming: Cardinal; // 时间计数
      public
        { Public declarations }
      end;
    
    var
      Form5: TForm5;
    
    implementation
    
    uses
      u_Toast;
    
    const
      CIntervals: Integer = 1800;  //两次按键的间隔时间 毫秒
    
    {$R *.fmx}
    
    procedure TForm5.FormCreate(Sender: TObject);
    begin
      vTiming := TThread.GetTickCount;
    end;
    
    procedure TForm5.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;
      Shift: TShiftState);
    begin
      //如果是按下返回键,并且大于间隔时间,则提示
      if (Key = vkHardwareBack) And (TThread.GetTickCount- vTiming> CIntervals) then
      begin
        Key := 0;
        vTiming := TThread.GetTickCount;
        Toast('再按一次退出');
      end;
    end;
    
    end.
    

    相关文章导读

    Delphi D10.X 安卓APP开发中按返回键后程序不退出程序的方法
    Delphi D10.X安卓APP开发中简单使用原生Toast
    点击上面标题后直接查看


    欢迎光顾本人小店:(https://shop63778938.taobao.com/)
    小店也提供delphi方面其他技术支持、定制开发。

    现在就进店看看

    后记

    大家有什么不清楚的,可以给我留言讨论

    以上信息对您有用的话请点赞收藏,就下面这行

    展开全文
  • 在工作开发过程中,遇见一功能需求,要求在页面A.html对Android手机的物理返回按键进行监听,当用户点击物理返回按键时,弹出confirm弹框:用户点击“确定”,跳转至页面B;用户点击取消,仍停留在当前页面,此时...

    前端工作爬坑日记(一):js监听Android手机物理返回按键

    功能需求描述

    在工作开发过程中,遇见一个功能需求,要求在页面A.html对Android手机的物理返回按键进行监听,当用户点击物理返回按键时,弹出confirm弹框:用户点击“确定”,跳转至页面B;用户点击取消,仍停留在当前页面,此时点击物理返回按键,依旧弹出confirm弹框,重复上述过程。

    实现逻辑

    当前,js并没有对应Android手机物理返回按键这一事件的API,无法直接对这一事件进行监听以及后续操作,因此,我们只能通过js的其他方法,来实现近似的效果。这里,我们考虑的是使用history有关的方法来实现。接下来,简要介绍一下本次需要使用的几个方法

    1. window.history.pushState(state, title, utl) :在页面中直接创建一个history实体,并将其添加到历史记录中;
      state:对象,可存储数据,可以通过 history.state方法进行读取;
      title:对应历史记录的标题
      url:创建的历史记录的链接。进行历史记录操作时会跳转到该链接。
    2. popstate:history实体被改变时,触发该事件;

    具体实现的思路就是,在页面加载时,通过window.history.pushState 方法,创建一个无实际使用意义的history实体。随后,通过addEventLister方法对popstate方法进行进行,并绑定自己想要执行的函数。需要注意的是,这里的addEventListener的 use Capture 参数需要为默认的false,使其在冒泡阶段执行。

    在上面创建新的无意义history实体的用处是,由于用户点击Android物理返回按键时,会在触发popstate事件时,销毁最新的history实体,通过创建新的无意义history实体则可以防止有用的history实体被误销毁,导致其他bug出现。

    同理,由于每次返回都会消耗一个 history 实体,若用户选择取消离开,则需要继续 pushState 一个新的实体,确保停留在当前页面。不然的话,则会出现第二次点击物理返回按键时,不执行希望的函数,而直接回退的问题,即没有实现第二次及以后的物理返回按键监听。

    实现代码

    $(function(){
    	addEventBack();
    		
        function addEventBack(){
    	  	pushHistory(); 
    	  	window.addEventListener("popstate",addBackKey, false); 
    	   	function pushHistory() { 
    	       	var state = { 
    	          	 title: "title", 
    	          	 url: "#"
    	       	}; 
    	       window.history.pushState(state, "title", "#jjjj"); 
    	  	 }
    	}
    
    	function addBackKey(){
    		var res = confirm("是否确认离开当前页面?");
    		if (res == true) {
    			window.location.href="/aaa.html";
    		}else{
    			addEventBack();
    			history.pushState(state, null, location.href);
    		}
    	}
    })
    

    参考资料

    链接: history有关方法.
             xback.js-github.

    结语

            不得不说,熟悉并掌握window有关的方法,是真的很有帮助,各位一起加油,?。

    展开全文
  • Vivo手机侧滑手势工具是一款为安卓9的机型用户提供的侧滑手势返回工具,vivo的很多机型现在都没有侧滑返回的手势功能了,这导致一些大屏机型单手操作并不方便,大家可以下载这款Vivo手机侧滑手势工具来加回侧滑手势...
  • Android返回键处理、任务和home键处理

    千次阅读 2017-05-26 13:12:59
    处理返回键的事件,监听任务键和home键的监听。
  • 在Android中,默认情况下按返回键就是退出应用;而要实现按返回键退出应用时弹出对话框就是在onKeyDown事件中添加监听,根据对话框中的选项实现退出与否。 效果图如下: @Override public boolean onKeyDown...
  • 从网页监听Android设备的返回键

    千次阅读 2016-06-22 13:08:50
    最近搞Android项目的时候,遇到一...之所以说这需求蛋疼,是因为Android有物理返回键啊……返回键啊……键啊……啊…… 用户按下返回键后,预期应该跟点击页面上的返回键一样——返回App。然而这个返回键的被按
  • Ionic在android中返回键的处理问题

    千次阅读 2017-05-22 17:20:21
    一,一段代码就可以解决问题...//ionic点击系统返回键退出APP .run(function ($rootScope, $ionicPlatform, $state, $ionicHistory, $ionicPopup, $cordovaKeyboard, $timeout) { window.addEventListener('native.key
  • 在Activity,Service,Window中监听Home键和返回键的一些思考,如何把事件传递出来的... 这其实大家都知道,首先我们要了解流程,你要屏蔽这个返回键,那你就要拿到这个返回键的事件了,所以我们要监听了,而在Activ
  • Activity A跳转Activity B,再按返回键,A、B的生命周期执行顺序是什么? 当听到这题目的时候,我得意地笑了笑,对于Activity的生命周期已经记熟的我,心想,为什么不直接问Activity的生命周期呢?于是想当然的说...
  • KODI按键映射,看IPTV按键设置

    千次阅读 2021-06-07 09:27:55
    KODI按键映射,看IPTV按键设置2020-04-09 18:10:1016点赞76收藏7评论KODI播放器功能丰富,其中自定义...一、安装 程序插件Keymap EditorKODI的插件库提供了按键映射插件,先下载 程序插件Keymap Editor,如图运行Ke...
  • 源由 原理 代码解决 思路 Ajax 请求函数 获取 id 和歌名 点击下载 利用 a 标签 ...每一次放假回家的时候,都会帮家里面的人下载歌曲,当然差不多用的都是网易云音乐网页版,但是只有客户端才提供下...
  • Apple Watch上的2按键是这么玩的

    千次阅读 2021-07-26 03:26:14
    原标题:Apple Watch上的2按键是这么玩的点评:苹果不说,但是你要知道的用法。 Apple Watch是苹果全新的产品,代表了苹果全新的设计理念,如此一来,操作和交互方式就与手机自然也有所不同。结果有的小伙伴把苹果...
  • 场景:两APP,一是自己做的APP1,一是安卓市场下载的APP2;两WIFI,信息均已知。 目的:APP1打开时,连接到了WIFI1,APP1中有接口可以切换到APP2,但APP2需要连接WIFI2, 因此在切换前连接到了WIFI2。当用户...
  • 程序员如何一键批量下载Iconfont图标

    千次阅读 2020-06-02 11:36:23
    程序员如何一键批量下载Iconfont图标 官方并没有一键加入图标购物车的选项,当你想用全部iconfont图标时,可以试试我的方法,如下: 一、在iconfont图标库中,找到你需求的图标,先清空自己当前的购物车,避免’污染’,...
  • 开发中有这么场景,Android端下载文件,文件名字大多数都由我们app端定义,假如说,产品说,为了不让我们客户端写死,可以直接使用服务器返回的文件名字.好那么我们今天来研究一下 看下效果 调用的代码 ...
  • 问题一提出来,必然两派打的不可开交。吵来吵去,两派还是按着各自的想法认为,没什么结果。到底谁更适合游戏不是谁嘴炮放的响谁就有理的,可能很多人都只是从手感上去分析,且仅仅是从感觉上判断。对于游戏操作...
  • 键盘按键映射器安卓版

    千次阅读 2021-01-13 04:31:23
    键盘按键映射器支持自定义音量键、返回键、home键多种功能,比如关闭、快速唤醒等等操作,通过按键映射器可以很轻松的实现!软件介绍xposed button按键映射器是一款支持自定义手机按键的xp模块,可直装使用,同其他...
  • A页面跳转到B,那么B操作了以后,比如下载了,然后回到A页面他的下载数量就会加1. 但是常规的点击左上角返回前一页面并不能更新。 B页面 onUnload(){ uni.$emit("getlist",{})//这里可以传空。 } A页面 ...
  • iOS开发实现页面的跳转与返回

    千次阅读 2015-07-28 15:41:32
    我在之前的博客中实现了页面的跳转,在iOS中实现这功能是十分简单方便的。...(1)在第二页面中拖拽一按钮,写上“返回”。然后打开这ViewController对应的继承于UIViewController的swift类,注意是点击
  • Android 返回键取消dialog的监听

    千次阅读 2016-01-14 10:57:23
    今天做一返回键取消下载更新,本以为用onBackPressed或者onKeyDown就可以监听到,但是发现并不行,后来又想在对话框取消后会执行Activity的onResume生命周期,又不行,发现是在被另外一Dialog类型的Activity...
  • 1.先下载mui.js,直接在vue项目中的index.html页面中引入进来2.在index.html中加入下面的代码<script> mui.init({ swipeBack: false, //关闭右滑关闭功能(默认就是false) keyEventBind: { back...
  • android中如何实现连续点击返回键退出整个应用
  • 它不是回到之前的页面,而是启动了新的应用,之前的页面也没有被kill掉,按下返回键还是会回退到之前的页面,等于是打开了两相同的应用! 解决方案:这问题困扰了我很久,也查找了很多资料,也没有得到解决...
  • 下载器中间件简介 自定义下载器中间件 RandomUserAgentMiddleware RandomProxyMiddleware 激活下载器中间件 内置下载器中间件 CookiesMiddleware DefaultHeadersMiddleware DownloadTimeoutMiddleware ...
  • 电脑进入游戏怎么返回桌面

    千次阅读 2021-06-26 07:00:06
    Alt+ Ctrl + Esc可以返回桌面4,CTRL + ALT + DEL启动任务管理器5,Windows启动开始菜单6,alt +输入游戏窗口之后 在计算机上输入cf游戏,请按什么您可以返回桌面_Microsoft图标+ D,同时立即按一下...
  • win7一还原按哪个_win7一还原

    千次阅读 2021-07-27 01:23:20
    2.安装完成这还原软件之后,然后就进入了软件的功能界面,由于还原系统的时候必须要有一Ghost镜像文...2017-03-19 12:57:40联想一还原是挨着电源旁边的,有一小小的的,图标是一个返回箭头的...
  • 由以上分析可以掌握最终返回按键的处理过程,如何结束当前 Activity 的,接下来要实现二次按返回键再关闭当前 Activity , 先声明当前主线程下的 Handler: Handler handler=new Handler(); 接下来重载 onKeyDown ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 194,621
精华内容 77,848
关键字:

下载个返回键

友情链接: gundong.rar