断断续续学安卓一个礼拜,发现Android对于Flex,在很多Widget的组件设计上还不是很人性化
经常以为应该具有的功能却不具备,而且Java GUI真的不是我的爱
比如AlertDialog的延时关闭,没有现成的方法或者组件,那么只能自己来扩展了
来吧,下面就是一个很勉强很勉强的装饰器模式
AutoCloseDialog
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() {
@Override
public void run() {
dialog.dismiss();
}
};
//新建调度任务
executor.schedule(runner, duration, TimeUnit.MILLISECONDS);
dialog.show();
}
}
然后是演示代码
public class AlertExampleActivity extends Activity {
// 声明Button
private Button button;
@Override
public 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() {
@Override
public void onClick(View v) {
d.show(2000);
}
});
}
}
layout就一个按钮,不用写出来了吧^_^
Best Regard to everybody!