Преглед изворни кода

1、微信回调
2、启动页倒计时

RaoMeng пре 7 година
родитељ
комит
2e81ccc89c

+ 94 - 21
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/SplashActivity.java

@@ -6,12 +6,14 @@ import android.content.Intent;
 import android.graphics.Bitmap;
 import android.os.Bundle;
 import android.os.Handler;
+import android.os.Message;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.View;
 import android.view.animation.Animation;
 import android.view.animation.AnimationUtils;
 import android.widget.RelativeLayout;
+import android.widget.TextView;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
@@ -55,6 +57,8 @@ import java.io.File;
 import java.io.IOException;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Timer;
+import java.util.TimerTask;
 
 import pl.droidsonroids.gif.AnimationListener;
 import pl.droidsonroids.gif.GifDrawable;
@@ -67,16 +71,58 @@ import pl.droidsonroids.gif.GifImageView;
  * @version 1.0
  */
 public class SplashActivity extends BaseActivity {
+    private final int TIMER_SPLASH_COUNDOWN = 0x11;
+
     private RelativeLayout mSelectLv;
     private GifImageView mGifImageView;
+    private TextView mSkipTextView;
+
     private final String IS_FIRST = "IS_FIRST";
-    boolean isJumpable = false;
+    boolean isJumpable = false, isCountDown = false;
 
     private boolean mConfigReady = false;// 配置获取成功
     private GifDrawable mGifDrawable;
     private boolean mAnimationCompleted = false;
     private String mSplshUrl;
     private long mStartTime;
+    private int mCountDown = 5;
+    private Timer mTimer;
+    private Handler mHandler = new Handler() {
+        @Override
+        public void handleMessage(Message msg) {
+            if (msg.what == TIMER_SPLASH_COUNDOWN) {
+                if (mCountDown > 1) {
+                    isCountDown = false;
+                    mCountDown--;
+                    mSkipTextView.setText("点击跳过\t" + mCountDown);
+                } else {
+                    isCountDown = true;
+                    if (mTimer != null) {
+                        mTimer.cancel();
+                    }
+                    jumpImmediately();
+                }
+            }
+        }
+    };
+
+    private void jumpImmediately() {
+        int userStatus = LoginHelper.prepareUser(mContext);
+        switch (userStatus) {
+            case LoginHelper.STATUS_USER_FULL://5
+            case LoginHelper.STATUS_USER_NO_UPDATE://3
+                trun2NextPage(1);
+                break;
+            case LoginHelper.STATUS_USER_TOKEN_OVERDUE://2
+            case LoginHelper.STATUS_USER_SIMPLE_TELPHONE:
+                trun2NextPage(0);
+                break;
+            case LoginHelper.STATUS_NO_USER://0
+            default:
+                stay();
+                return;// must return
+        }
+    }
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -84,14 +130,16 @@ public class SplashActivity extends BaseActivity {
         setContentView(R.layout.activity_splash);
         getSupportActionBar().hide();
         StatusBarUtil.immersive(this, 0x00000000, 0.0f);
+        mSkipTextView = findViewById(R.id.splash_skip_tv);
 
         mStartTime = System.currentTimeMillis();
-        new Handler().postDelayed(new Runnable() {
+
+        /*new Handler().postDelayed(new Runnable() {
             @Override
             public void run() {
                 jump();
             }
-        }, 2000);
+        }, 2000);*/
         mGifImageView = findViewById(R.id.splash_gif_view);
         showSplash();
         mSelectLv = (RelativeLayout) findViewById(R.id.select_lv);
@@ -99,12 +147,35 @@ public class SplashActivity extends BaseActivity {
         initConfig();// 初始化配置
         updateAccountToken();//更新账户中心token
         requestSplash();
+
+        mSkipTextView.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                if (mTimer != null) {
+                    mTimer.cancel();
+                }
+                isCountDown = true;
+                jumpImmediately();
+            }
+        });
     }
 
     private void showSplash() {
         try {
             List<String> pictures = FileUtils.getPictures(Constants.SPLASH_FILE_PATH);
             if (pictures != null && pictures.size() > 0) {
+                isCountDown = false;
+                mSkipTextView.setVisibility(View.VISIBLE);
+                mTimer = new Timer();
+                mTimer.schedule(new TimerTask() {
+                    @Override
+                    public void run() {
+                        Message message = Message.obtain();
+                        message.what = TIMER_SPLASH_COUNDOWN;
+                        mHandler.sendMessage(message);
+                    }
+                }, 1000, 1000);
+
                 String localSplash = pictures.get(0);
                 int dotIndex = localSplash.lastIndexOf(".");
                 if (dotIndex >= 0) {
@@ -118,13 +189,19 @@ public class SplashActivity extends BaseActivity {
                         return;
                     }
                 } else {
+                    isCountDown = true;
+                    mSkipTextView.setVisibility(View.GONE);
                     mGifDrawable = new GifDrawable(getAssets(), "gif_splash_welcome.gif");
                 }
             } else {
+                isCountDown = true;
+                mSkipTextView.setVisibility(View.GONE);
                 mGifDrawable = new GifDrawable(getAssets(), "gif_splash_welcome.gif");
             }
         } catch (Exception e) {
             try {
+                isCountDown = true;
+                mSkipTextView.setVisibility(View.GONE);
                 mGifDrawable = new GifDrawable(getAssets(), "gif_splash_welcome.gif");
             } catch (IOException e1) {
             }
@@ -291,11 +368,14 @@ public class SplashActivity extends BaseActivity {
         if (isDestroyed()) {
             return;
         }
-        Log.d("gifdrawablejump", "animation->" + mAnimationCompleted);
         if (!mAnimationCompleted) {
             return;
         }
 
+        if (!isCountDown) {
+            return;
+        }
+
         long currentTime = System.currentTimeMillis();
         long duration = currentTime - mStartTime;
         if (duration < 2000) {
@@ -308,21 +388,7 @@ public class SplashActivity extends BaseActivity {
             return;
         }
 
-        int userStatus = LoginHelper.prepareUser(mContext);
-        switch (userStatus) {
-            case LoginHelper.STATUS_USER_FULL://5
-            case LoginHelper.STATUS_USER_NO_UPDATE://3
-                trun2NextPage(1);
-                break;
-            case LoginHelper.STATUS_USER_TOKEN_OVERDUE://2
-            case LoginHelper.STATUS_USER_SIMPLE_TELPHONE:
-                trun2NextPage(0);
-                break;
-            case LoginHelper.STATUS_NO_USER://0
-            default:
-                stay();
-                return;// must return
-        }
+        jumpImmediately();
     }
 
     private void isNeedLogin() {
@@ -411,11 +477,15 @@ public class SplashActivity extends BaseActivity {
                             new Handler().postDelayed(new Runnable() {
                                 @Override
                                 public void run() {
-                                    trun2NextPage(1);
+                                    if (isCountDown) {
+                                        trun2NextPage(1);
+                                    }
                                 }
                             }, 2000 - duration);
                         } else {
-                            trun2NextPage(1);
+                            if (isCountDown) {
+                                trun2NextPage(1);
+                            }
                         }
                     }
                 } else {// 登录失败
@@ -432,6 +502,9 @@ public class SplashActivity extends BaseActivity {
         Runnable runnable = new Runnable() {
             @Override
             public void run() {
+                if (mTimer != null) {
+                    mTimer.cancel();
+                }
                 UasLocationHelper.getInstance().requestLocation();
                 trun2NextPage2(type);
             }

+ 54 - 53
WeiChat/src/main/java/com/xzjmyk/pm/activity/wxapi/WXPayEntryActivity.java

@@ -47,12 +47,12 @@ import java.util.List;
  * @desc:微信支付回调,支付测试类
  * @author:Arison on 2018/5/2
  */
-public class WXPayEntryActivity extends AppCompatActivity implements View.OnClickListener, OnPlayListener,IWXAPIEventHandler {
+public class WXPayEntryActivity extends AppCompatActivity implements View.OnClickListener, OnPlayListener, IWXAPIEventHandler {
     private IWXAPI api;
     private static final String TAG = "PayTestActivity";
-   // String baseUrl = "http://nf20718343.iask.in:15161/";
+    // String baseUrl = "http://nf20718343.iask.in:15161/";
     String baseUrl = "http://qq784602719.imwork.net:43580/";
- 
+
     private ListView lvWxPay;
     private ListView lvAliPay;
 
@@ -79,46 +79,46 @@ public class WXPayEntryActivity extends AppCompatActivity implements View.OnClic
 //        lvWxPay.setAdapter(wxAdapter);
 //        lvAliPay.setAdapter(aliAdapter);
 //        initEvent();
-//        initData();
+        initData();
     }
 
     private void initEvent() {
         lvWxPay.setOnItemClickListener(new AdapterView.OnItemClickListener() {
             @Override
             public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
-                final PayTestAdapter.ViewHolder holder= (PayTestAdapter.ViewHolder) view.getTag();
-                LogUtil.d(TAG,"list action:"+holder.btnAction.getText().toString());
+                final PayTestAdapter.ViewHolder holder = (PayTestAdapter.ViewHolder) view.getTag();
+                LogUtil.d(TAG, "list action:" + holder.btnAction.getText().toString());
                 holder.btnAction.setOnClickListener(new View.OnClickListener() {
                     @Override
                     public void onClick(View view) {
-                        LogUtil.d(TAG,"action:"+holder.btnAction.getText().toString());
-                        if ("支付".equals(holder.btnAction.getText().toString())){
-                            ToastUtil.showToast(WXPayEntryActivity.this,"支付");
+                        LogUtil.d(TAG, "action:" + holder.btnAction.getText().toString());
+                        if ("支付".equals(holder.btnAction.getText().toString())) {
+                            ToastUtil.showToast(WXPayEntryActivity.this, "支付");
                             wxPay(holder.orderID.getText().toString());
-                        }else if("退款".equals(holder.btnAction.getText().toString())){
-                            ToastUtil.showToast(WXPayEntryActivity.this,"退款");
+                        } else if ("退款".equals(holder.btnAction.getText().toString())) {
+                            ToastUtil.showToast(WXPayEntryActivity.this, "退款");
                             wxRefund(holder.orderID.getText().toString());
                         }
                     }
                 });
-              
+
             }
         });
-        
+
         lvAliPay.setOnItemClickListener(new AdapterView.OnItemClickListener() {
             @Override
             public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
-                final PayTestAdapter.ViewHolder holder= (PayTestAdapter.ViewHolder) view.getTag();
-                LogUtil.d(TAG,"list action:"+holder.btnAction.getText().toString());
+                final PayTestAdapter.ViewHolder holder = (PayTestAdapter.ViewHolder) view.getTag();
+                LogUtil.d(TAG, "list action:" + holder.btnAction.getText().toString());
                 holder.btnAction.setOnClickListener(new View.OnClickListener() {
                     @Override
                     public void onClick(View view) {
-                        LogUtil.d(TAG,"action:"+holder.btnAction.getText().toString());
-                        if ("支付".equals(holder.btnAction.getText().toString())){
-                            ToastUtil.showToast(WXPayEntryActivity.this,"支付");
+                        LogUtil.d(TAG, "action:" + holder.btnAction.getText().toString());
+                        if ("支付".equals(holder.btnAction.getText().toString())) {
+                            ToastUtil.showToast(WXPayEntryActivity.this, "支付");
                             aliPay(holder.orderID.getText().toString());
-                        }else if("退款".equals(holder.btnAction.getText().toString())){
-                            ToastUtil.showToast(WXPayEntryActivity.this,"退款");
+                        } else if ("退款".equals(holder.btnAction.getText().toString())) {
+                            ToastUtil.showToast(WXPayEntryActivity.this, "退款");
                             aliRefund(holder.orderID.getText().toString());
                         }
                     }
@@ -141,7 +141,7 @@ public class WXPayEntryActivity extends AppCompatActivity implements View.OnClic
         api = WXAPIFactory.createWXAPI(this, Constants.WXPAY_APPID, false);
         api.handleIntent(intent, this);
     }
-    
+
     private void getAliPayOrders() {
         new HttpClient.Builder(baseUrl)
                 .isDebug(BaseConfig.isDebug())
@@ -149,13 +149,13 @@ public class WXPayEntryActivity extends AppCompatActivity implements View.OnClic
                 .Api()
                 .send(new HttpClient.Builder()
                         .url("alipay/orderquery")
-                        .add("userId",MyApplication.getInstance().mLoginUser.getTelephone())
+                        .add("userId", MyApplication.getInstance().mLoginUser.getTelephone())
                         .method(Method.POST)
                         .build(), new ResultSubscriber<>(new Result2Listener<Object>() {
 
                     @Override
                     public void onResponse(Object o) {
-                        if (!ListUtils.isEmpty(aliDatas)){
+                        if (!ListUtils.isEmpty(aliDatas)) {
                             aliDatas.clear();
                         }
                         LogUtil.i(TAG, "支付宝list:" + o.toString());
@@ -189,7 +189,7 @@ public class WXPayEntryActivity extends AppCompatActivity implements View.OnClic
                 .Api()
                 .send(new HttpClient.Builder()
                         .url("wxpay/wxAppQuery")
-                        .add("userid",MyApplication.getInstance().mLoginUser.getTelephone())
+                        .add("userid", MyApplication.getInstance().mLoginUser.getTelephone())
                         .method(Method.POST)
                         .build(), new ResultSubscriber<>(new Result2Listener<Object>() {
 
@@ -213,7 +213,7 @@ public class WXPayEntryActivity extends AppCompatActivity implements View.OnClic
                         if (!ListUtils.isEmpty(wxDatas)) {
                             wxAdapter.notifyDataSetChanged();
                         }
-                        ToastUtil.showToast(WXPayEntryActivity.this,"微信订单列表数据已刷新!");
+                        ToastUtil.showToast(WXPayEntryActivity.this, "微信订单列表数据已刷新!");
                     }
 
                     @Override
@@ -229,34 +229,34 @@ public class WXPayEntryActivity extends AppCompatActivity implements View.OnClic
         if (i == R.id.btn_wxPay) {
             wxPay(null);
         } else if (i == R.id.btn_wxRefund) {
-           // wxRefund();
+            // wxRefund();
         } else if (i == R.id.btn_aliPay) {
             aliPay(null);
         } else if (i == R.id.btn_aliRefund) {
-           // aliRefund();
+            // aliRefund();
         }
     }
 
     private void aliRefund(String outTradeNo) {
-        LogUtil.d(TAG,"outTradeNo:"+outTradeNo);
+        LogUtil.d(TAG, "outTradeNo:" + outTradeNo);
         new HttpClient.Builder(baseUrl)
                 .isDebug(BaseConfig.isDebug())
                 .build()
                 .Api()
                 .send(new HttpClient.Builder()
                         .url("alipay/tradeRefund")
-                        .add("outTradeNo",outTradeNo)
-                        .add("refundAmount","0.01")
-                        .add("fee","0.01")
+                        .add("outTradeNo", outTradeNo)
+                        .add("refundAmount", "0.01")
+                        .add("fee", "0.01")
                         .method(Method.POST)
                         .build(), new ResultSubscriber<>(new Result2Listener<Object>() {
 
                     @Override
                     public void onResponse(Object o) {
                         LogUtil.i(TAG, "Success:" + o.toString());
-                      
+
                         getAliPayOrders();
-                        
+
                     }
 
                     @Override
@@ -267,16 +267,16 @@ public class WXPayEntryActivity extends AppCompatActivity implements View.OnClic
     }
 
     private void aliPay(String orderId) {
-        LogUtil.d(TAG,"orderId:"+orderId);
+        LogUtil.d(TAG, "orderId:" + orderId);
         new HttpClient.Builder(baseUrl)
                 .isDebug(BaseConfig.isDebug())
                 .build()
                 .Api()
                 .send(new HttpClient.Builder()
                         .url("alipay/appPay")
-                        .add("userId",MyApplication.getInstance().mLoginUser.getTelephone())
-                        .add("totalAmount","0.01")
-                        .add("out_trade_no",orderId)
+                        .add("userId", MyApplication.getInstance().mLoginUser.getTelephone())
+                        .add("totalAmount", "0.01")
+                        .add("out_trade_no", orderId)
                         .method(Method.POST)
                         .build(), new ResultSubscriber<>(new Result2Listener<Object>() {
 
@@ -296,7 +296,7 @@ public class WXPayEntryActivity extends AppCompatActivity implements View.OnClic
     }
 
     private void wxRefund(String outTradeNo) {
-        LogUtil.d(TAG,"退款操作---商户订单号:"+outTradeNo);
+        LogUtil.d(TAG, "退款操作---商户订单号:" + outTradeNo);
         new HttpClient.Builder(baseUrl)
                 .isDebug(BaseConfig.isDebug())
                 .build()
@@ -304,15 +304,15 @@ public class WXPayEntryActivity extends AppCompatActivity implements View.OnClic
                 .send(new HttpClient.Builder()
                         .url("wxpay/appRefund")
                         .add("outTradeNo", outTradeNo)
-                        .add("refund_fee","0.01")
-                        .add("fee","0.01")
+                        .add("refund_fee", "0.01")
+                        .add("fee", "0.01")
                         .method(Method.POST)
                         .build(), new ResultSubscriber<>(new Result2Listener<Object>() {
 
                     @Override
                     public void onResponse(Object o) {
                         Log.i(TAG, "Success:" + o.toString());
-                         getWxOrders();
+                        getWxOrders();
                     }
 
                     @Override
@@ -323,7 +323,7 @@ public class WXPayEntryActivity extends AppCompatActivity implements View.OnClic
     }
 
     private void wxPay(String orderId) {
-        LogUtil.d(TAG,"userid:"+MyApplication.getInstance().mLoginUser.getTelephone()+" orderId:"+orderId);
+        LogUtil.d(TAG, "userid:" + MyApplication.getInstance().mLoginUser.getTelephone() + " orderId:" + orderId);
         new HttpClient.Builder(baseUrl)
                 .isDebug(BaseConfig.isDebug())
                 .build()
@@ -331,8 +331,8 @@ public class WXPayEntryActivity extends AppCompatActivity implements View.OnClic
                 .send(new HttpClient.Builder()
                         .url("wxpay/appPay")
                         .add("userid", MyApplication.getInstance().mLoginUser.getTelephone())
-                        .add("fee","0.01")
-                        .add("out_trade_no",orderId)
+                        .add("fee", "0.01")
+                        .add("out_trade_no", orderId)
                         .method(Method.POST)
                         .build(), new ResultSubscriber<>(new Result2Listener<Object>() {
 
@@ -355,8 +355,8 @@ public class WXPayEntryActivity extends AppCompatActivity implements View.OnClic
 
     @Override
     public void onSuccess(String resultStatus, String resultInfo) {
-        LogUtil.d(TAG,"支付宝支付成功!");
-      // getAliPayOrders();
+        LogUtil.d(TAG, "支付宝支付成功!");
+        // getAliPayOrders();
 
     }
 
@@ -365,17 +365,17 @@ public class WXPayEntryActivity extends AppCompatActivity implements View.OnClic
         //getAliPayOrders();
     }
 
-    
+
     //
     @Override
     public void onReq(BaseReq baseReq) {
-        
+
     }
 
     @Override
     public void onResp(BaseResp baseResp) {
         LogUtil.d(TAG, "onPayFinish, errCode = " + baseResp.errCode);
-       // getWxOrders();
+        // getWxOrders();
         if (baseResp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
             if (baseResp.errCode == BaseResp.ErrCode.ERR_OK) {
                 Toast.makeText(this, R.string.str_error_wechat_pay_success, Toast.LENGTH_LONG).show();
@@ -385,6 +385,7 @@ public class WXPayEntryActivity extends AppCompatActivity implements View.OnClic
                 Toast.makeText(this, R.string.str_error_wechat_pay_cancel, Toast.LENGTH_LONG).show();
             }
         }
+        finish();
     }
 
 
@@ -550,11 +551,11 @@ public class WXPayEntryActivity extends AppCompatActivity implements View.OnClic
             private TextView btnAction;
 
             public ViewHolder(View view) {
-                orderID =  view.findViewById(R.id.orderID);
-                orderState =  view.findViewById(R.id.orderState);
+                orderID = view.findViewById(R.id.orderID);
+                orderState = view.findViewById(R.id.orderState);
                 orderNum = view.findViewById(R.id.orderNum);
-                orderTime =  view.findViewById(R.id.orderTime);
-                orderNo =  view.findViewById(R.id.orderNo);
+                orderTime = view.findViewById(R.id.orderTime);
+                orderNo = view.findViewById(R.id.orderNo);
                 btnAction = view.findViewById(R.id.btn_action);
             }
         }

+ 6 - 0
WeiChat/src/main/res/drawable/shape_splash_count.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+       android:shape="rectangle">
+    <corners android:radius="20dp" />
+    <solid android:color="#88cccccc" />
+</shape>

+ 27 - 4
WeiChat/src/main/res/layout/activity_splash.xml

@@ -1,14 +1,37 @@
 <?xml version="1.0" encoding="utf-8"?>
 <FrameLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent">
 
-    <pl.droidsonroids.gif.GifImageView
-        android:id="@+id/splash_gif_view"
+    <RelativeLayout
         android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:scaleType="fitXY" />
+        android:layout_height="match_parent">
+
+        <pl.droidsonroids.gif.GifImageView
+            android:id="@+id/splash_gif_view"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:scaleType="fitXY" />
+
+        <TextView
+            android:id="@+id/splash_skip_tv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_alignParentRight="true"
+            android:layout_marginRight="20dp"
+            android:layout_marginTop="36dp"
+            android:background="@drawable/shape_splash_count"
+            android:paddingBottom="6dp"
+            android:paddingLeft="14dp"
+            android:paddingRight="14dp"
+            android:paddingTop="6dp"
+            android:text="点击跳过\t5"
+            android:textColor="@color/black"
+            android:visibility="gone" />
+
+    </RelativeLayout>
 
     <RelativeLayout
         android:id="@+id/select_lv"

+ 2 - 2
app_modular/apputils/src/main/java/com/modular/apputils/utils/playsdk/WxPlay.java

@@ -47,9 +47,9 @@ public class WxPlay {
             request.sign = JSONUtil.getText(orderObject, "sign");
 
            boolean result= wxApi.sendReq(request);
-           if (result){
+           /*if (result){
                onPlayListener.onSuccess("200","订单支付成功");
-           }
+           }*/
         } else {
             onPlayListener.onFailure("500", "订单信息获取异常");
         }