Dialog高仿Toast实现
https://blog.csdn.net/u011007829/article/details/47293597#
在最近的项目中需要用到一个类似于toast效果的警告框,而且还要是圆角的。下面是我实现的效果截图:
首先定义一个dialog:
package com.bobge.doura.customview;import android.app.Dialog;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.bobge.doura.R;/*** Created by Administrator on 2015/6/23.*/
public class CustomDialog extends Dialog {public CustomDialog(Context context, int theme) {super(context, theme);}public CustomDialog(Context context) {super(context);}/*** Helper class for creating a custom dialog*/public static class Builder {private Context context;private String message;private View contentView;public Builder(Context context) {this.context = context;}/*** Set the Dialog message from String** @return*/public Builder setMessage(String message) {this.message = message;return this;}/*** Set the Dialog message from resource** @return*/public Builder setMessage(int message) {this.message = (String) context.getText(message);return this;}/*** Set a custom content view for the Dialog.* If a message is set, the contentView is not* added to the Dialog...** @param v* @return*/public Builder setContentView(View v) {this.contentView = v;return this;}/*** Create the custom dialog*/public CustomDialog create() {LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);// instantiate the dialog with the custom Themefinal CustomDialog dialog = new CustomDialog(context, R.style.dialog);View layout = inflater.inflate(R.layout.warm_dialog, null);dialog.addContentView(layout, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));// set the content messageif (message != null) {((TextView) layout.findViewById(R.id.tv_warmdialog)).setText(message);}dialog.setContentView(layout);return dialog;}}
}
写了一个工具类来显示该dialog:
package com.bobge.doura.helpr;import android.content.Context;
import android.os.Handler;
import com.bobge.doura.customview.CustomDialog;/*** Created by Administrator on 2015/6/18.*/
public class ToastShow {public static void showCustomDialog(String warmInfo, Context context) {CustomDialog.Builder customBuilder = newCustomDialog.Builder(context);customBuilder.setMessage(warmInfo);final CustomDialog customDialog = customBuilder.create();customDialog.show();Handler handler = new Handler();handler.postDelayed(new Runnable() {public void run() {customDialog.dismiss();}}, 1000);}}
最重要的一点是要给dialog设置一个style:
<style name="dialog" parent="@android:style/Theme.Dialog"><item name="android:windowFrame">@null</item><item name="android:windowIsFloating">true</item><item name="android:windowIsTranslucent">true</item><item name="android:windowNoTitle">true</item><item name="android:background">@drawable/shape_dialog</item><item name="android:windowBackground">@drawable/shape_dialog</item><item name="android:backgroundDimEnabled">true</item><item name="android:backgroundDimAmount">0</item></style>
<item name="android:backgroundDimAmount">0</item>
这一句是设置背景的灰度,这里设置的是0,表示背景灰度完全透明!如此可以实现上面说的效果。
相关:
Android Dialog弹出N秒后自动消失
https://www.iteye.com/blog/ericyou-1592400
public class AutoCloseDialog{private AlertDialog dialog;private ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();public AutoCloseDialog(AlertDialog dialog){this.dialog = dialog;}public void show(long duration){//创建自动关闭任务Runnable runner = new Runnable() {@Overridepublic void run() {dialog.dismiss();}};//新建调度任务executor.schedule(runner, duration, TimeUnit.MILLISECONDS);dialog.show();}}
public class AlertExampleActivity extends Activity {// 声明Buttonprivate Button button;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);button = (Button) findViewById(R.id.button1);AlertDialog.Builder builder = new AlertDialog.Builder(this);final AlertDialog dialog = builder.setTitle("提示").setMessage("2秒后消失").create();final AutoCloseDialog d = new AutoCloseDialog(dialog);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {d.show(2000);}});}}
推荐:
Android Dialog的各种用法
https://www.jianshu.com/p/4712652fb313
Android Dialog控制弹出位置
https://www.jianshu.com/p/b4f367de97a9
Dialog高仿Toast实现相关推荐
- 2016年最经典的高仿系列源码打包下载4.84G
│ JAVAapk.com文件列表生成.bat │ 例子大全说明.txt │ 本例子永久更新地址~.url │ 目录列表2015.11.04更新.txt ...
- Android Study 之通过DialogFragment玩转高仿IOS弹框~ ^.^
LZ-Say:在努力向前奔跑的途中,不要忘记让自己始终保持一个良好的状态,一颗初心,一颗永不言弃的心,一起加油` 前言 LZ虽说是搞Android的,但是对IOS的风格样式甚是酷爱,感觉简约大方,而今 ...
- Android之高仿墨迹天气桌面组件(AppWidgetProvider) .
Android之高仿墨迹天气桌面组件(AppWidgetProvider) . 点击:382 发布时间:2012-10-03 更多0 相信墨迹天气,大家都见过,他在时间显示和天气界面上,很吸引人,今天 ...
- 是男人就下100层【第一层】——高仿微信界面(7)
在上一篇<是男人就下100层[第一层]--高仿微信界面(6)>中我们已经对主界面的的各个菜单进行了简单实现,接下来我们完成两个比较有趣的功能,一个是上部的下弹式菜单,另一个是摇一摇功能. ...
- android高仿微信拍照、多选、预览、删除(去除相片)相冊功能
先声明授人与鱼不如授人与渔,仅仅能提供一个思路,当然须要源代码的同学能够私下有偿问我要源代码:QQ:508181017 工作了将近三年时间了,一直没正儿八经的研究系统自带的相冊和拍照,这回来个高仿微信 ...
- Android实现高仿QQ附近的人搜索展示
本文主要实现了高仿QQ附近的人搜索展示,用到了自定义控件的方法 最终效果如下 1.下面展示列表我们可以使用ViewPager来实现(当然如果你不觉得麻烦,你也可以用HorizontalScrollVi ...
- Kotlin高仿微信-第14篇-单聊-视频通话
Kotlin高仿微信-项目实践58篇详细讲解了各个功能点,包括:注册.登录.主页.单聊(文本.表情.语音.图片.小视频.视频通话.语音通话.红包.转账).群聊.个人信息.朋友圈.支付服务.扫一扫.搜索 ...
- android开发常用工具类、高仿客户端、附近厕所、验证码助手、相机图片处理等源码...
Android精选源码 android开发过程经常要用的工具类源码 Android类似QQ空间个人主页下拉头部放大的布局效果 Android高仿煎蛋客户端,Android完整项目 android帮你找 ...
- android开发常用工具类、高仿客户端、附近厕所、验证码助手、相机图片处理等源码
Android精选源码 android开发过程经常要用的工具类源码 Android类似QQ空间个人主页下拉头部放大的布局效果 Android高仿煎蛋客户端,Android完整项目 android帮你找 ...
最新文章
- 家电 计算机和电讯领域 英语,网络通讯及计算机英语词汇.doc
- Java——容器(Set)
- python 搭建web应用程序_用Python构建数据科学Web应用程序
- iOS - 修改 UITextField 的 clearButtton 样式
- MYSQL存储引擎笔记
- 小蚂蚁学习PHP性能优化(2)--PHP语言级性能优化
- Linq = MyMetal = SqlMetal Include 自定义(Linq to sql )生成
- java Map及其实现类的底层原理
- chrome浏览器插件--让你的谷歌浏览器舒适度提升1800%的插件(程序员推荐)
- SpringBoot系列(5):SpringBoot对JSON数据的处理
- java 代码打包_Java程序打包成jar包
- 给自己的IntelliJ IDEA 设置签名
- winrar 破解方法
- MFC封装的base64编码解码函数
- 关于务实思维的务实思考
- DSP广告精准投放平台如何快速提升品牌知名度
- 音视频开发中常见基础问题总结
- 刚刚,数学界“诺奖”Abel Prize迎来首位女性得主
- 如何使用 Echarts 和 SVG文件写大屏可视化地图 ?
- Jenkins DingTalk 钉钉通知插件
热门文章
- Unity3D-VR_Gevr VR射线+tag的转换+物体展示
- fd在python_【后端开发】python中fd()是什么
- 微信退款异步通知解密异常-填充无效,无法被移除
- 跋山涉水 —— 深入 Redis 字典遍历
- Android 面试常问七道题
- 如何成功清理重建CloudStack环境
- php+crontab+shell方案实现的秒级定时发起异步请求回调方案
- 爆款 | Medium上6900个赞的AI学习路线图,让你快速上手机器学习
- angularJS表达式详解!
- pinpoint agent性能优化方面官方文档翻译