Delphi XE5 进行Android开发,实现Toast提示功能的源代码,很好用!
2025-08-27 11:31:21 3KB Delphi
1
在Android开发中,实现一个无需额外权限的悬浮窗功能是一个常见的需求,特别是在打造辅助工具或者个性化应用时。本文将详细讲解如何在Android系统4.4(API Level 19)及以上版本实现这样的功能,主要涉及的技术点是使用`TYPE_TOAST`窗口类型。 我们需要了解Android中的窗口类型。在Android中,每个应用都运行在一个独立的进程中,窗口则是应用与用户交互的界面。`TYPE_TOAST`是一种特殊的窗口类型,通常用于显示短暂的通知信息,它不会占用用户太多注意力,而且默认情况下可以在任何界面上显示,无需申请悬浮窗权限。 实现悬浮窗的核心代码通常包含以下几个步骤: 1. 创建一个悬浮窗布局:在XML文件中设计悬浮窗的UI结构,例如包含一个ImageView或TextView,以展示所需内容。 ```xml ``` 2. 创建悬浮窗类:继承自`Service`,并重写`onStartCommand()`方法,用于处理服务启动命令。在该类中,我们需要创建一个`WindowManager.LayoutParams`对象,设置其类型为`TYPE_TOAST`,并添加到窗口管理器中。 ```java // FloatService.java public class FloatService extends Service { private WindowManager windowManager; private View floatView; @Override public void onCreate() { super.onCreate(); windowManager = (WindowManager) getSystemService(WINDOW_SERVICE); floatView = LayoutInflater.from(this).inflate(R.layout.my_float_view, null); // 设置悬浮窗参数 WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.TYPE_TOAST, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, PixelFormat.TRANSLUCENT); layoutParams.gravity = Gravity.TOP | Gravity.LEFT; // 初始位置 layoutParams.x = 0; // 横坐标 layoutParams.y = 100; // 纵坐标 windowManager.addView(floatView, layoutParams); } // ...其他方法如onStartCommand(), onDestroy()... } ``` 3. 添加权限:虽然`TYPE_TOAST`类型的窗口不需要单独的悬浮窗权限,但还需要在AndroidManifest.xml中声明服务权限。 ```xml ... ... ... ``` 4. 启动悬浮窗:在需要显示悬浮窗的地方,启动服务。例如在Activity中,可以通过以下方式启动`FloatService`: ```java startService(new Intent(this, FloatService.class)); ``` 5. 处理悬浮窗的交互:在悬浮窗类中,可以为UI元素添加监听器,以响应用户的点击和拖动事件。例如,可以监听点击事件来关闭悬浮窗,或者监听触摸事件来实现拖动。 ```java floatView.setOnClickListener(v -> stopSelf()); // 关闭服务,即隐藏悬浮窗 floatView.setOnTouchListener((v, event) -> { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: // 记录初始触摸位置 downX = event.getX(); downY = event.getY(); break; case MotionEvent.ACTION_UP: // 更新悬浮窗位置 updatePosition(event.getX(), event.getY()); break; case MotionEvent.ACTION_MOVE: // 拖动悬浮窗 updatePosition(event.getX(), event.getY()); break; } return true; // 吸收事件,避免其他视图处理 }); private void updatePosition(float newX, float newY) { int dx = (int) (newX - downX); int dy = (int) (newY - downY); // 更新位置 layoutParams.x += dx; layoutParams.y += dy; windowManager.updateViewLayout(floatView, layoutParams); } ``` 以上就是实现一个无需权限的悬浮窗功能的基本步骤。需要注意的是,尽管`TYPE_TOAST`类型的窗口在大部分设备上都可以正常工作,但某些定制的Android ROM(如MIUI、锤子OS、Flyme等)可能会有自己的限制,可能需要额外的适配工作。此外,对于Android 8.0及以上版本,由于系统的限制,长时间显示`TYPE_TOAST`类型的窗口可能会被系统自动关闭,因此在实际应用中可能需要考虑其他类型的窗口,例如`TYPE_PHONE`或`TYPE_APPLICATION_OVERLAY`,但这通常需要申请相应的权限。
2025-07-31 06:34:02 49KB android TYPE_TOAST
1
vue自定义全局弹出询问框、输入框、提示框、toast,main.js引用后全局使用,涉及遮罩层样式,自定义组件,子组件套用组件,子组件调用父组件方法,组件属性监听,输入框默认获得焦点,输入框数据双向绑定、组件注册
2023-04-19 16:39:07 946KB vue 组件化
1
maxs.alert.js是本人的轻量级的弹窗框架,主要封装了输入弹窗,提示弹窗,loading,toast四种常用提示框。maxs.alert.min.js文件大小仅仅7KB,加载速度快。若使用者发现框架问题,欢迎吐槽!!!
2023-03-09 14:57:11 5KB 弹窗 提示框 loading toast
1
qt for android 实现Toast弹窗,本地通知栏显示,弹出在后台的界面以及加入资源系统白名单
2022-11-11 18:25:40 39.56MB qt android
1
qt版本5.10,代码例程采用两种方式实现安卓系统app的toast效果,一种是调用Android原生的方式,一种是自建类实现仿toast方式,欢迎下载学习,适合新手
2022-11-07 15:12:05 46.5MB toast qt for Androi
1
android 自定义动画toast源码.rar
2022-11-02 17:04:34 3.07MB android
Android 五种不同的Toast效果源码.rar
2022-11-01 15:03:58 118KB android
Android自定义Toast提示信息工具类,可以实现如下功能: 1、最简单Toast显示 2、自定义图标、图标颜色 3、自定义文本颜色 4、自定义背景颜色 5、设置组件水平、垂直显示位置 6、设置边框宽度、边框颜色
2022-10-23 13:06:34 60KB android Toast 自定义Toast样式
1
基本控件案例集锦,Button,TextView,EditText,Toast,RadioButton 基本控件案例集锦,Button,TextView,EditText,Toast,RadioButton 基本控件案例集锦,Button,TextView,EditText,Toast,RadioButton 基本控件案例集锦,Button,TextView,EditText,Toast,RadioButton 基本控件案例集锦,Button,TextView,EditText,Toast,RadioButton 基本控件案例集锦,Button,TextView,EditText,Toast,RadioButton 基本控件案例集锦,Button,TextView,EditText,Toast,RadioButton 基本控件案例集锦,Button,TextView,EditText,Toast,RadioButton 基本控件案例集锦,Button,TextView,EditText,Toast,RadioButton 基本控件案例集锦,事件监听,事件监听,事件监听,事件监听
2022-10-04 09:05:15 958KB 安卓 移动设备 Button Toast
1