private static CountDownTimer countDownTimer = null;
private static Toast toast ;
private Button btnTurnBack;
toast= new Toast(getApplicationContext());
btnTurnBack = (Button)findViewById(R.id.btn_turnback);
btnTurnBack.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
if(countDownTimer!=null)
{
countDownTimer.cancel();
}
toast.cancel();
MapActivity.this.finish();
}
});
LinearLayout info_toast = new LinearLayout(this);
info_toast.setOrientation(LinearLayout.VERTICAL);
info_toast.setBackgroundResource(R.drawable.custom_info_bubble2);
TextView titleInfo = new TextView(this);
titleInfo.setText("设备详情");
titleInfo.setTextSize(12);
titleInfo.setTextColor(Color.BLACK);
titleInfo.setGravity(Gravity.CENTER);
info_toast.addView(titleInfo,new LinearLayout.LayoutParams(
LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
//strProperty[0]
TextView[] caption = new TextView[4];
for(int i = 0 ; i<propertyNum-InfoWindow_TV_Num ; i++)
{
caption[i]= new TextView(this);
caption[i].setTextColor(Color.BLACK);
caption[i].setTextSize(10);
caption[i].setPadding(3, 0, 0, 3);
caption[i].setText(...);
info_toast.addView(caption[i],new LinearLayout.LayoutParams(
LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
}
toast.setGravity(Gravity.CENTER | Gravity.BOTTOM, 12, 40);
toast.setDuration(Toast.LENGTH_SHORT);
toast.setView(info_toast);
toast.show();
countDownTimer=new CountDownTimer(5000, 1000)
{
@Override
public void onTick(long millisUntilFinished)
{
toast.show();
}
@Override
public void onFinish()
{
toast.show();
}
};
countDownTimer.start();
============================================================================
Android倒计时功能的实现(CountDownTimer)
Android中有个countDownTimer类,从名字上就可以看出来,它的功能是记录下载时间,将后台线程的创建和
Handler队列封装成为了一个方便的调用。
查看了一下官方文档,发现这个类非常简单,只有四个方法,上面都涉及到了onTick、onFinsh、cancel和
start。其中前面两个是抽象方法,所以要重写一下。
下面是官方给的一个小例子:
new CountdownTimer(30000, 1000) {
public void onTick(long millisUntilFinished) {
mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);
}
public void onFinish() {
mTextField.setText("done!");
}
}.start();
用一个网友的代码,自己稍微改动了一下,做了一个简单的小demo如下:
package hyh.study;
import android.app.Activity;
import android.os.Bundle;
import android.content.Intent;
import android.os.CountDownTimer;
import android.widget.TextView;
import android.widget.Toast;
p
http://www.microoh.com
public class NewActivity extends Activity {
private MyCount mc;
private TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv = (TextView) findViewById(R.id.show);
mc = new MyCount(30000, 1000);
mc.start();
}// end func
/* 定义一个倒计时的内部类
*/
class MyCount extends CountDownTimer {
public MyCount(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
@Override
public void onFinish() {
tv.setText("finish");
}
@Override
public void onTick(long millisUntilFinished) {
tv.setText("请等待30秒(" + millisUntilFinished / 1000 + ")...");
Toast.makeText(NewActivity.this, millisUntilFinished / 1000 + "",
Toast.LENGTH_LONG).show();// toast有显示时间延迟
}
}
}
主要是重写onTick和onFinsh两个方法,onFinish()中的代码是计时器结束的时候要做的事情;onTick(Long m)
中的代码是你倒计时开始时要做的事情,参数m是直到完成的时间,构造方法MyCount()中的两个参数中,前者
是倒计的时间数,后者是倒计每秒中间的间隔时间,都是以毫秒为单位。例如要倒计时30秒,每秒中间间隔时
间是1秒,两个参数可以这样写MyCount(30000,1000)。 将后台线程的创建和Handler队列封装成为了一个方便
的类调用。
当你想取消的时候使用mc.cancel()方法就行了。
本文由麦可网http://www.microoh.com/ 整理,转载请注明出处