您当前的位置: 首页 >  android

梁同学与Android

暂无认证

  • 3浏览

    0关注

    618博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Android --- 倒计时(个人笔记记录)

梁同学与Android 发布时间:2021-07-18 09:11:22 ,浏览量:3

package com.gxuwz.yixin.activity;

import android.annotation.SuppressLint;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.TextUtils;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;

import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.alipay.sdk.app.PayTask;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.gxuwz.yixin.R;
import com.gxuwz.yixin.adapter.OrderChildListAdapter;
import com.gxuwz.yixin.adapter.item.GridItemDecoration;
import com.gxuwz.yixin.alipay.PayResult;
import com.gxuwz.yixin.config.IpConfig;
import com.gxuwz.yixin.loader.LatteLoader;
import com.gxuwz.yixin.model.Child;
import com.gxuwz.yixin.model.Order;
import com.gxuwz.yixin.model.OrganInfo;
import com.gxuwz.yixin.net.RestClient;
import com.gxuwz.yixin.net.callback.IFailure;
import com.gxuwz.yixin.net.callback.ISuccess;
import com.gxuwz.yixin.utils.DateTimeUtil;
import com.gxuwz.yixin.utils.IntentUtils;
import com.gxuwz.yixin.utils.Result;
import com.gxuwz.yixin.utils.ShareUtils;
import com.gxuwz.yixin.utils.StatusBarUtils;
import com.gxuwz.yixin.utils.ToastUtils;
import com.gxuwz.yixin.wxapi.WeiXinConstants;
import com.tencent.mm.opensdk.modelpay.PayReq;
import com.tencent.mm.opensdk.openapi.IWXAPI;
import com.tencent.mm.opensdk.openapi.WXAPIFactory;

import java.lang.reflect.Type;
import java.text.NumberFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;


// 点击每一个待支付订单 item 所显示的页面
public class AwaitOrderActivity extends BaseActivity implements View.OnClickListener {


    private static final int SDK_PAY_FLAG = 6406; // 支付宝支付确认码
    private static final int SDK_AUTH_FLAG = 2; // 支付宝授权登录确认码
    private RelativeLayout rl_04,rl_05;
    private ImageView pay_success_icon_weixin;
    private ImageView pay_success_icon_zhifubao;
    private RecyclerView rv_child_info;
    private LinearLayout ll_fanHui;
    private TextView tv_organ_name, tv_user_name, tv_tel, tv_address, tv_course_name,
            tv_category, tv_week, tv_begin_end_time, tv_price1, tv_price2, tv_price3,
            tv_course_room, order_id, order_time, hours_tv, minutes_tv, seconds_tv;
    private RadioButton radio0,radio1,radio2;
    private RadioGroup radioGroup1;
    private Button btn_pay;

    private List dataList = new ArrayList(); // 后台获取的数据
    private OrderChildListAdapter orderChildListAdapter;
    private String organUserId, timeId, thirtyTwo, fortyEight, sixtyFour ,orderAwaitTime;
    private String payType = "0"; // 默认微信支付
    private IWXAPI msgApi;
    private String orderId, enrollTime;
    private Integer courseHour = 32;
    private boolean isRun = true, isFirst = true;
    Long minutes, seconds;
    Integer second;
    Integer minute;
    Bundle bundle;


    // 支付宝支付回调
    @SuppressLint("HandlerLeak")
    private Handler mHandler = new Handler() {
        @SuppressWarnings("unused")
        public void handleMessage(Message msg) {
            switch (msg.what) {
                case SDK_PAY_FLAG: {
                    PayResult payResult = new PayResult((Map) msg.obj);
                    /**
                     * 同步返回的结果必须放置到服务端进行验证(验证的规则请看https://doc.open.alipay.com/doc2/
                     * detail.htm?spm=0.0.0.0.xdvAU6&treeId=59&articleId=103665&
                     * docType=1) 建议商户依赖异步通知
                     */
                    String resultInfo = payResult.getResult();// 同步返回需要验证的信息
                    String resultStatus = payResult.getResultStatus();
                    // 判断resultStatus 为 “9000” 则代表支付成功,具体状态码代表含义可参考接口文档
                    if (TextUtils.equals(resultStatus, "9000")) {

                        String json = ShareUtils.getOJson(AwaitOrderActivity.this,"jsonCourse","");
                        addEnrollInfo(json);
                    } else {
                        // 判断resultStatus 为非"9000"则代表可能支付失败
                        // "8000"代表支付结果因为支付渠道原因或者系统原因还在等待支付结果确认,最终交易是否成功以服务端异步通知为准(小概率状态)
                        if (TextUtils.equals(resultStatus, "8000")) {
                            System.out.println("---支付结果确认中---");

                        } else {
                            // 其他值就可以判断为支付失败,包括用户主动取消支付,或者系统返回的错误
                            System.out.println("---支付失败---");
                        }
                    }
                    break;
                }
                default:
                    break;
            }
        }
    };
    // 添加课程报名信息
    public  void addEnrollInfo(String json) {
        RestClient.builder().url(IpConfig.APP_ID+"/orderApp/addCourseEnroll")
                .loader(AwaitOrderActivity.this)
                .json(json)
                .success(new ISuccess() {
                    @Override
                    public void onSuccess(String response) {
                        Result result = new Result();
                        Type type = new TypeToken() {}.getType();
                        result = new Gson().fromJson(response, type);
                        Log.i("请求数据:",result.toString());

                        if(result.getStatus().equals("200")) {
                            LatteLoader.stopLoading();
                            Toast.makeText(AwaitOrderActivity.this, "支付成功 - 支付宝", Toast.LENGTH_SHORT).show();
                            IntentUtils.getInstence().intent(AwaitOrderActivity.this, PaySuccessActivity.class);
                            // 删除待支付订单
                            deleteAwaitOrder();
                            finish();
                            Log.i("error","-----------报名成功 - 支付宝!");
                        }else {
                            Log.i("error","-----------报名失败 - 支付宝!");
                        }
                    }
                })
                .failure(new IFailure() {
                    @Override
                    public void onFailure() {
                        System.out.println("添加课程报名信息时出错!");
                    }
                }).build().post();
    }
    private Handler timeHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            if (msg.what==1) {
                computeTime();
                if(minute==0 && second=10) {
                    minutes_tv.setText("00");
                    seconds_tv.setText(second+"");
                }else if(minute!=0 && minute=10) {
                    minutes_tv.setText(minute+"");
                    seconds_tv.setText(second+"");
                }
            }
        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        requestWindowFeature(Window.FEATURE_NO_TITLE);// Activity 中去掉标题栏
        supportRequestWindowFeature(Window.FEATURE_NO_TITLE); // AppCompatActivity 中去掉标题栏
        // 标题栏和状态栏颜色一致
        StatusBarUtils.setColor(AwaitOrderActivity.this);


        setContentView(R.layout.activity_await_order);

        //初始化操作
        msgApi = WXAPIFactory.createWXAPI(this, null);
        msgApi.registerApp(WeiXinConstants.APP_ID);


        initView();
        initData();
        startRun();
        initEvent();
        initAdapter();

    }

    /**
     * 开启倒计时
     */
    private void startRun() {
        new Thread(new Runnable() {

            @Override
            public void run() {
                while (isRun) {
                    try {
                        if(isFirst) {
                            isFirst = false; // 第一次进入的时候不执行延迟一秒
                        }else {
                            Thread.sleep(1000); // sleep 1000ms
                        }
                        Message message = Message.obtain();
                        message.what = 1;
                        timeHandler.sendMessage(message);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        }).start();
    }

    /**
     * 倒计时计算
     */
    private void computeTime() {
        second--;
        if (second             
关注
打赏
1660730345
查看更多评论
0.3410s