没事,就简单来写个关于自定义对话框使用HANDLER与TIMERTASK来定时更新其自定义的对话框的数据,由于自定义的对话框是为继承DAILOG来单独实现的,所以在数据更新时会稍微麻烦一点,所以现在我做了个小实验,并把成功写在如下,老规矩直接贴代码吧,程序员的需求,呵呵:
以下:是主类:
package org.android.view.dialog;
import java.util.Timer;
import java.util.TimerTask;
import org.android.view.R;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
/**
*
* @author jiangshide
*
*/
public class MainActivity extends Activity{
private CustomerDialog dialog;
public static Handler handler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.show_dialog);
findViewById();
}
private void findViewById(){
Button showDailog = (Button) findViewById(R.id.showDailog);
showDailog.setOnClickListener(listener);
}
private OnClickListener listener = new OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.showDailog:
dialog = new CustomerDialog(MainActivity.this);
dialog.show();
Timer time = new Timer();
time.schedule(new TimerTask() {
@Override
public void run() {
Message msg = new Message();
msg.what = 1;
msg.getData().putString("name", "0002");
msg.getData().putSerializable("daxiao", "10M");
msg.getData().putString("chicun", "1299x1024");
msg.getData().putString("time", "2011-09-02");
msg.getData().putString("xiangce", "jsd002");
msg.getData().putString("type", "JPG");
handler.sendMessage(msg);
}
}, 5000, 5000);
break;
}
}
};
}
以下是自定义的Dialog:
package org.android.view.dialog;
import org.android.view.R;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Window;
import android.view.WindowManager;
import android.widget.TextView;
/**
*
* @author jiangshide
*
*/
public class CustomerDialog extends Dialog{
private Context jContext;
private TextView name;
private TextView daxiao;
private TextView chicun;
private TextView time;
private TextView xiangce;
private TextView type;
public CustomerDialog(Context c) {
super(c);
this.jContext = c;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.dialog);
findViewById();
}
private void findViewById(){
name = (TextView) findViewById(R.id.name);
daxiao = (TextView) findViewById(R.id.daxiao);
chicun = (TextView) findViewById(R.id.chicun);
time = (TextView) findViewById(R.id.time);
xiangce = (TextView)findViewById(R.id.xiangce);
type = (TextView) findViewById(R.id.type);
name.setText("0001");
daxiao.setText("5M");
chicun.setText("1024x768");
time.setText("2011-05-20");
xiangce.setText("jsd01");
type.setText("gif");
MainActivity.handler = new Handler(){
public void handleMessage(Message msg) {
String names = null;
String daxiaos = null;
String chicuns = null;
String times = null;
String xiangces = null;
String types = null;
if(msg.what == 1){
names = msg.getData().getString("name");
daxiaos = msg.getData().getString("daxiao");
chicuns = msg.getData().getString("chicun");
times = msg.getData().getString("time");
xiangces = msg.getData().getString("xiangce");
types = msg.getData().getString("type");
if(names != null){
name.setText(names);
}
if(daxiaos != null){
daxiao.setText(daxiaos);
}
if(chicuns != null){
chicun.setText(chicuns);
}
if(times != null){
time.setText(times);
}
if(xiangces != null){
xiangce.setText(xiangces);
}
if(types != null){
type.setText(types);
}
}
};
};
}
}
以下是
<?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"
>
<Button
android:id="@+id/showDailog"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="showDialog"
/>
</LinearLayout>
以下是自定义的dialog.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="200dp"
android:layout_height="240dp"
android:orientation="vertical"
android:gravity="center"
android:padding="20dp"
android:background="#808080"
>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="名称:"
android:textStyle="bold"
/>
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
/>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="大小:"
android:textStyle="bold"
/>
<TextView
android:id="@+id/daxiao"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
/>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="尺寸:"
android:textStyle="bold"
/>
<TextView
android:id="@+id/chicun"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
/>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="拍摄时间:"
android:textStyle="bold"
/>
<TextView
android:id="@+id/time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
/>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="相册:"
android:textStyle="bold"
/>
<TextView
android:id="@+id/xiangce"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
/>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="类型:"
android:textStyle="bold"
/>
<TextView
android:id="@+id/type"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
/>
</LinearLayout>
</LinearLayout>
OK以上代码就完整了,
截个图吧:
分享到:
相关推荐
TimerTask结合Handler实现了定时任务,可以定时刷新,定时验证短信等.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
用Handler和Timertask实现一个简单的定时器,一个简单的demo
这个示例演示进度对话框的用法 包括水平对话框,圆形对话框
Android Timer TimerTask Handler 三者结合实现 数据更新与View更新的同步。 一个不错的机制。
NULL 博文链接:https://andli.iteye.com/blog/1489903
Android Handler定时更新UI
通过自定义Handler、Looper、Message.浅析Android线程间通信原理
ndroid异步处理一:使用Thread+Handler实现非UI线程更新UI界面
通过自定义Handler、Looper、 MessageQueue和 Message类,让大家更深入地理解Android 的Handler机制
android手机自带的对话框显得比较单一,我们可以通过ProgressDialog来自己定义对话框中将要显示出什么东西。 首先看看progressDialog里面的方法 setProgressStyle:设置进度条风格,风格为圆形,旋转的。 ...
前言:现在一般的Android软件都是需要不断更新的,当你打开某个app的时候,如果有新的版本,它会...自定义dialog 部分代码: public class NumberProgressBar extends View { /** * 右侧未完成进度条的颜色 */
文档详细介绍了Handler实现线程间通信过程中源码的实现机制,并对其中的Looper,MessageQueue,Message对象的初始化及sendMessage()通过sendMessageDelayed()和sendMessageAtTime()过程的操作机流程
新线程中发送Handle消息,主线程中处理消息并更新TextView的值
这个demo介绍了通过Handler在线程之间传递消息,demo中一个三个线程,主线程,发送消息的分线程,接收消息的分线程。发送消息的分线程会通知主线程更改标签文字,同时会通知接收消息的分线程更改进度条的进度。
Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面。
用ViewPager实现手动切换,用Timer + Handler实现自动切换,左右完美无限滑动效果非常平滑
Handler是Android系统中处理定时操作的核心类。Handler 类主要通过三个方法来执行线程运行接口Runnable的时间
简单完成了ViewPager实现轮播图并添加了状态切换的小圆点
使用Handler实现的图片播放小功能,代码简单易懂,适合初学者
android中定时有很多种是实现,常见的Handler 与Thread的结合,handler.postDelayed ,以及要使用的AlarmManger 等都可以实现定时任务的执行,但是使用场景却大不相同,这里主要是怎么用AlarmManager实现定时任务。...