Android_自定义样式全局Toast

Flutter中 EasyLoading - 让全局Toast或Loading更简单 前言 Flutter是Google在2017年推出的一套开源跨平台UI框架,可以快速地在iOS、Android和Web平台上构建高质量的原生用户界面。Flutter发布至今,不可谓不说是大受追捧,吸引了大批App原生开发者、Web开发者前赴后继的投入其怀抱,也正由于Flutter是跨平台领域的新星,总的来说,其生态目前还不是十分完善,我相信对于习惯了原生开发的同学们来说,找轮子肯定没有了那种章手就莱的感觉。比如说这篇文章即将讲到的,如何在Flutter应用内简单、方便的展示Toast或者Loading框呢? 阅读详情

Android自带的toast样式不太好看,UI妹子可能会自己设计一个全局的提示,如图:

这时候就需要用到CustomView和toastUtil工具类了

一 : customView:

public class CustomToast extends Toast {

    TextView textView;
    /**
     * Construct an empty Toast object.  You must call {@link #setView} before you
     * can call {@link #show}.
     *
     * @param context The context to use.  Usually your {@link Application}
     *                or {@link Activity} object.
     */
    public CustomToast(Context context) {
        super(context);
        init(context);
    }

    private void init(Context context) {
        View view = View.inflate(context, R.layout.layout_toast,null);
        textView = (TextView) view.findViewById(R.id.content);
        setView(view);
    }

    @Override
    public void setText(CharSequence sequence){
        textView.setText(sequence);
    }

    @Override
    public void setText(int resId) {
        textView.setText(resId);
    }

}

二 :ToastUtil

public class ToastUtil extends Toast{
    private static String oldMsg;
    protected static Toast toast = null;
    private static long oneTime = 0;
    private static long twoTime = 0;

    /**
     * Construct an empty Toast object.  You must call {@link #setView} before you
     * can call {@link #show}.
     *
     * @param context The context to use.  Usually your {@link Application}
     *                or {@link Activity} object.
     */
    public ToastUtil(Context context) {
        super(context);
    }

    public static void showToast(Context context, int resId) {
        showToast(context, context.getString(resId));
    }

    public static void showToast(Context context, int resId, int gravity) {
        showToast(context, context.getString(resId), gravity, 0, 0);
    }

    public static void showToast(Context context, String s, int gravity) {
        showToast(context, s, gravity, 0, 0);
    }

    public static void showToast(Context context, int resId, int gravity, int offX, int offY) {
        showToast(context, context.getString(resId), gravity, offX, offY);
    }

    public static void showToast(Context context, String s) {
        if (TextUtils.isEmpty(s)){
            return;
        }
        if (toast == null) {
            toast = new CustomToast(context);
            toast.setText(s);
            toast.setDuration(Toast.LENGTH_SHORT);
            toast.setGravity(Gravity.CENTER,0,0);
            toast.show();
            oneTime = System.currentTimeMillis();
        } else {
            twoTime = System.currentTimeMillis();
            if (s.equals(oldMsg)) {
                if (twoTime - oneTime > Toast.LENGTH_SHORT) {
                    toast.show();
                }
            } else {
                oldMsg = s;
                toast.setText(s);
                toast.show();
            }
        }
        oneTime = twoTime;
    }


    public static void showToast(Context context, String s, int gravity, int offX, int offY) {
        if (toast == null) {
            toast = new CustomToast(context);
            toast.setText(s);
            toast.setDuration(Toast.LENGTH_SHORT);
            toast.setGravity(gravity, offX, offY);
            toast.show();
            oneTime = System.currentTimeMillis();
        } else {
            twoTime = System.currentTimeMillis();
            if (s.equals(oldMsg)) {
                if (twoTime - oneTime > Toast.LENGTH_SHORT) {
                    toast.show();
                }
            } else {
                oldMsg = s;
                toast.setText(s);
                toast.show();
            }
        }
        oneTime = twoTime;
    }
}
三:自定义样式Xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/bg_anjian_toast"
    android:gravity="center"
    android:orientation="vertical">

    <TextView
        android:id="@+id/content"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingBottom="30dp"
        android:paddingLeft="50dp"
        android:paddingRight="50dp"
        android:paddingTop="30dp"
        android:textColor="#fff"
        android:textSize="18dp" />

</LinearLayout>

安卓版的提醒事项软件开发 老板发言: 现在需要你做一个基于安卓的app。app的功能是:用户可以在app上设置提醒事项,提醒事项包括时间和提醒内容,然后在APP页面可以看到提醒时间的倒计时,然后在设置的提醒事项时间到了之后,可以实现在手机上进行弹窗提醒,就像ios里面的软件提醒事项一样。 阅读详情

相关推荐

应急响应之windows日志分析工具logparser使用

windows日志分析工具logparser使用介绍

u013930899的博客 8123

57、android 应用内全局通知的实现方法

1、后台运行一个服务 间隔5s从服务器获取一次数据,根据业务需要,当需要提醒给用户时,从右侧自动划出 类似效果如下:在任何界面都会有通知弹窗 2、实现过程 ①android的根布局叫dector(获取方式为:window.getDecotrView()), ②在activity中setContView设置的activity布局,可以通过dector.getChi...

weixin_33700350的博客 592

AOSP Android14 Launcher3——动画核心类QuickstepTransitionManager详解

是一个复杂但核心的动画管理器。它利用 Android 的远程动画机制,拦截系统默认的窗口切换,并替换为高度定制、与 Launcher UI 深度集成的平滑过渡动画。当用户从一个应用程序通过手势或按键返回到 Launcher (桌面) 时,它负责创建和运行动画,使得应用程序窗口能够平滑地过渡(通常是缩小)到 Launcher 上的对应目标(图标、小部件或屏幕中心),同时 Launcher 界面元素(工作区、背景等)恢复显示。计算动画所需的各种参数,如窗口的起始/结束位置、缩放比例、透明度、圆角、裁剪区域等。

Micheal_Yang's Blog 2667

自定义VIEW实现应用内消息提醒上下轮播

开题贴上这张图,相信我不解释今天分享的内容,大家也已经知道了,接下来我就结合代码为大家讲解一下,这个消息自动轮播VIEW的具体实现方式。 需求分析: 1.在ITEM上随着一条消息滑出之后,下一条消息自动滑入。 2.消息轮播可循环 3.ITEM上绑定点击事件,点击对应的ITEM,TOAST相对应的消息内容。 实现分析: 自定义VIEW继承自FrameLayout,利用Animatio...

谢栋的专栏 1513

防雷防浪涌电路设计

通信线路或者电源线路通常会铺设到户外,一旦线路铺到户外后,就需要考虑防雷的问题了,那么怎么设计保护电路,能够防止雷电等浪涌对电路的破坏呢?

manhuami2007的博客 1万+

airodump-ng、aircrack-ng使用教程

wifi破解、airodump-ng、aircrack-ng脚本

ssmbyss的博客 2232

android源码学习-Toast实现原理讲解

Toast的全流程讲解,包含原生Toast和自定义Toast两种方式。 Toast相关的常问的知识点以及使用Toast过程中频繁遇到的问题和解决方案。

分享+记录 5425

Keil uVision5 STM32 startup_stm32f10x_md_vl.s error A3906U Malformed via file target not created..

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 2773

Toast,点击事件,ImageButton,RadioButton,CheckBox

androidautoText----------------如果设置,则指定此TextView具有文本输入法,并自动纠正一些常见的拼写错误。androiddrawableRight----------------这是要在文本右侧绘制的图形。androidbackground--------------这是一个可绘制的背景。androidtext--------------这是要显示的文本。常用属性(radiobutton)常用属性(radiogroup)...

qq_41738599的博客 786

多目标优化AI Agent:增强LLM的复杂决策能力

在人工智能领域,尤其是自然语言处理(NLP)和大语言模型(LLM)的应用中,决策问题往往涉及多个目标的平衡与优化。例如,在智能客服系统中,既要提高客户满意度,又要降低运营成本;在自动驾驶中,既要确保安全,又要追求行驶效率。传统的单目标优化方法难以满足这种复杂场景的需求,因此多目标优化成为了一种必然趋势。AI Agent是一种智能系统,能够通过感知环境、处理信息并采取行动来实现特定目标。它可以是一个软件程序,也可以是一个物理设备。NSGA-II:一种基于群体的多目标优化算法,通过遗传算法的思想进行迭代优化。

AI天才研究院 1300

使用Qt和MX Component插件实现与菱PLC的通信

在本文中,我们介绍了如何使用Qt和MX Component插件实现与菱PLC的通信。我们首先安装和配置了MX Component插件,并在Qt项目中初始化和使用MX Component来连接、读取和写入PLC的数据。安装完成后,您需要在Qt项目中配置MX Component的路径,以便Qt可以找到所需的库文件。在本文中,我们将探讨如何使用Qt和MX Component插件来实现与菱PLC的通信。在主函数中,我们将初始化MX Component,并创建一个与PLC通信的示例。在上面的代码中,我们使用了。

TlScratch的博客 996

android全局toast,全局Toast和Snackbar

在项目中遇到,图片下载的方法封装在imageUtils类中,下载要用Toast到提醒。如果在activity中可以用runOnUiThread和Handler来显示提醒,现在不是在activity,又不想在imageUtils中用Handler。所以想到如果有个全局的Toast就方便多了。先上效果图:Toast.gif全局Toast:1. 支持默认格式,自上向下布局为ImageView,TextV...

weixin_35489715的博客 1042

ASM准入小助手卸载没有密码的方法:读取明文密码2024年7月有效

在一次工作过程中,电脑中意外的安装了一个ASM准入小助手软件,工作结束以后回来发现没有卸载,然后就决定把它卸载掉,但是居然给了我一个大大的提示框:由于联系不到当时给我安装的那个人了,所以一时陷入了焦灼的状态,因为我安装另一个终端准入,会直接提示冲突了。所以经过注册表(regedit)、任务管理器等各种折腾之后,最后都失败了,然后想起了多年前在吾爱论坛学到过的东西,最后意外的找到了密码,然后就完美成功卸载了。

布啦啦 7804

adpater里写toast_Android App中使用全局Toast

在自定义的单例Application中添加如下代码:public class BaseApp extends Application {//.....自己的其他代码,该BaseApp必是单例的// 全局的 handler 对象private final Handler APPHANDLER = new Handler();// 全局的 Toast 对象private FlexibleToast f...

weixin_39684995的博客 155

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

android 自定义类似toast的view,Android自定义Toast,并解决toast不重复显示

1、Android自带的Toast样式固定,这里我们对其简单的封装。自定义一个适应我们需求的ToastprivatevoidcreateToastWindow(Stringtext){LayoutInflaterinflater=LayoutInflater.from(App.getContext());Viewview=inflater.inflate(R.layout.to...

weixin_36337561的博客 739

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

android 自定义样式 Toast 实现(兼容 Android 4.1+~Android 16(API 16))

摘要:ToastManager是一个兼容Android16+的Toast工具类,支持系统默认和自定义样式切换。核心功能包括:1)通过STYLE_DEFAULT/STYLE_CUSTOM切换样式;2)自定义布局(toast_custom.xml)和背景(toast_bg.xml);3)线程安全处理,使用ApplicationContext避免内存泄漏;4)自动取消和全局样式设置。使用Handler确保主线程显示,通过volatile保证多线程安全。调用方式简洁,如showShortToast()/showLo

u013519290的博客 271

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

安卓项目实战之:基于Toasty库封装的精美的Toast工具类

toasty的使用以及简单封装:https://www.jianshu.com/p/91d4b6d03d6d https://github.com/GrenderG/Toasty https://github.com/Muddz/StyleableToast 其中StyleableToast可以实现Toasty的样式,更灵活,我们可以下载Toasty的源码拿到其的图片素材。 ...

智玲君 2268

Toast太丑,散落到各处无法统一更改,试试使用类加载器动态替换Toast.class

Android的提示主要使用Toast.makeText().show,方便又快捷,所以大多数时候我们都是在需要弹出对话框的地方直接这样时候。不过后来项目样式改版,发现Toast的提示方式不符合要求了。这个时候通常的做法,是对每一个地方进行替换,不过因为代码散布到各个地方,修改起来太复杂。今天实现另外一种实现,不仅仅可以用于Toast,这个一种思路,可以扩展到其他方面,比如全局关闭Log等。 首

zhangzheng0602的博客 1030

Flutter 全局Toast解决方案:fluttertoast 9.0.0 全平台集成与实战

FlutterToast 9.0.0使用指南:提供无上下文和有上下文两种Toast实现方案。无上下文Toast适用于Android/iOS/Web简单提示场景,集成快速但功能有限;有上下文Toast支持全平台、自定义UI和队列管理,适合复杂需求。文章详细介绍了两种模式的配置方法、使用场景和注意事项,包括如何通过NavigatorKey实现全局上下文访问。特别提醒Android 11+系统对无上下文Toast样式的限制,并针对常见问题给出解决方案,帮助开发者灵活选择适合项目的Toast实现方式。

2501_93396617的博客 1111

Toast与Notification的使用

Toast 概念 在系统中,通过对话框可以对用户的某些操作进行提示,在Android平台中还提供了另外一套更加友好的界面效果,而这种界面在提示用户时不会打断用户的正常操作,这种对话框可以通过Toast组件实现。 创建Toast对象 public static Toast makeText(Context context, CharSequence text,int duration); 简单Toa

love超1314的专栏 2399

03、对话框 & Toast & 悬浮窗

一、对话框 1.1、基本使用流程 Step1:创建AlertDialog.Builder对象; Step2:调用setIcon()设置图标,setTitle()或setCustomTitle()设置标题; Step3:设置对话框内容:setMessage()或其他方法指定显示的内容; Step4:调用setPositive/Negative/NeutraButton()设置确定...

weixin_33778778的博客 226

Flutter EasyLoading 使用教程

Flutter EasyLoading 是一个简单易用的 Flutter 插件,旨在简化全局 Toast 和 Loading 框的展示。该插件包含 23 种 loading 动画效果、进度条展示和 Toast 展示,完全在 Flutter 端实现,支持 iOS、Android 和 Web 平台。 ## 项目快速启动 ### 安装 首先,将以下代码添加到您项目中的 `pubspec.yaml`

gitblog_00308的博客 659

Flutter OKToast 使用教程

Flutter OKToast 使用教程 项目介绍 Flutter OKToast 是一个用于在 Flutter 应用中显示 Toast 消息的开源库。它提供了简单易用的 API,支持自定义 Toast 的样式和位置,适用于 Android 和 iOS 平台。该项目旨在提供一个轻量级且灵活的 Toast 解决方案,使开发者能够快速集成并使用 Toast 功能。 项目快速启动 安装依赖 首先,在您的...

gitblog_00264的博客 606

【Android】开发小经验2(待更新)

1. Application类

爱臭美的程序猿 713

Toaster完整指南:10分钟掌握iOS端Android风格Toast提示

Toaster是一款专为iOS开发者设计的轻量级提示组件,能够在iOS应用中快速实现类似Android系统的Toast提示效果。本文将带你快速掌握这个实用工具的安装配置和基础使用方法,让你的应用拥有简洁优雅的用户反馈机制。 ## 为什么选择Toaster? 在移动应用开发中,轻量级提示是提升用户体验的关键元素。Toaster作为Swift编写的iOS提示组件,具有以下核心优势: - **体积

gitblog_00447的博客 326
上一篇: Android_textView验证码倒计时
下一篇: Android_EditText输入字数限制与监听
ParkSiHoo_
博客等级 码龄10年 20粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值