- 浏览: 632443 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
laj12347:
楼主太给力了
Eclipse设置、调优、使用 -
kunlyy:
楼主太给力了
Eclipse设置、调优、使用 -
knight_black_bob:
mark ~
Eclipse设置、调优、使用 -
hujunxiang:
好全好全~~~
Eclipse设置、调优、使用 -
bugyun:
楼主辛苦了
Eclipse设置、调优、使用
Toast的基本原理其实就是将一个View添加到WindowManager中,让WindowManager来把View显示出来。(WindowManager可以将View显示在任何地方,任何Activity之上)
Toast的默认属性
在指定x, y处显示Toast
指定View的Toast
Toast部分源码
一直显示的Toast
实现原理是:在Toast隐藏之前,再show一个相同的Toast,来实现长显示的假象
使用ToastWrapper
Toast的默认属性
// 对其方式为:水平居中,并在底部 mGravity = Gravtiy.CENTER_HORIZONTAL | Gravtiy.BOTTOM; mX = 0; mY =context.getResources().getDimensionPixelSize(com.android.internal.R.dimen.toast_y_offset); mHorizontalMargin = 0; mVerticalMargin = 0; 所以用Toast.makeText(getApplicationContext(), R.string.text, Toast.LENGTH_SHORT).show();生成的Toast总是处在底部水平居中的位置
在指定x, y处显示Toast
// 在(50, 100)处显示Toast Toast toast = Toast.makeText(getApplicationContext(), "toast use", Toast.LENGTH_SHORT); toast.setGravity(Gravity.TOP | Gravity.LEFT, 50, 100); toast.show(); // 如果使用Gravity.NO_GRAVITY,后面的x, y就是相对于屏幕的中心点的(估计android是默认这么处理的) Toast toast = Toast.makeText(getApplicationContext(), "toast use", Toast.LENGTH_SHORT); toast.setGravity(Gravity.NO_GRAVITY, 50, 100); toast.show(); // 用margin来控制toast的位置 Toast toast = Toast.makeText(getApplicationContext(), "toast use", Toast.LENGTH_SHORT); toast.setGravity(Gravity.LEFT | Gravity.TOP, 0, 0); // leftMargin, topMargin分别是容器width, height的%多少(这里是10%和20%) toast.setMargin(0.1F, 0.2F); toast.show();
指定View的Toast
// 布局xml:R.layout.toast < Button xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/message" android:layout_width="fill_parent" android:layout_height="wrap_content" /> Toast toast = new Toast(getApplicationContext()); toast.setView(LayoutInflater.from(getApplicationContext()).inflate(R.layout.toast, null)); toast.setText("toast use"); // Button是否fill_parent是由gravity控制的, xml中的不起任何作用 toast.setGravity(toast.getGravity() | Gravity.FILL_HORIZONTAL, toast.getXOffset(), toast.getYOffset()); toast.setDuration(Toast.LENGTH_SHORT); toast.show();
Toast部分源码
// Toast的构造器只设置了mY这个属性。mNextView, mDuration都没有设置(用makeText的话,这两个属性会设置) public Toast(Context context) { mContext = context; mTN = new TN(); mY = context.getResources().getDimensionPixelSize(com.android.internal.R.dimen.toast_y_offset); } // setText方法,需要将显示text的view的id设为@android:id/message,否则会抛RuntimeException public void setText(CharSequence s) { if (mNextView == null) { throw new RuntimeException("This Toast was not created with Toast.makeText()"); } TextView tv = (TextView) mNextView.findViewById(com.android.internal.R.id.message); if (tv == null) { throw new RuntimeException("This Toast was not created with Toast.makeText()"); } tv.setText(s); }
一直显示的Toast
实现原理是:在Toast隐藏之前,再show一个相同的Toast,来实现长显示的假象
private class ToastWrapper { private Toast mToast; private Handler mHandler; private Runnable mShowToast = new Runnable() { @Override public void run() { continueShow(); } }; private boolean mCancelled = true; public ToastWrapper(Context ctxt) { this(ctxt, new Handler()); } public ToastWrapper(Context ctxt, Handler handler) { mToast = Toast.makeText(ctxt, null, Toast.LENGTH_SHORT); mHandler = handler; } public Toast getToast() { return mToast; } public void showUntilCancel() { if (mCancelled) { mCancelled = false; mToast.setDuration(Toast.LENGTH_LONG); continueShow(); } } public void cancel() { mCancelled = true; mToast.cancel(); } private void continueShow() { if (mCancelled) { return; } mToast.show(); mHandler.postDelayed(mShowToast, 3000); } }
使用ToastWrapper
// 一直显示的toast toastWrapper = new ToastWrapper(getApplicationContext()); Toast toast = toastWrapper.getToast(); toast.setText("toast wrapper"); // ... Button button = new Button(getApplicationContext()); button.setText("一直显示toast"); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { toastWrapper.showUntilCancel(); } }); Button button = new Button(getApplicationContext()); button.setText("隐藏toast"); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { toastWrapper.cancel(); } }); // 一搬的toast Button button = new Button(getApplicationContext()); button.setText("一般的toast"); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Toast toast = toastWrapper.getToast(); toast.setDuration(Toast.LENGTH_SHORT); toast.show(); } });
发表评论
-
Error: Cannot run program "sh": Launching failed
2014-02-20 21:05 3587**** Build of configuration De ... -
通过wifi来使用ADB[转]
2013-11-16 16:09 1433adb除了通过usb连接外,还可以通过tcp连接建立调试,在 ... -
Installation failed due to invalid APK file!
2013-11-16 15:42 8070今天在Eclipse里面测试Android的开发。 写好的代 ... -
QQ2013导致adb不能使用问题的修复[转]
2013-11-16 14:48 1559由于实在没法不用QQ,当QQ哭着闹着要升级到最新版的时候,手 ... -
adt安装慢解决
2013-06-08 14:29 4694安装adt的时候不管时在线安装还是下载下来了离线安装,都不见安 ... -
android 百度地图 wgs84和baidu09坐标转换
2012-11-14 23:35 17534wgs84: gps获取出来的坐标 ... -
hiero使用
2012-11-14 16:51 5061hiero是一个java小程序,能够帮助用户自定义.fnt ... -
分享一个日志类
2012-11-09 02:07 351/*** * <p> 封装日志api的调用 ... -
android相关工具收集
2012-07-30 09:33 1197常用 Java 静态代码分析工具的分析与比较 http://b ... -
proguard使用
2012-07-26 23:39 5257proguard的常见配置参数 -include {filen ... -
一张图让你明白android 九宫格工具使用
2012-07-07 16:13 2606... -
android sdk, adt等的下载
2012-06-28 21:38 16800一些小技巧 在eclipse中 ... -
ProgressBar定制
2011-12-07 09:04 4060ProgressBar的基本使用 可以参考这个:http:// ... -
android 源码 阅读
2011-11-24 14:50 2949虽然android的源码也时不时的会去看,但大部分还是只能看懂 ... -
Dialog定制
2011-11-18 14:47 7115定制dialog的方式 1. 可以通过Theme的方式,and ... -
android 开发资料收集
2011-10-28 14:32 1672Android 解屏幕锁与点亮屏幕:键盘锁(KeyguardM ... -
android单元测试
2011-09-09 17:08 0android测试框架涉及的类的UML图 activity测 ... -
android.os包中一些类的使用
2011-09-08 15:09 23500android.os.Build Build.BOARD ... -
android游戏开发学习
2011-09-06 16:55 10889相关资源 2D中如何判断一点在另一个点的那个方位: http: ... -
android xml解析 - sax
2011-08-16 18:19 2311android 2.3 sdk提供的与sax解析相关的类和接口 ...
相关推荐
Android Studio中Menu和Toast使用的Demo
Toast的基本使用代码,对应博客中2.1 Toast(吐司)的基本使用。
toast控件吐司的建议使用,适合新手学习
JQuery信息提示框插件 jquery.toast.js 的使用,有详细的注释,可以直接使用
NULL 博文链接:https://blessht.iteye.com/blog/1159032
NULL 博文链接:https://andli.iteye.com/blog/1186900
Toast自定义布局实现炫酷效果
android Toast对象的使用 自定义Toast
使用场景: 1、需要提示用户,但又不需要用户点击“确定”或者“取消”按钮。 2、不影响现有Activity运行的简单提示。 用法: 1、可以通过构造函数初始化: 代码如下: //初始化Toast Toast toast = new Toast(this); ...
Android系统默认的Toast十分简洁,使用也非常的简单。但是有时我们的程序使用默认的Toast时会和程序的整体风格不搭配,这个时候我们就需要自定义Toast,使其与我们的程序更加融合。使用自定义Toast,首先我们需要...
描述了window的基本工作原理以及 Activity 和 Toast 使用的基本实现源码大概分析
在IOS中实现Toast功能,可横屏,适合iPad中使用
和对话框不同的是,Toast并不是以独占方式显示的,它并不会抢夺用户的焦点,在弹出Toast的时候,依然可以对之前的界面进行操作,我们在“”一文中介绍了纯文本的Toast的使用,我们完全可以自定义Toast的显示内容和...
Android Toast 自定义背景、图片 随心使用
Android Toast各种使用方法及DEMO
Android Toast使用解析附代码,实现类似WEB开发中的弹出层效果,当用户点击一个链接或操作按钮时,会弹出一个操作层(浮动层)或浮动菜单,进而执行下一步操作。本源码是使用Android中的Toast对象来模拟实现网页中的...
自定义Toast,设置Toast显示位置,自定义Toast的复杂布局 博客地址:http://blog.csdn.net/xy_nyle/article/details/20137953
vue 中简单封装类似 Toast 的消息提示插件,然后在 vue 中任意位置都可以简单使用 Toast 消息显示最前,并且默认 3 秒后自动消失 实现原理 1、vue 创建 Toast 消失提示组件的显示界面 2、js 代码动态引入 Toast 的 ...
使用Toast动态显示信息
Toast是Android系统提供的一种非常好的提醒方式,在程序中可以使用它将一些短小的 信息通知给用户,这些信息会在一段时间后自动消失,并且不会占用任何屏幕空间,我们现 在就尝试一下如何在活动中使用Toast。