Mono for Android 对话框 倒计时
UI调度:
public class Dispatcher : Handler
{
public override void HandleMessage(Message msg)
{
var ai = msg.Obj as ActionItem;
if (ai != null)
{
try
{
ai.Result = ai.d.DynamicInvoke(ai.args);
}
catch (TargetInvocationException e)
{
ai.Error = e.InnerException;
}
catch (Exception e)
{
ai.Error = e;
}
if (ai.mre != null)
{
ai.mre.Set();
}
}
}
/// <summary>
/// 同步调用
/// </summary>
public object Invoke(Delegate d, params object[] args)
{
if (Java.Lang.Thread.CurrentThread().Equals(Looper.Thread))
{
return d.DynamicInvoke(args);
}
var ai = new ActionItem
{
d = d,
args = args,
mre = new System.Threading.ManualResetEvent(false)
};
SendMessage(new Message { Obj = ai });
ai.mre.WaitOne();
if (ai.Error != null)
{
throw ai.Error;
}
return ai.Result;
}
/// <summary>
/// 异步调用
/// </summary>
public void BeginInvoke(Delegate d, params object[] args)
{
var msg = new Message()
{
Obj = new ActionItem
{
d = d,
args = args
}
};
SendMessage(msg);
}
class ActionItem : Java.Lang.Object
{
public Delegate d;
public object[] args;
public object Result;
public Exception Error;
public System.Threading.ManualResetEvent mre;
}
}
String.xml中的样式:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="dialog" parent="@android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowIsFloating">true</item>
<!--<item name="android:windowIsTranslucent">false</item>
<item name="android:windowNoTitle">true</item>
<item name="android:background">@android:color/black</item>
<item name="android:windowBackground">@null</item>
<item name="android:backgroundDimEnabled">false</item>-->
</style>
</resources>
倒计时代码:
public class TimerDialog
{
#region 成员
AlertDialog mDialog;
Context mContext;
int mId = 100;
Dispatcher dp = new Dispatcher();
Timer timer;
public int Seconds { get; set; }
#endregion
#region 方法
/// <summary>
/// 初始化
/// </summary>
public TimerDialog(Context ctx)
{
Seconds = 30;
mContext = ctx;
mDialog = new AlertDialog.Builder(new ContextThemeWrapper(mContext, Resource.Style.dialog)).Create();
TextView text = new TextView(mContext);
text.Id = mId;
text.TextSize = 120;
text.Text = Seconds.ToString();
//字体白色
text.SetTextColor(Android.Graphics.Color.White);
//居中
text.Gravity = GravityFlags.Center;
mDialog.SetView(text);
//阻止点击别的地方导致对话框关闭
mDialog.SetCancelable(false);
}
/// <summary>
/// 显示对话框
/// </summary>
public void Show()
{
mDialog.SetIcon(Android.Resource.Drawable.IcDialogInfo);
Start();
mDialog.Show();
}
/// <summary>
/// 开始倒计时
/// </summary>
public void Start()
{
Stop();
timer = new Timer(AFunction, null, 0, 1000);
}
/// <summary>
/// 倒计时中
/// </summary>
private void AFunction(object obj)
{
if (Seconds > 0)
{
Seconds -= 1;
dp.BeginInvoke(new Action(() =>
{
(mDialog.FindViewById(mId) as TextView).Text = (Seconds + 1).ToString();
}));
}
else
{
Stop();
dp.BeginInvoke(new Action(() =>
{
mDialog.Dismiss();
mDialog.Dispose();
mDialog = null;
}));
}
}
/// <summary>
/// 停止倒计时
/// </summary>
public void Stop()
{
if (timer != null)
{
timer.Dispose();
timer = null;
}
}
#endregion
}
Activity的调用:
TimerDialog c = new TimerDialog(this);
c.Show();
转载于:https://www.cnblogs.com/Cindys/archive/2012/10/23/2735466.html
Mono for Android 对话框 倒计时相关推荐
- 我的第一个 Mono for Android 应用
我的第一个 Mono for Android 应用 Mono for Android 初体验, 学习怎么使用 Mono for Anrdoid 创建 android 应用, 如何使用 Intent 启 ...
- 解决Mono for android的xml编辑器无法代码完成的问题
这两天在讲使用.Net开发Android的Mono for android技术,发现使用的开发工具在停止调试的时候特别卡,能卡上几十秒钟,而且经常弹出报错的对话框,严重影响心情,因此昨天就下载安装了最 ...
- android闹钟倒计时_如何在Android上使用闹钟,计时器和秒表
android闹钟倒计时 Your Android device's built-in Clock app can serve as an alarm clock, a kitchen timer, ...
- monocross 环境搭建:MonoTouch Mono for Android
monocross 中各个平台环境不同: 针对ios的MonoTouch只能在OSX上弄.Android 的Mono for Android在mac 及pc机上都可以..... 安装MonoTouch ...
- android倒计时功能,android实现倒计时功能(开始、暂停、0秒结束)
本文实例为大家分享了android实现倒计时功能的具体代码,供大家参考,具体内容如下 [思路]:通过 timer 执行周期延时的任务,handler 中将计时信息更新,并在计时结束时结束 timer ...
- C#开发Android应用的必备——Mono for Android V1.0 发布
Mono for Android V1.0 正式发布啦! Mono for Android就是原先的MonoDroid,由于商标问题(名称中含有Droid),现在改名为Mono for Android ...
- Android 对话框(Dialog)大全 建立你自己的对话框
Android 对话框(Dialog)大全 建立你自己的对话框 创建对话框 一个对话框一般是一个出现在当前Activity之上的一个小窗口. 处于下面的Activity失去焦点, 对话框接受所有的用户 ...
- mono for android mysql_mono for android 自定义titleBar Actionbar 顶部导航栏 修改 样式 学习...
以前的我是没有做笔记的习惯的,学习了后觉得自己能记住,但是最近发现很多学的东西都忘记了,所有现在一有新的知识,就记下来吧. 最近又做一个mono for android 的项目 这次调整比较大,上次做 ...
- Android(1)—Mono For Android 环境搭建及破解
0.前言 最近公司打算开发一款Android平台的简单报表查询软件,因本人之前一直是.NET开发的,和领导商定之后决定采用Mono For Android 进行开发,暂时采用破解版进行开发: 下文是记 ...
最新文章
- python之⾯向对象-继承
- 了解【Docker】从这里开始
- jdk动态代理与cglib动态代理例子
- .NET Core 以及与 .NET Framework的关系
- 用一个Sql语句查询出表中的一个字段的数据类型
- 卖掉 3000 平房子,50 岁程序员回国写代码,三个月内融资 2000 万美元
- SSH关于公钥认证Permission denied的问题
- C语言画爱心代码分析
- PTA甲级模拟第六弹:1156-1159
- Word2vec词向量
- 灵异问题,使用EasyConnect后,用navicat可以访问数据库,但是用Idea跑项目连接超时怎么办?
- 微机原理与接口技术的基础知识
- 认知升级|系列2|复利思维
- 牛客每日练习----可做题,汀博尔,轰炸区最优选取
- 小熊派开发板移植RT-FOTA
- 家用计算机内存最大是多少,现在电脑内存最大多少
- Unity【01 AssetBundle】【02 Lua】
- python 计数器每次加1_python 简单计数器的实现
- WhiteBox学习
- Revit转点云pcd模型