Android 长按文本弹出输入框

1.设置长按时间

java 复制代码
 //长按五秒事件
    private void startLongClickTimer() {
        if (longClickRunnable == null) {
            longClickRunnable = new Runnable() {
                @Override
                public void run() {
                    // 在这里执行长按事件
                    showPasswordDialog();
                    Toast.makeText(UseSmileActivity.this, "长按事件触发", Toast.LENGTH_SHORT).show();
                }
            };
        }
        // 延迟五秒钟执行长按事件
        handlerBack.postDelayed(longClickRunnable, 5000); // 5000 毫秒即五秒钟
    }

2、删除计时器

java 复制代码
 //抬起手指删除计时器
    private void cancelLongClickTimer() {
        if (longClickRunnable != null) {
            handlerBack.removeCallbacks(longClickRunnable);
        }
    }

3、弹出的密码输入框与业务逻辑

java 复制代码
 //弹出密码输入框
    private void showPasswordDialog() {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("输入密码后退出");
        // 设置密码输入框
        final EditText input = new EditText(this);
        builder.setView(input);
        builder.setPositiveButton("确定", (dialog, which) -> {
            String password = input.getText().toString().trim();
            if (checkPassword(password)) {
                // 密码正确,执行相应操作
                Toast.makeText(UseSmileActivity.this, "密码正确", Toast.LENGTH_SHORT).show();
                finish();
                // 这里可以执行密码验证通过后的操作
            } else {
                // 密码错误,给出提示
                Toast.makeText(UseSmileActivity.this, "密码错误", Toast.LENGTH_SHORT).show();
            }
        });

        builder.setNegativeButton("取消", (dialog, which) -> {
            dialog.cancel();
        });

        // 显示 AlertDialog
        builder.show();
    }

4、文本绑定事件

java 复制代码
 TextView info5 = (TextView) findViewById(R.id.info5);
        info5.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                        // 按下时启动计时器
                        startLongClickTimer();
                        return true;
                    case MotionEvent.ACTION_UP:
                    case MotionEvent.ACTION_CANCEL:
                        // 抬起或取消时移除计时器
                        cancelLongClickTimer();
                        return true;
                }
                return false;
            }
        });
相关推荐
邪修king2 小时前
Re:Linux 系统篇(三十五):进程间通信Chapter2:从匿名管道到进程池:Linux 进程间通信实战(深度理解「先描述,再组织」)
java·linux·运维
拆房老料2 小时前
【第四部分:Agentic 智能体设计模式】16. 一个 Prompt 搞不定复杂任务?试试 Prompt Chaining
java·前端·人工智能·设计模式·prompt
张张123y3 小时前
后端第十四课:Agent 记忆系统(让 Agent 记住上下文和用户,跨会话不健忘)
java·大数据·人工智能·python·agent·记忆
阿里嘎多学长7 小时前
2026-10-20 GitHub 热点项目精选
开发语言·程序员·github·代码托管
曹牧8 小时前
C#:空合并运算符
java·前端·数据库
布吉岛的石头8 小时前
Java 程序员第 50 阶段2:预训练的目标函数:自回归语言建模本质
java·开发语言·人工智能·深度学习·回归·transformer
golang学习记8 小时前
IDEA 2026年的玩法已经完全不同
java·ide·intellij-idea
小羊没烦恼!8 小时前
铁道部新客票系统设计(二)
开发语言·前端·数据库·python·oracle·c#·php
紧跟先前的步伐9 小时前
Go AI Agent 实战 05|Temperature 与生成参数:让模型输出可控
java·人工智能·golang
金銀銅鐵9 小时前
[Java] 展示添加元素时 ArrayList 的内部变化
java·后端·ai编程