自定义不依赖于Activity的Toast

Android Activity间数据回调:startActivityForResult原理与实战 在Android应用开发中,组件间通信是构建交互式应用的基础。Activity作为核心组件,其间的数据传递与回调机制是实现复杂业务流的关键。通过Intent进行数据封装与传递,结合请求码(requestCode)和结果码(resultCode)的契约模式,构成了一个清晰的异步回调模型。这一机制的技术价值在于解耦了界面跳转与结果处理,使得数据流向可控、逻辑清晰。其典型应用场景包括用户信息编辑、图片选择、权限申请后的结果回调等。本文以用户信息编辑为例,深入剖析了startActivityForResult与on 阅读详情

应用场景:
1.常规应用
2.App处于后台时,需要Toast就可以在Service里使用下面的方法,这个Toast依赖的是窗体而不是Activity

权限:

<!--在窗体上挂载View-->
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
/**
 * 自定义Toast类
 * Created by Administrator on 16-11-28.
 */
public class Toast {
    //挂载的View
    private static View view=null;
    //窗体管理对象
    private static WindowManager mWM=null;

    /**
     * 显示自定义的Toast
     * @param context 上下文
     * @param layout  自定义的布局
     */
    public static void showCustomToast(Context context,int layout){
        //1.如果已经显示,就不显示了
        if(mWM!=null&&view!=null){
            return;
        }
        //2.获得窗体管理对象
        mWM=(WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
        //3.布局加载为View
        view = LayoutInflater.from(context).inflate(layout, null);
        //4.定义view的属性
        WindowManager.LayoutParams mParams = new WindowManager.LayoutParams();
        mParams.height = WindowManager.LayoutParams.WRAP_CONTENT;//高
        mParams.width = WindowManager.LayoutParams.WRAP_CONTENT;//宽
        mParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE//不能获取焦点
                |WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE//不能触摸(默认是可以触摸的)
                | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;//屏幕开启才能看到
        //格式
        mParams.format = PixelFormat.TRANSLUCENT;
        //显示级别:和Toast级别一致
        mParams.type = WindowManager.LayoutParams.TYPE_TOAST;
        //显示位置:右上角
        mParams.gravity = Gravity.RIGHT + Gravity.TOP;
        //5.挂载到窗体
        mWM.addView(view,mParams);
    }

    /**
     * 移除窗体上挂载的View
     */
    public static void removeCustomToast(){
        if(mWM!=null&&view!=null){
            mWM.removeView(view);
            //重置为null,防止两次取消报错
            mWM=null;
            view=null;
        }
    }
}
Android中不依赖Activity实现全局对话框的多种技术方案 创建全局对话框的一个有效方式是通过继承Android的Dialog类并实现自定义的布局与行为。与传统的AlertDialog相比,自定义Dialog提供了更多的灵活性。通过继承Dialog类,我们可以控制Dialog的大小、样式、布局和生命周期等。这允许开发者在保持Dialog的独立性的同时,实现复杂的用户交互。下面是一个基础的自定义Dialog类实现示例代码:init();// 设置Dialog的布局// 设置Dialog的宽度和高度为屏幕的百分之多少。 阅读详情

相关推荐

不依赖于Activity的Android全局悬浮窗的实现

前言 当我们在手机上使用360安全卫士时,手机屏幕上时刻都会出现一个小浮动窗口,点击该浮动窗口可跳转到安全卫士的操作界面,而且该浮动窗口不受其他activity的覆盖影响仍然可见(多米音乐也有相关的和主界面交互的悬浮小窗口)。那么这种不受Activity界面影响的悬浮窗口是怎么实现的呢? Android悬浮窗实现 实现基础 Android悬浮窗实现使用WindowManager WindowManager介绍   通过Context.getSystemService(Context.WINDOW_SERVICE)可以获得 WindowManager对象。 每一个WindowManager对象

Android中在非Activity中添加Toast等View控件问题的解决方法

一般写程序主函数很长会不美观,更不好阅读!解决方法当然写到子类里,或建个方法去出来,但有网友可能遇到和博主同样的问题,像Toast,Dialog或者Button、TextView这些在Activity里才能使用的控件到了非Activuty使用总会出错。。。很是头疼,博主前段时间也是困惑了很长时间,终于找到方法,百试不爽。。。这都源于java基础的薄弱啊。。。没办法,好多童鞋和博主一样有点C的基础就

handsomeslow 3271

如何在STM32上5分钟搞定nanopb协议传输?附完整代码示例

本文提供了在STM32微控制器上快速集成nanopb协议传输的实战指南。通过详细的步骤,从.proto文件定义、代码生成到STM32CubeIDE项目移植,帮助开发者利用nanopb这一轻量级Protocol Buffers C语言实现,在5分钟内构建高效、跨平台的嵌入式设备通信框架,并附有完整的代码示例。

jwt8token的博客 839

如何自定义Toast,不依赖于Activity,即使Activity被销毁也可以挂载在窗体上

问题描述:因为Toast是可以不依赖于Activity而存在的,所以设想以下情景,当我们在Activity上弹出土司后,一旦Activity的onDestory()方法执行,自定义土司依然可以存在,如何实现? 分析:要想实现上面这个需求,从大的方面来说需要考虑三点:(1)如何自定义我们的土司控件;(2)如何使得自定义土司控件在Activity被销毁的时候也能存在于窗体上;(3)如何使得自动以土司

Logan的博客 1224

新手避坑指南:用COMSOL Multiphysics仿真气体放电(汤逊vs.流注)

本文详细介绍了使用COMSOL Multiphysics仿真气体放电的实战指南,涵盖汤逊理论和流注模型的实现方法。通过对比两种放电模型的关键参数和物理场配置,帮助新手避免常见错误,准确预测气体击穿过程。文章还提供了工程应用案例,如高压绝缘子设计优化,展示了仿真技术在电力设备绝缘设计中的实际价值。

weixin_28716181的博客 473

STM32CubeMX最新版下载安装全攻略(附官网访问问题解决方案)

本文提供了STM32CubeMX最新版的详细下载与安装指南,并针对国内开发者常见的官网访问缓慢、注册验证邮件延迟等问题,给出了实用的解决方案和备选策略。通过清晰的步骤解析,帮助用户快速部署这一强大的STM32图形化配置工具,从而高效启动嵌入式开发项目。

weixin_28256233的博客 196

Android中Toast的使用

Toast简介  Toast是一种没有交点,显示时间有限,不能与用户进行交互,用于显示提示信息的显示机制,我们可以把它叫做提示框。Toast是没有依赖性的,大家可能比较了解Dialog等其他显示方式,他们是必须依赖于Activity的,必须通过在Activity中的调用才可以使用。而Toast则不依赖于Activity,也就是说,没有Activity,依然可以使用Toast。      Andr

To_be_Designer 3834

Transformer实战(5)——Hugging Face环境配置与应用详解

本文详细介绍 Transformer 模型的实践应用全流程。首先讲解基于 Anaconda 的环境配置,包括 transformers 库安装及 hf-mirror 镜像加速方案。然后以 BERT 为例,演示分词器使用、文本编码及 fill-mask 等任务实现,对比 PyTorch/TensorFlow 框架差异。接着展示 Hugging Face 社区模型应用,包括 GPT-2 文本生成和零样本分类。最后扩展至多模态领域,使用 CLIP 模型实现零样本图像分类。

盼小辉丶的博客 1万+

AndroidStudio|在不继承Activity的类中实现Toast

方法一:将MainActivity或者继承自Activity的类实现单例           方法二:实现一个继承自Application的类,获取context实现共享;并且在AndroidManifest文件中设置好Application的Android:name。                ...

该用户还没想到好的昵称的博客 1201

硬方案——几种实用的恒流源电路设计方案,敬请收藏(运放、三极管在手,让你玩出多种花样)

0 引言 我们在信号测量、供电等应用场景时常会涉及到使用恒流源,以前觉得恒流源挺神奇的,研究了下实现方案,其实也没有多么高深(这里讨论的仅限于用在信号测量中的小电流恒流源设计),这里给出几个实用的恒流源电路设计方案。 1 恒流源电路设计 (1)使用三极管搭建的恒流源 (2)使用运放搭建的恒流源 (3)使用恒流二极管搭建的恒流源 pt100恒流源测温电路图_电子技术_电工之家 ...

数字世界 万物互联 9524

解决Android API 30+视频播放抖动问题

摘要:本文探讨了Android开发中使用ExoPlayer在API 30+设备上出现的视频抖动问题。作者发现API 30以下版本运行正常,但API 30及以上版本会出现画面不稳定现象。解决方案是改用TextureView替代SurfaceView,通过修改PlayerView配置并设置setUseTextureView(true)来增强播放稳定性。这一简单改动有效解决了API兼容性问题,为开发者提供了实用的解决方案。

m0_62153576的博客 118

android 自定义Toast & 如何使Toast随Activity消失而消失

自定义toast(包括带图片的toast以及 自定义底色和边框的Toast) 自定义位置的toast 在Activity中创建一个toast对象,然后: toast = Toast.makeText(getApplicationContext(), "自定义位置Toast",Toast.LENGTH_LONG); toast.setGravity(Gravity.CENTER, ...

weixin_30292745的博客 281

【好玩的游戏项目】使用Docker快速部署属于你的RPG网页小游戏

【好玩的游戏项目】使用Docker快速部署属于你的RPG网页小游戏

jks212454的博客 5577

android全局获取Context对象(在静态函数中实现toast)

全局获取Context对象的意义: 当应用程序的架构逐渐复杂起来的时候,很多逻辑代码都将脱离Activity或者Service,但是如果此时你又恰恰需要使用Context,这个时候就需要用到全局获取Context了。   举个例子,如果此时需要实现一个从网络获取图片的类,我有多个Activity,并且每个Activity都需要从网络获取图片。在图片无法获得的时候,我需要用Toast来提示用户...

许佳佳的博客 1万+

OpenClaw 钉钉和飞书集成方案研究 & OpenClaw 研究分析报告

OpenClaw(原名 Clawdbot,曾用名 Moltbot)是一款开源的个人 AI 智能体,采用"本地优先"设计理念。与传统聊天机器人不同,OpenClaw 具备真正的系统级执行能力,能够实际操作用户的计算机系统,完成各种实际任务。核心优势本地部署:所有数据存储在用户本地设备,隐私零泄露系统级执行:具备完整的系统访问权限,可执行文件操作、命令运行等全渠道交互:支持多种即时通讯平台作为交互界面开源透明:MIT 许可证,代码完全开放,社区驱动开发应用场景个人助理:日程管理、任务提醒、邮件处理。

AI天才研究院 2341

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

android中不依赖activity的dialog弹窗的实现

private void showUpdateSuccessDialog(){ final WindowManager wm = (WindowManager) AppContext.context.getSystemService(Context.WINDOW_SERVICE); WindowManager.LayoutParams para = new Window

u014583590的博客 8658

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Toast不显示原因

前几天调用别人的SDK建立一个登录界面时,想在回调函数中创建一个Toast来提醒用户登录成功破与否,但是在别人的回调函数中谢了Toast居然没有显示出来,到网上查了一下,发现原来是没有在最后加上.show()方法,现在显示了吧?没想到还是没有显示,最后在百度中找到了答案。 这里引用别人的话-------------》 Toast在创建的时候会依赖于一个Handler,并且一个Handler是需

CASER_HDMI的博客 4477

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Android Toast深度解析:从基础使用到源码机制与最佳实践

在Android应用开发中,用户反馈机制是提升交互体验的关键环节。Toast作为一种轻量级的全局提示组件,其核心原理是基于WindowManager的窗口系统,通过非阻塞方式在屏幕指定位置短暂显示信息。这一设计使其具备不依赖Activity生命周期、不中断用户操作的特性,在快速状态反馈场景中具有重要技术价值。理解Toast的线程安全要求、Context选择策略以及不同Android版本的行为差异,是避免常见崩溃和兼容性问题的关键。在实际开发中,Toast常与Handler、Looper等线程调度机制结合使用

weixin_34005042的博客 298

30. 【Android教程】吐司提示:Toast 的使用方法

在使用 Android 手机的时候,有没有遇到过如图中这种类型的消息提示?这个在 Android 中被称为 Toast,用来短暂的展示一些简短的提示信息。相比弹窗来讲它对用户的打扰更小,在提示一段时间之后会自动消失,通常用来提示当前的状态或者一些不太重要的信息。接下来我们先看看 Toast 的相关特性然后一起动手编写一些与 Toasts 相关的示例代码。

这是一个web全栈开发的博客,取其精华去其糟粕,争取让大家一看就懂,一学就会,一用就成~ 3797

Activity、Window、View三者关系

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34292959的博客 98

Android窗口机制(五)最终章:WindowManager.LayoutParams和Token以及其他窗口Dialog,Toast

转自:https://www.jianshu.com/p/bac61386d9bf 前面几篇文章基本介绍完Activity上的窗口机制,但是我们常见的窗口就还有Dialog,Toast这些,本篇文章就来介绍这两个的窗口机制以及WindowManager.LayoutParams和Token WindowManager.LayoutParams 首先,先跟大家介绍这个WindowManager.LayoutParams,在前面几篇文章中,都有出现过这个LayoutParams,我们看下具体的源码。.

王温暖的博客 1773

Unable to add window -- token null is not valid; is your activity running?

这个错误消息就是因为没有应用token导致的,而应用的token一般只有Activity有,所以这里我们只需要用。另外,dialog的显示是依赖于activity的context,无法在service服务类中直接调用。//弹出Popwindow 的代码。()) //不能用getApplicationContext()1,//title可以是该activity的任何View,:最好使用当前的mContext,如果没有,就可使用。//常见情形,创建弹窗的时候,抛异常代码。

qq_46687516的博客 1853

单Activity+多Fragment以及多模块Activity+多Fragment“的设计模式编写的架构

单Activity+多Fragment以及多模块Activity+多Fragment"的设计模式编写的架构Rocket一、特性二、Github地址三、分享设计Rockt架构的思路四、踩坑经验之旅1、Can not perform this action after onSaveInstanceState2、FragmentManager is already executing transacti...

博由心生,福泽一生 1846

浅谈SnackBar(Toast大兄弟)

SnackBar是 Android Support Library 22.2.1 里面新增提供的一个控件,我们可以简单的把它理解成一个加强版的Toast,或者是一个轻量级的Dialog。 特点: 1.SnackBar和Toast的用途一样,都是用来提示用户操作后的结果的。 2.SnackBar显示时位置一般是在屏幕底部,较大的设备就显示在左下角。 3.Snack...

defukwanmcth26174的博客 236
上一篇: 使控件可拖拽
下一篇: 控件连续点击两次及多次
Coke可乐
博客等级 码龄10年 0粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值