Android實(shí)現(xiàn)3秒鐘自動(dòng)關(guān)閉界面
功能如標(biāo)題所示,簡(jiǎn)單的android的3秒倒計(jì)時(shí)關(guān)閉界面或點(diǎn)擊關(guān)閉,如果3秒內(nèi)點(diǎn)擊就不會(huì)再開(kāi)啟自動(dòng)關(guān)閉??磮D說(shuō)話,代碼簡(jiǎn)單,注釋清晰,一目了然:
下載整個(gè)項(xiàng)目代碼。


3秒過(guò)后進(jìn)入下一界面:

代碼:
PaySuccessActivity.java
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
/**
* 支付成功頁(yè)面
*http://download.csdn.net/user/qq_29614465
*/
public class PaySuccessActivity extends Activity {
private ImageView im_back;
private TextView tv_title;
private TextView tv_paysuccess_time;//開(kāi)始是3秒
private ImageView im_paysuccess;//對(duì)號(hào)
private Button b;
private Boolean abc=false;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.paysuccess);
im_back= (ImageView) findViewById(R.id.im_back);
tv_title= (TextView) findViewById(R.id.tv_title);
tv_title.setText("支付成功");
tv_paysuccess_time=(TextView) findViewById(R.id.paysuccess_time);
im_paysuccess= (ImageView) findViewById(R.id.paysuccess_im);
im_paysuccess.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//點(diǎn)擊成功后跳轉(zhuǎn)到當(dāng)前訂單的界面
Intent intent = new Intent(PaySuccessActivity.this, AfterPayActivity.class);
startActivity(intent);
finish();
abc=true;
}
});
CountDownTextViewHelper helper_pay=new CountDownTextViewHelper(tv_paysuccess_time, "0", 3, 1);
helper_pay.setOnFinishListener(new CountDownTextViewHelper.OnFinishListener() {
@Override
public void finish() {
// TODO Auto-generated method stub
if (abc==false) {
Intent intent2 = new Intent(PaySuccessActivity.this, AfterPayActivity.class);
startActivity(intent2);
}
}
});
helper_pay.start();
}
}
AfterPayActivity.java
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
/**
* 3秒關(guān)閉后進(jìn)入的界面
*http://download.csdn.net/user/qq_29614465
*/
public class AfterPayActivity extends Activity {
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.after_pay);
btn=(Button) findViewById(R.id.button_close);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
finish();
}
});
}
}
CountDownTextViewHelper.java
import android.graphics.Color;
import android.os.CountDownTimer;
import android.util.Log;
import android.widget.TextView;
/**
* 倒計(jì)時(shí)TextView幫助類(lèi)
* http://download.csdn.net/user/qq_29614465
*/
public class CountDownTextViewHelper {
// 倒計(jì)時(shí)
private CountDownTimer countDownTimer;
// 倒計(jì)時(shí)結(jié)束的回調(diào)接口
private OnFinishListener listener;
private TextView textView;
/**
*
* @param textView
* 需要顯示倒計(jì)時(shí)的TextView
* @param defaultString
* 默認(rèn)顯示的字符串
* @param max
* 需要進(jìn)行倒計(jì)時(shí)的最大值,單位是秒
* @param interval
* 倒計(jì)時(shí)的間隔,單位是秒
*/
public CountDownTextViewHelper(final TextView textView,
final String defaultString, int max, int interval) {
this.textView = textView;
// 由于CountDownTimer并不是準(zhǔn)確計(jì)時(shí),在onTick方法調(diào)用的時(shí)候,time會(huì)有1-10ms左右的誤差,這會(huì)導(dǎo)致最后一秒不會(huì)調(diào)用onTick()
// 因此,設(shè)置間隔的時(shí)候,默認(rèn)減去了10ms,從而減去誤差。
// 經(jīng)過(guò)以上的微調(diào),最后一秒的顯示時(shí)間會(huì)由于10ms延遲的積累,導(dǎo)致顯示時(shí)間比1s長(zhǎng)max*10ms的時(shí)間,其他時(shí)間的顯示正常,總時(shí)間正常
countDownTimer = new CountDownTimer(max * 1000, interval * 1000 - 10) {
@Override
public void onTick(long time) {
// 第一次調(diào)用會(huì)有1-10ms的誤差,因此需要+15ms,防止第一個(gè)數(shù)不顯示,第二個(gè)數(shù)顯示2s
textView.setText(((time + 15) / 1000)
+ "");
textView.setTextColor(Color.BLACK);
Log.d("CountDownTextViewHelper", "time = " + (time) + " text = "
+ ((time + 15) / 1000));
}
@Override
public void onFinish() {
textView.setEnabled(true);
textView.setText(defaultString);
if (listener != null) {
listener.finish();
}
}
};
}
/**
* 開(kāi)始 倒計(jì)時(shí)
*/
public void start() {
textView.setEnabled(false);
countDownTimer.start();
}
/**
* 設(shè)置倒計(jì)時(shí)結(jié)束的監(jiān)聽(tīng)器
* @param listener
*/
public void setOnFinishListener(OnFinishListener listener) {
this.listener = listener;
}
/**
* 倒計(jì)時(shí)結(jié)束的回調(diào)接口
*/
public interface OnFinishListener {
public void finish();
}
}
到這里就是全部的關(guān)鍵代碼了,布局文件當(dāng)然由你自己處理了,如果想下載整個(gè)項(xiàng)目代碼,可到我的資源頁(yè)下載 (下載頁(yè)里的代碼稍微舊一點(diǎn),但保證都可以用。新一點(diǎn)的代碼以博客里的為準(zhǔn)。)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android自定義View實(shí)現(xiàn)拖動(dòng)自動(dòng)吸邊效果
這篇文章主要為大家詳細(xì)介紹了Android自定義View實(shí)現(xiàn)拖動(dòng)自動(dòng)吸邊效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06
android自定義Camera實(shí)現(xiàn)錄像和拍照
這篇文章主要為大家詳細(xì)介紹了android自定義Camera實(shí)現(xiàn)錄像和拍照功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05
Android實(shí)現(xiàn)微信聊天語(yǔ)言點(diǎn)擊喇叭動(dòng)畫(huà)效果
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)微信聊天語(yǔ)言點(diǎn)擊喇叭動(dòng)畫(huà)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07
Android實(shí)現(xiàn)屏幕截圖并保存截圖到指定文件
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)屏幕截圖并保存截取圖片到指定文件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-10-10
ViewPager滑動(dòng)靈敏度調(diào)整的方法實(shí)力
這篇文章主要介紹了ViewPager滑動(dòng)靈敏度調(diào)整的方法實(shí)力,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-10-10
Android 使用 Path 實(shí)現(xiàn)搜索動(dòng)態(tài)加載動(dòng)畫(huà)效果
這篇文章主要介紹了Android 使用 Path 實(shí)現(xiàn)搜索動(dòng)態(tài)加載動(dòng)畫(huà)效果,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下2018-08-08
Android Service(不和用戶交互應(yīng)用組件)案例分析
Service是在一段不定的時(shí)間運(yùn)行在后臺(tái),不和用戶交互應(yīng)用組件,本文將詳細(xì)介紹,需要了解的朋友可以參考下2012-12-12

