Android實(shí)現(xiàn)3秒鐘自動(dòng)關(guān)閉界面
功能如標(biāo)題所示,簡單的android的3秒倒計(jì)時(shí)關(guān)閉界面或點(diǎn)擊關(guān)閉,如果3秒內(nèi)點(diǎn)擊就不會(huì)再開啟自動(dòng)關(guān)閉。看圖說話,代碼簡單,注釋清晰,一目了然:
下載整個(gè)項(xiàng)目代碼。
3秒過后進(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; /** * 支付成功頁面 *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;//開始是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幫助類 * 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)過以上的微調(diào),最后一秒的顯示時(shí)間會(huì)由于10ms延遲的積累,導(dǎo)致顯示時(shí)間比1s長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(); } } }; } /** * 開始 倒計(jì)時(shí) */ public void start() { textView.setEnabled(false); countDownTimer.start(); } /** * 設(shè)置倒計(jì)時(shí)結(jié)束的監(jiān)聽器 * @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)目代碼,可到我的資源頁下載 (下載頁里的代碼稍微舊一點(diǎn),但保證都可以用。新一點(diǎn)的代碼以博客里的為準(zhǔn)。)
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android實(shí)現(xiàn)藍(lán)牙(BlueTooth)設(shè)備檢測連接
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)藍(lán)牙(BlueTooth)設(shè)備檢測連接,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11Android開發(fā)中使用顏色矩陣改變圖片顏色,透明度及亮度的方法
這篇文章主要介紹了Android開發(fā)中使用顏色矩陣改變圖片顏色,透明度及亮度的方法,涉及Android針對(duì)圖片的讀取、運(yùn)算、設(shè)置等相關(guān)操作技巧,需要的朋友可以參考下2017-10-10Android可簽到日歷控件的實(shí)現(xiàn)方法
這篇文章主要為大家詳細(xì)介紹了Android可簽到日歷控件的實(shí)現(xiàn)方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05Android編程實(shí)現(xiàn)基于BitMap獲得圖片像素?cái)?shù)據(jù)的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)基于BitMap獲得圖片像素?cái)?shù)據(jù)的方法,對(duì)比分析了兩種獲取圖片像素的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11android panellistview 圓角實(shí)現(xiàn)代碼
android panellistview 圓角是每一個(gè)android開發(fā)者都具備的一項(xiàng),對(duì)于新手朋友來說可能有點(diǎn)難度,接下來將詳細(xì)介紹,需要了解的朋友可以參考下2012-12-12Android學(xué)習(xí)筆記--使用剪切板在Activity中傳值示例代碼
相對(duì)于getText和setText而言,利用ClipData對(duì)象來傳遞數(shù)據(jù),更符合面向?qū)ο蟮乃枷?,而且所能傳遞的數(shù)據(jù)類型也多樣化了2013-06-06Android ToolBar整合實(shí)例使用方法詳解
這篇文章主要為大家詳細(xì)介紹了Android ToolBar整合實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02