Android-重新包装Toast,自定义背景
Android-重新包装Toast,自定义背景
2016-4-27
Android L
算是包装了一个自己使用的小工具。
使用Toast的目的是弹一个提示框。先看一下Toast.makeText
方法。
Toast.makeText(getApplicationContext(), this, "弹出一个Toast", Toast.LENGTH_SHORT).show();
使用了Android自己的一个layout,然后把传入的text放到layout的TextView中。
public static Toast makeText(Context context, CharSequence text, @Duration int duration) {
Toast result = new Toast(context);
LayoutInflater inflate = (LayoutInflater)
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflate.inflate(com.android.internal.R.layout.transient_notification, null);
TextView tv = (TextView)v.findViewById(com.android.internal.R.id.message);
tv.setText(text);
result.mNextView = v;
result.mDuration = duration;
return result;
}
我们想自定义个Toast背景,并且调用方法和原来的Toast类似。
观察一下上面的Toast,使用的是Android里面的View。在这一步把View改成我们自己的即可达到目的。
新建文件ToastCustom.java
public class ToastCustom {
public static final int LENGTH_SHORT = Toast.LENGTH_SHORT;
public static final int LENGTH_LONG = Toast.LENGTH_LONG;
Toast toast;
Context mContext;
TextView toastTextField;
public ToastCustom(Context context, Activity activity) {
mContext = context;
toast = new Toast(mContext);
toast.setGravity(Gravity.BOTTOM, 0, 260);// 位置会比原来的Toast偏上一些
View toastRoot = activity.getLayoutInflater().inflate(R.layout.toast_view, null);
toastTextField = (TextView) toastRoot.findViewById(R.id.toast_text);
toast.setView(toastRoot);
}
public void setDuration(int d) {
toast.setDuration(d);
}
public void setText(String t) {
toastTextField.setText(t);
}
public static ToastCustom makeText(Context context, Activity activity, String text, int duration) {
ToastCustom toastCustom = new ToastCustom(context, activity);
toastCustom.setText(text);
toastCustom.setDuration(duration);
return toastCustom;
}
public void show() {
toast.show();
}
}
新建一个layout toast_view.xml
,里面的style自己定义
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/toast_text"
style="@style/TextToast"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginBottom="10dp"
android:layout_marginTop="10dp"
android:background="@drawable/shape_toast"
android:textColor="@color/white" />
</LinearLayout>
调用方式和Toast一样:
ToastCustom.makeText(getApplicationContext(), this, "弹出自定义背景Toast",
ToastCustom.LENGTH_SHORT).show();
之后就可以很方便地使用这个自定义背景的Toast
Android-重新包装Toast,自定义背景的更多相关文章
- Android特效专辑(三)——自定义不一样的Toast
Android特效专辑(三)--自定义不一样的Toast 大家都知道,Android的控件有时候很难满足我们的需求,所以我们需要自定义View.自定义的方式很多,有继承原生控件也有直接自定义View的 ...
- 安卓Toast自定义及防止重复显示
Toast是安卓系统中,用户误操作时或某功能执行完毕时,对用户的一种提示,它没有焦点,并在一定时间内会消失,但用户连续误操作(如登录时,密码错误)多次时,则会有多个Toast被创建,系统会把这些toa ...
- Android学习笔记_34_自定义窗口标题
1.建好项目之后在它的layout文件夹下创建一个title.xml文件,作为自定义窗口标题的文件. <?xml version="1.0" encoding="u ...
- Android动画效果之自定义ViewGroup添加布局动画
前言: 前面几篇文章介绍了补间动画.逐帧动画.属性动画,大部分都是针对View来实现的动画,那么该如何为了一个ViewGroup添加动画呢?今天结合自定义ViewGroup来学习一下布局动画.本文将通 ...
- 制作自定义背景Button按钮、自定义形状Button的全攻略(转)
在Android开发应用中,默认的Button是由系统渲染和管理大小的.而我们看到的成功的移动应用,都是有着酷炫的外观和使用体验的.因此,我们在开发产品的时候,需要对默认按钮进行美化.在本篇里,笔者结 ...
- listview自定义背景以及item自定义背景
item向自定义背景,可以根据position来设置不同的背景. listview背景设置是需要注意设置下面这几项: //点下时整个页面的背景 android:cacheColorHint=" ...
- 【转】Android 系统菜单与自定义菜单
Android 系统菜单与自定义菜单实现方法如下:系统菜单显示DefaultMenu.java package com.wxz.menu; import com.wxz.menu.R; import ...
- Android 用 camera2 API 自定义相机
前言 笔者因为项目需要自定义相机,所以了解了一下 Android 关于 camera 这块的 API.Android SDK 21(LOLLIPOP) 开始已经弃用了之前的 Camera 类,提供了 ...
- Android特效专辑(五)——自定义圆形头像和仿MIUI卸载动画—粒子爆炸
Android特效专辑(五)--自定义圆形头像和仿MIUI卸载动画-粒子爆炸 好的,各位亲爱的朋友,今天讲的特效还是比较炫的,首先,我们会讲一个自定义圆形的imageView,接着,我们会来实现粒子爆 ...
随机推荐
- Java经典编程题50道之三十六
有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数. public class Example36 { public static void main(String[] a ...
- MySql俩种分页区别(注意)
注意俩个分页的区别哦~ SELECT * FROM city LIMIT 2 OFFSET 1; 从第二条记录开始 取二条记录 如下: SELECT * FROM city LIMIT 3,2; 从第 ...
- iOS CAShapeLayer、CADisplayLink 实现波浪动画效果
iOS CAShapeLayer.CADisplayLink 实现波浪动画效果 效果图 代码已上传 GitHub:https://github.com/Silence-GitHub/CoreAnima ...
- Ajax 跨域提交表单
跨域提交表单,前端ajax不用做任何修改, 只需要在后端调用的方法里面添加一行代码即可. .NET 版 HttpContext.Response.AddHeader("Access-Cont ...
- Bash的数组
Bash 2.x提供了创建一维数组的能力. 有多种方法创建,用内建命令declare -a或直接数组元素赋值. 向数组赋值时,如果不指定下标,下标自动从0开始,每次增加1. 数组的尺寸没有限制,下标也 ...
- 流畅的python学习笔记:第二章
第二章开始介绍了列表这种数据结构,这个在python是经常用到的结构 列表的推导,将一个字符串编程一个列表,有下面的2种方法.其中第二种方法更简洁.可读性也比第一种要好 str='abc' strin ...
- docker 架构
看别的地方大致介绍的,粘贴过来 Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器. Docker 容器通过 Docker 镜像来创建. 容器与镜像的关 ...
- 自定义分布式RESTful API鉴权机制
微软利用OAuth2为RESTful API提供了完整的鉴权机制,但是可能微软保姆做的太完整了,在这个机制中指定了数据持久化的方法是用EF,而且对于用户.权限等已经进行了封装,对于系统中已经有了自己的 ...
- 小发现之location.search与location.hash问题
背景 用过Vue Router的童鞋应该对路由传参的方式多多少少有些印象,Vue Router支持两种传参方式:query与params:其中query方式就是动态地在路由url后面追加参数,就是ht ...
- 抓包工具 - Fiddler(如何捕获Android数据包)
如何捕获Android数据包 一.移动设备访问网络原理 先看看移动设备是怎么去访问网络,如图1所示,可以看到,移动端的数据包是从wifi出去的. 图1(移动设备访问网络) 所以我们可以把自己的电脑开启 ...