Android 开发—支付倒计时功能

布局界面关键代码如下,其中的bg_time是显示时间的底图

 <LinearLayout
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:layout_marginTop="@dimen/dp_6"
                                android:orientation="horizontal">

                                <TextView
                                    android:id="@+id/tv_activity_day"
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:background="@drawable/bg_time"
                                    android:gravity="center"
                                    android:text="4"
                                    android:textColor="@color/colorWhite"
                                    android:textSize="@dimen/sp_12" />

                                <TextView
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:layout_marginLeft="@dimen/dp_3"
                                    android:layout_marginRight="@dimen/dp_3"
                                    android:gravity="center"
                                    android:text="天"
                                    android:textColor="@color/colorAccent"
                                    android:textSize="@dimen/sp_12" />

                                <TextView
                                    android:id="@+id/tv_activity_hour"
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:background="@drawable/bg_time"
                                    android:gravity="center"
                                    android:text="4"
                                    android:textColor="@color/colorWhite"
                                    android:textSize="@dimen/sp_12" />

                                <TextView
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:layout_marginLeft="@dimen/dp_3"
                                    android:layout_marginRight="@dimen/dp_3"
                                    android:gravity="center"
                                    android:text="时"
                                    android:textColor="@color/colorAccent"
                                    android:textSize="@dimen/sp_12" />

                                <TextView
                                    android:id="@+id/tv_activity_min"
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:background="@drawable/bg_time"
                                    android:gravity="center"
                                    android:text="4"
                                    android:textColor="@color/colorWhite"
                                    android:textSize="@dimen/sp_12" />

                                <TextView
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:layout_marginLeft="@dimen/dp_3"
                                    android:layout_marginRight="@dimen/dp_3"
                                    android:gravity="center"
                                    android:text="分"
                                    android:textColor="@color/colorAccent"
                                    android:textSize="@dimen/sp_12" />

                                <TextView
                                    android:id="@+id/tv_activity_second"
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:background="@drawable/bg_time"
                                    android:gravity="center"
                                    android:text="4"
                                    android:textColor="@color/colorWhite"
                                    android:textSize="@dimen/sp_12" />

                                <TextView
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:layout_marginLeft="@dimen/dp_3"
                                    android:layout_marginRight="@dimen/dp_3"
                                    android:gravity="center"
                                    android:text="秒"
                                    android:textColor="@color/colorAccent"
                                    android:textSize="@dimen/sp_12" />
                            </LinearLayout>

主要是在activity中的调用,关键代码如下:

private void startGroupCountDown(final String endTime) {
        if (mTimer != null) {
            mTimer.cancel();
            mTimer = null;
        }
        mTimer = new Timer();
        if (mTimerTask != null) {
            mTimerTask.cancel();
        }
        mTimerTask = new TimerTask() {
            @Override
            public void run() {
                mActivity.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        setCountDown(endTime);
                    }
                });
            }
        };
        mTimer.schedule(mTimerTask, 0, 1000); //0s后执行task,经过1s再次执行
    }

    private void setCountDown(final String endTime) {
        String mCurrentTime = DateTimeUtil.getCurrentDate(DateTimeUtil.FORMAT_YMD_HMS);
        int dateCompare = DateTimeUtil.compareTime(mCurrentTime, endTime, DateTimeUtil.FORMAT_YMD_HMS);
        if (dateCompare == -1) {
            String distanceTime[] = DateTimeUtil.getDistanceTime(mCurrentTime, endTime);
            for (int i = 1; i < distanceTime.length; i++) {
                if (distanceTime[i].length() == 1) {
                    distanceTime[i] = "0" + distanceTime[i];
                }
            }
            mDayTV.setText(distanceTime[0]);
            mHourTV.setText(distanceTime[1]);
            mMinTV.setText(distanceTime[2]);
            mSecondTV.setText(distanceTime[3]);

        } else {
            mDayTV.setText("0");
            mHourTV.setText("0");
            mMinTV.setText("0");
            mSecondTV.setText("0");
            //关闭页面
            finish();
        }
    }

当然了,主要思路是利用TimerTask和timer每隔1S执行达到刷新当前时间,用当前时间和支付订单成功返回时间做差(需要自己写一个时间工具类,网上很多就不多说了),我这里删除了day和hour效果后如下:
效果

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值