Android 彩色Toast实现
Android默认的Toast太丑了,我们来封装一个花里胡哨的Toast吧,就叫ColoredToast。
Github:https://github.com/imcloudfloating/DesignApp
效果:

Toast有一个setView方法,通过它我们可以设置自定义的布局,这里我只是加入了改变背景色,如果你有其它需求,比如加上图标也是可以的。
布局文件:一个FrameLayout和显示消息的TextView
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"> <TextView
android:id="@+id/toast_message"
android:layout_width="wrap_content"
android:layout_height="48dp"
android:paddingStart="32dp"
android:paddingEnd="32dp"
android:gravity="center"
android:textSize="18sp"
tools:text="This is a toast message" /> </FrameLayout>
2.Java代码:
用LayoutInflater来加载布局,然后用setView将布局设置为Toast的根View,通过自定义方法来设置Toast的消息和背景色,这里背景色是给TextView设置的,假如你想加上图标和其它元素,通过findViewById来设置即可。
这里我用的是GradientDrawable来作为Toast的背景,setColor方法背景色,setCornerRadius设置圆角半径,最后将他作为TextView的背景就可以了。如果你不想用它,也可以直接使用xml文件来作为背景,不过这样就不方便灵活设置颜色了。
package com.cloud.customviews; import android.content.Context;
import android.graphics.drawable.GradientDrawable;
import android.support.annotation.ColorRes;
import android.support.annotation.IntDef;
import android.support.annotation.NonNull;
import android.support.annotation.StringRes;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast; public class ColoredToast extends Toast { @IntDef(value = {
LENGTH_SHORT,
LENGTH_LONG
})
@interface Duration {} private ColoredToast(Context context) {
super(context);
} public static class Maker { private Context mContext;
private ColoredToast mToast;
private View mToastView;
private TextView mTextMessage; public Maker(Context context) {
mContext = context;
mToast = new ColoredToast(context);
mToastView = LayoutInflater.from(context).inflate(R.layout.toast_colored, null);
mTextMessage = mToastView.findViewById(R.id.toast_message);
} /**
* Set text color and background color for toast by resource id
*/
public Maker setColor(@ColorRes int textColor, @ColorRes int backgroundColor) {
GradientDrawable drawable = new GradientDrawable();
drawable.setColor(mContext.getColor(backgroundColor));
drawable.setCornerRadius(mTextMessage.getLayoutParams().height / 2);
mToastView.setBackground(drawable);
mTextMessage.setTextColor(mContext.getColor(textColor));
return this;
} /**
* Set position
* @see android.view.Gravity
*/
public Maker setGravity(int gravity, int xOffset, int yOffset) {
mToast.setGravity(gravity, xOffset, yOffset);
return this;
} public ColoredToast makeToast(@StringRes int resId, @Duration int duration) {
mTextMessage.setText(resId);
mToast.setView(mToastView);
mToast.setDuration(duration);
return mToast;
} public ColoredToast makeToast(@NonNull String text, @Duration int duration) {
mTextMessage.setText(text);
mToast.setView(mToastView);
mToast.setDuration(duration);
return mToast;
}
}
}
花里胡哨的Toast打造完成!
Android 彩色Toast实现的更多相关文章
- Android 更改 Toast 的默认位置
Android中Toast的默认位置在屏幕靠近底部的位置,这个默认位置有时候并不合适.比如页面上内容较少时,内容一般集中在屏幕上半部分,用户的注意力也集中在屏幕上半部分,默认位置的Toast用户可能没 ...
- Android --设置Toast消失时间
参考博客:Android开发,Toast重复显示(显示时间过长)解决方法 package com.dr.app.drseamoniter.toast; import android.content.C ...
- delphi android 中 Toast 的实现(老外写的UNIT)
unit Android.JNI.Toast; // Java bridge class imported by hand by Brian Long (http://blong.com)interf ...
- Android中Toast的用法简介
转自:http://www.cnblogs.com/GnagWang/archive/2010/11/26/1888762.html Toast是Android中用来显示显示信息的一种机制,和Dial ...
- Android的Toast介绍-android学习之旅(三十六)
Toast简单介绍 Toast是一个很方便的消息提示框.会在桌面显示一个短暂的消息提示.有两个特点: 1.消息不会获得焦点. 2.过一段时间会自己主动消失. Toast的生成步骤 1.调用构造器或者静 ...
- android 自定义Toast显示风格
1.创建一个自己想要显示Toast风格的XML如下代码(toast_xml.xml): <?xml version="1.0" encoding="utf-8&qu ...
- Cocos2d-x实现Android的Toast特征
1.Toast Android的Toast是View视图,显示少量的信息.主要用于一些提示和帮助.本文实现了Toast最主要的操作能, 代码例如以下: //PacToast.h #include &q ...
- Android开发Toast Notifications
Android开发Toast Notifications 关键类 Toast toast通知是一种在窗口表面弹出的消息.它只占用信息显示所需的空间,用户当前的activity仍保持可见并可交互.该通知 ...
- Unity调用安卓Android的Toast
需求:在游戏中弹窗消息,调起安卓的Toast 项目中需要做Unity和安卓交互时,经常需要通过安卓Toast来做简单的输出,以便于测试. 方法一:Unity中,C#主导 // Unity调用安卓的土司 ...
随机推荐
- python(leetcode)-66加一问题
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储一个数字. 你可以假设除了整数 0 之外,这个整数不会以零开头. 示例 1: 输入 ...
- 原生js的简单倒计时
<!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>倒计 ...
- Xamarin.Android ImageView 图片圆角显示
第一步:在 values 文件夹下新增 Attrs.xml 文件 <?xml version="1.0" encoding="utf-8" ?> & ...
- Jenkins系列之七——前端app自动打包
了两周终于搞掂了,期间各种搜教程.各种懵逼,各种坑对小白来还是很难的额.废话不多说直接开撸~~~ 一.介绍下什么是Gradle Gradle是一个基于JVM的构建工具,是一款通用灵活的构建工具,支持m ...
- Vue 项目 Vue + restfulframework
Vue 项目 Vue + restfulframework 实现登录认证 - django views class MyResponse(): def __init__(self): self.sta ...
- Leetcode 1-10
这篇文章介绍Leetcode1到10题的解决思路和相关代码. 1. Two sum 问题描述:给定一个整数数组,返回两个数字的索引,使它们加起来等于一个特定的目标. 例子: Given nums = ...
- arcgis 加载png图片实现图片跟随地图缩放 和图片的动态播放
效果图: 主要原理: png加载到地图上是不可能的, 图像本身是没有地理信息的. 这里采用一种办法, 在地图上创建一个图形图层, 图形图层放一个矩形,给这个矩形用一个图片填充符号填充. 关键技术点: ...
- 【Flask-RESTPlus系列】Part1:快速入门
0x00 内容概览 Flask-RESTPlus安装 快速入门 初始化 一个最简单的API示例 资源路由 端点 参数解析 数据格式化 顺序保留 完整例子 0x01 Flask-RESTPlus安装 1 ...
- 【前端框架系列】浅谈当前基于bootstrap框架的几种主流前端框架
一 概述 当新开发一个项目或产品时,技术选型是一个不可缺少的环节,在软件架构中有着举足轻重的作用,可以这么说,技术选型的好坏直接影响项目或产品的成败优劣,因此,在进行软件架构时,一定要想好技术选型. ...
- tp3.2多个或者并且语句语法
$map['tid1&cid1'] =array($jmid,'0','_multi'=>true); $map['tid2&cid2'] =array($jmid,'0','_ ...