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实现相关推荐

  1. 2016年最经典的高仿系列源码打包下载4.84G

    │  JAVAapk.com文件列表生成.bat │  例子大全说明.txt │  本例子永久更新地址~.url │  目录列表2015.11.04更新.txt                    ...

  2. Android Study 之通过DialogFragment玩转高仿IOS弹框~ ^.^

    LZ-Say:在努力向前奔跑的途中,不要忘记让自己始终保持一个良好的状态,一颗初心,一颗永不言弃的心,一起加油` 前言 LZ虽说是搞Android的,但是对IOS的风格样式甚是酷爱,感觉简约大方,而今 ...

  3. Android之高仿墨迹天气桌面组件(AppWidgetProvider) .

    Android之高仿墨迹天气桌面组件(AppWidgetProvider) . 点击:382 发布时间:2012-10-03 更多0 相信墨迹天气,大家都见过,他在时间显示和天气界面上,很吸引人,今天 ...

  4. 是男人就下100层【第一层】——高仿微信界面(7)

    在上一篇<是男人就下100层[第一层]--高仿微信界面(6)>中我们已经对主界面的的各个菜单进行了简单实现,接下来我们完成两个比较有趣的功能,一个是上部的下弹式菜单,另一个是摇一摇功能. ...

  5. android高仿微信拍照、多选、预览、删除(去除相片)相冊功能

    先声明授人与鱼不如授人与渔,仅仅能提供一个思路,当然须要源代码的同学能够私下有偿问我要源代码:QQ:508181017 工作了将近三年时间了,一直没正儿八经的研究系统自带的相冊和拍照,这回来个高仿微信 ...

  6. Android实现高仿QQ附近的人搜索展示

    本文主要实现了高仿QQ附近的人搜索展示,用到了自定义控件的方法 最终效果如下 1.下面展示列表我们可以使用ViewPager来实现(当然如果你不觉得麻烦,你也可以用HorizontalScrollVi ...

  7. Kotlin高仿微信-第14篇-单聊-视频通话

    Kotlin高仿微信-项目实践58篇详细讲解了各个功能点,包括:注册.登录.主页.单聊(文本.表情.语音.图片.小视频.视频通话.语音通话.红包.转账).群聊.个人信息.朋友圈.支付服务.扫一扫.搜索 ...

  8. android开发常用工具类、高仿客户端、附近厕所、验证码助手、相机图片处理等源码...

    Android精选源码 android开发过程经常要用的工具类源码 Android类似QQ空间个人主页下拉头部放大的布局效果 Android高仿煎蛋客户端,Android完整项目 android帮你找 ...

  9. android开发常用工具类、高仿客户端、附近厕所、验证码助手、相机图片处理等源码

    Android精选源码 android开发过程经常要用的工具类源码 Android类似QQ空间个人主页下拉头部放大的布局效果 Android高仿煎蛋客户端,Android完整项目 android帮你找 ...

最新文章

  1. 家电 计算机和电讯领域 英语,网络通讯及计算机英语词汇.doc
  2. Java——容器(Set)
  3. python 搭建web应用程序_用Python构建数据科学Web应用程序
  4. iOS - 修改 UITextField 的 clearButtton 样式
  5. MYSQL存储引擎笔记
  6. 小蚂蚁学习PHP性能优化(2)--PHP语言级性能优化
  7. Linq = MyMetal = SqlMetal Include 自定义(Linq to sql )生成
  8. java Map及其实现类的底层原理
  9. chrome浏览器插件--让你的谷歌浏览器舒适度提升1800%的插件(程序员推荐)
  10. SpringBoot系列(5):SpringBoot对JSON数据的处理
  11. java 代码打包_Java程序打包成jar包
  12. 给自己的IntelliJ IDEA 设置签名
  13. winrar 破解方法
  14. MFC封装的base64编码解码函数
  15. 关于务实思维的务实思考
  16. DSP广告精准投放平台如何快速提升品牌知名度
  17. 音视频开发中常见基础问题总结
  18. 刚刚,数学界“诺奖”Abel Prize迎来首位女性得主
  19. 如何使用 Echarts 和 SVG文件写大屏可视化地图 ?
  20. Jenkins DingTalk 钉钉通知插件

热门文章

  1. Unity3D-VR_Gevr VR射线+tag的转换+物体展示
  2. fd在python_【后端开发】python中fd()是什么
  3. 微信退款异步通知解密异常-填充无效,无法被移除
  4. 跋山涉水 —— 深入 Redis 字典遍历
  5. Android 面试常问七道题
  6. 如何成功清理重建CloudStack环境
  7. php+crontab+shell方案实现的秒级定时发起异步请求回调方案
  8. 爆款 | Medium上6900个赞的AI学习路线图,让你快速上手机器学习
  9. angularJS表达式详解!
  10. pinpoint agent性能优化方面官方文档翻译