|
@@ -0,0 +1,657 @@
|
|
|
+package com.edufound.android.xyyf.main;
|
|
|
+
|
|
|
+import android.annotation.SuppressLint;
|
|
|
+import android.annotation.TargetApi;
|
|
|
+import android.app.Activity;
|
|
|
+import android.app.Dialog;
|
|
|
+import android.content.Context;
|
|
|
+import android.content.Intent;
|
|
|
+import android.graphics.Bitmap;
|
|
|
+import android.graphics.Color;
|
|
|
+import android.media.MediaMetadataRetriever;
|
|
|
+import android.media.ThumbnailUtils;
|
|
|
+import android.os.Build;
|
|
|
+import android.os.Bundle;
|
|
|
+import android.os.Handler;
|
|
|
+import android.os.Message;
|
|
|
+import android.os.Process;
|
|
|
+import android.provider.MediaStore;
|
|
|
+import android.support.annotation.Nullable;
|
|
|
+import android.view.Display;
|
|
|
+import android.view.Gravity;
|
|
|
+import android.view.KeyEvent;
|
|
|
+import android.view.LayoutInflater;
|
|
|
+import android.view.View;
|
|
|
+import android.view.ViewGroup;
|
|
|
+import android.view.Window;
|
|
|
+import android.view.WindowManager;
|
|
|
+import android.webkit.JsResult;
|
|
|
+import android.webkit.WebChromeClient;
|
|
|
+import android.webkit.WebResourceRequest;
|
|
|
+import android.webkit.WebResourceResponse;
|
|
|
+import android.webkit.WebSettings;
|
|
|
+import android.webkit.WebView;
|
|
|
+import android.webkit.WebViewClient;
|
|
|
+import android.widget.FrameLayout;
|
|
|
+import android.widget.TextView;
|
|
|
+
|
|
|
+import com.cncoderx.wheelview.OnWheelChangedListener;
|
|
|
+import com.cncoderx.wheelview.WheelView;
|
|
|
+import com.edufound.android.xyyf.R;
|
|
|
+import com.edufound.android.xyyf.application.EApplication;
|
|
|
+import com.edufound.android.xyyf.base.BaseModel;
|
|
|
+import com.edufound.android.xyyf.base.BasePersenter;
|
|
|
+import com.edufound.android.xyyf.interfaces.EfunboxPayInterfaces;
|
|
|
+import com.edufound.android.xyyf.interfaces.JsInterfaces;
|
|
|
+import com.edufound.android.xyyf.util.ContextUtil;
|
|
|
+import com.edufound.android.xyyf.util.DeviceUtil;
|
|
|
+import com.edufound.android.xyyf.util.DeviceUuidFactory;
|
|
|
+import com.edufound.android.xyyf.util.Logger;
|
|
|
+import com.edufound.android.xyyf.util.OKHttpUtil;
|
|
|
+import com.edufound.android.xyyf.util.SPutil;
|
|
|
+import com.edufound.android.xyyf.util.ToastUtil;
|
|
|
+import com.edufound.android.xyyf.view.ErrorView;
|
|
|
+
|
|
|
+import java.io.IOException;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Calendar;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+import okhttp3.Call;
|
|
|
+import okhttp3.Callback;
|
|
|
+import okhttp3.Response;
|
|
|
+
|
|
|
+public class MainPersenter implements MainIPersenter {
|
|
|
+
|
|
|
+ public static final int WECHAT_LOGIN = 0x76761;
|
|
|
+ public static final int PAY_RESULT = 0x76762;
|
|
|
+ private static MainView mView = null;
|
|
|
+ private MainModel mModel = null;
|
|
|
+ private JsInterfaces mJsInterfaces = null;
|
|
|
+ private EfunboxPayInterfaces mPayInterfaces = null;
|
|
|
+ private String mLoadUrl;
|
|
|
+ ErrorView mErrorView;
|
|
|
+ Dialog mErrorViewDialog;
|
|
|
+ private DeviceUtil deviceUtil;
|
|
|
+
|
|
|
+
|
|
|
+ public MainPersenter(MainView view) {
|
|
|
+ mView = view;
|
|
|
+ mModel = new MainModel();
|
|
|
+ deviceUtil = new DeviceUtil();
|
|
|
+ mJsInterfaces = new JsInterfaces(mView);
|
|
|
+ mPayInterfaces = new EfunboxPayInterfaces(mView);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void loadData() {
|
|
|
+ mModel.LoadData(new BaseModel.LoadDataBack() {
|
|
|
+ @Override
|
|
|
+ public void success(String datajson) {
|
|
|
+ Logger.e("datajson:" + datajson);
|
|
|
+ mView.showData(datajson);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void failure() {
|
|
|
+ Logger.e("failure");
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @SuppressLint("JavascriptInterface")
|
|
|
+ @Override
|
|
|
+ public void initWebView(final WebView webview) {
|
|
|
+ if (Build.VERSION.SDK_INT >= 19) {
|
|
|
+ webview.getSettings().setLoadsImagesAutomatically(true);
|
|
|
+ } else {
|
|
|
+ webview.getSettings().setLoadsImagesAutomatically(false);
|
|
|
+ }
|
|
|
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
|
|
+ webview.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
|
|
|
+ }
|
|
|
+ webview.requestFocus(View.FOCUS_DOWN);
|
|
|
+ webview.getSettings().setJavaScriptEnabled(true);
|
|
|
+ webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
|
|
|
+ webview.getSettings().setDomStorageEnabled(true);
|
|
|
+
|
|
|
+ webview.getSettings().setBlockNetworkImage(false);
|
|
|
+
|
|
|
+ webview.setBackgroundColor(Color.TRANSPARENT);
|
|
|
+
|
|
|
+ webview.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
|
|
|
+ webview.getSettings().setUseWideViewPort(true);
|
|
|
+ webview.getSettings().setLoadWithOverviewMode(true);
|
|
|
+ webview.getSettings().setTextZoom(100);
|
|
|
+ webview.setWebChromeClient(new WebChromeClient() {
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
|
|
|
+
|
|
|
+ return super.onJsAlert(view, url, message, result);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onShowCustomView(View view, CustomViewCallback callback) {
|
|
|
+
|
|
|
+ super.onShowCustomView(view, callback);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onProgressChanged(WebView view, int newProgress) {
|
|
|
+
|
|
|
+ if (newProgress >= 100) {
|
|
|
+ }
|
|
|
+ super.onProgressChanged(view, newProgress);
|
|
|
+ }
|
|
|
+
|
|
|
+ });
|
|
|
+
|
|
|
+ webview.setWebViewClient(new WebViewClient() {
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean shouldOverrideUrlLoading(WebView view, String url) {
|
|
|
+
|
|
|
+ view.loadUrl(url);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
|
|
|
+ super.onReceivedError(view, errorCode, description, failingUrl);
|
|
|
+ view.loadUrl("");
|
|
|
+ showDisConnNeWorkWindow();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {
|
|
|
+ super.onReceivedHttpError(view, request, errorResponse);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onPageStarted(WebView view, String url, Bitmap favicon) {
|
|
|
+ super.onPageStarted(view, url, favicon);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onPageFinished(WebView view, String url) {
|
|
|
+ if (!webview.getSettings().getLoadsImagesAutomatically()) {
|
|
|
+ webview.getSettings().setLoadsImagesAutomatically(true);
|
|
|
+ }
|
|
|
+ mView.hideLoading();
|
|
|
+ super.onPageFinished(view, url);
|
|
|
+ }
|
|
|
+
|
|
|
+ });
|
|
|
+ webview.addJavascriptInterface(mJsInterfaces, "efunboxJS");
|
|
|
+ webview.addJavascriptInterface(mPayInterfaces, "efunboxPay");
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ public int dip2px(Context context, float dpValue) {
|
|
|
+ final float scale = context.getResources().getDisplayMetrics().density;
|
|
|
+ return (int) (dpValue * scale + 0.5f);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public JsInterfaces getJsInterfaces() {
|
|
|
+ return mJsInterfaces;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public EfunboxPayInterfaces getPayInterfaces() {
|
|
|
+ return mPayInterfaces;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void openWeb(Intent intent) {
|
|
|
+ mView.loadUrl("");
|
|
|
+ mLoadUrl = mModel.getDefaultLoadUrl();
|
|
|
+ String intent_url = intent.getStringExtra("url");
|
|
|
+ Logger.e("-----------------------------");
|
|
|
+ Logger.e("intent_url:" + intent_url);
|
|
|
+ Logger.e("-----------------------------");
|
|
|
+ if (intent_url != null && !intent_url.isEmpty()) {
|
|
|
+ mLoadUrl = intent_url;
|
|
|
+ }
|
|
|
+ String preuuid = SPutil.getPrefString(ContextUtil.getContext(), DeviceUuidFactory.UUID_SPKEY, "");
|
|
|
+ if (preuuid.equals("")) {
|
|
|
+ preuuid = DeviceUuidFactory.getUuid().toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ StringBuffer buffer = new StringBuffer();
|
|
|
+ buffer.append("appCode=" + EApplication.getAppCode());
|
|
|
+ buffer.append("&uuid=" + preuuid);
|
|
|
+ buffer.append("&width=" + deviceUtil.getWidth(mView.getActivity()));
|
|
|
+ buffer.append("&height=" + deviceUtil.getHeight(mView.getActivity()));
|
|
|
+ buffer.append("&version=" + deviceUtil.getVersionCode(mView.getActivity()));
|
|
|
+ mLoadUrl += buffer.toString();
|
|
|
+ Logger.DebugE("LOADURL=" + mLoadUrl);
|
|
|
+ mView.loadUrl(mLoadUrl);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean onKeyDown(int keycode, KeyEvent event) {
|
|
|
+ switch (keycode) {
|
|
|
+ case KeyEvent.KEYCODE_DPAD_CENTER:
|
|
|
+ case KeyEvent.KEYCODE_ENTER:
|
|
|
+ mView.loadJsMehtod("boxEventHandler('key_down','KEY_SELECT')");
|
|
|
+ break;
|
|
|
+ case KeyEvent.KEYCODE_BACK:
|
|
|
+ case KeyEvent.KEYCODE_ESCAPE:
|
|
|
+ mView.loadJsMehtod("boxEventHandler('key_down','KEY_BACK')");
|
|
|
+ return true;
|
|
|
+ case KeyEvent.KEYCODE_HOME:
|
|
|
+
|
|
|
+ Logger.DebugE("click home");
|
|
|
+ EApplication.exitApp();
|
|
|
+ break;
|
|
|
+ case KeyEvent.KEYCODE_DPAD_UP:
|
|
|
+
|
|
|
+ mView.loadJsMehtod("boxEventHandler('key_down','KEY_UP')");
|
|
|
+ break;
|
|
|
+ case KeyEvent.KEYCODE_DPAD_RIGHT:
|
|
|
+
|
|
|
+ mView.loadJsMehtod("boxEventHandler('key_down','KEY_RIGHT')");
|
|
|
+ break;
|
|
|
+ case KeyEvent.KEYCODE_DPAD_DOWN:
|
|
|
+
|
|
|
+ mView.loadJsMehtod("boxEventHandler('key_down','KEY_DOWN')");
|
|
|
+ break;
|
|
|
+ case KeyEvent.KEYCODE_DPAD_LEFT:
|
|
|
+
|
|
|
+ mView.loadJsMehtod("boxEventHandler('key_down','KEY_LEFT')");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean onKeyUp(int keycode, KeyEvent event) {
|
|
|
+
|
|
|
+ if (mView.getActivityPay()) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ switch (keycode) {
|
|
|
+ case KeyEvent.KEYCODE_DPAD_CENTER:
|
|
|
+ case KeyEvent.KEYCODE_ENTER:
|
|
|
+
|
|
|
+ mView.loadJsMehtod("boxEventHandler('key_up','KEY_SELECT')");
|
|
|
+ break;
|
|
|
+ case KeyEvent.KEYCODE_BACK:
|
|
|
+ case KeyEvent.KEYCODE_ESCAPE:
|
|
|
+
|
|
|
+ mView.loadJsMehtod("boxEventHandler('key_up','KEY_BACK')");
|
|
|
+
|
|
|
+ return true;
|
|
|
+ case KeyEvent.KEYCODE_DPAD_UP:
|
|
|
+
|
|
|
+ mView.loadJsMehtod("boxEventHandler('key_up','KEY_UP')");
|
|
|
+ break;
|
|
|
+ case KeyEvent.KEYCODE_DPAD_RIGHT:
|
|
|
+
|
|
|
+ mView.loadJsMehtod("boxEventHandler('key_up','KEY_RIGHT')");
|
|
|
+ break;
|
|
|
+ case KeyEvent.KEYCODE_DPAD_DOWN:
|
|
|
+
|
|
|
+ mView.loadJsMehtod("boxEventHandler('key_up','KEY_DOWN')");
|
|
|
+ break;
|
|
|
+ case KeyEvent.KEYCODE_DPAD_LEFT:
|
|
|
+
|
|
|
+ mView.loadJsMehtod("boxEventHandler('key_up','KEY_LEFT')");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
|
|
|
+ switch (requestCode) {
|
|
|
+ case EfunboxPayInterfaces.START_PAY_DB:
|
|
|
+ if (resultCode == Activity.RESULT_OK) {
|
|
|
+ Bundle bundle = data.getExtras();
|
|
|
+ int back = bundle.getInt("back");
|
|
|
+
|
|
|
+ String Out_trade_no = bundle.getString("Out_trade_no");
|
|
|
+
|
|
|
+ } else if (requestCode == Activity.RESULT_CANCELED) {
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case EfunboxPayInterfaces.START_PAY_HUANWANG:
|
|
|
+ break;
|
|
|
+ case EfunboxPayInterfaces.START_PAY_SKYWORTH:
|
|
|
+
|
|
|
+ break;
|
|
|
+ case EfunboxPayInterfaces.START_PAY_XIAOMI:
|
|
|
+
|
|
|
+ break;
|
|
|
+
|
|
|
+ }
|
|
|
+ mView.acPostDelayed(new Runnable() {
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ mView.setActivityPay(false);
|
|
|
+ }
|
|
|
+ }, 1000);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void postUserTime(long time) {
|
|
|
+ try {
|
|
|
+ OKHttpUtil.getInstance().doGetSync("?time=" + time, new Callback() {
|
|
|
+ @Override
|
|
|
+ public void onFailure(Call call, IOException e) {
|
|
|
+ Logger.e("postUserTime---onFailure---");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onResponse(Call call, Response response) throws IOException {
|
|
|
+ Logger.e("postUserTime---onResponse---");
|
|
|
+ EApplication.clearActivity();
|
|
|
+ android.os.Process.killProcess(Process.myPid());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onDisConnNetWork() {
|
|
|
+
|
|
|
+ mView.stopWebView();
|
|
|
+ showDisConnNeWorkWindow();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onConnNetWork() {
|
|
|
+ Logger.e("onConnNetWork");
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ void showDisConnNeWorkWindow() {
|
|
|
+ if (mErrorView == null) {
|
|
|
+ mErrorViewDialog = new Dialog(mView.getActivity());
|
|
|
+ try {
|
|
|
+ int dividerID = mView.getActivity().getResources().getIdentifier("android:id/titleDivider", null, null);
|
|
|
+ View divider = mErrorViewDialog.findViewById(dividerID);
|
|
|
+ divider.setBackgroundColor(Color.TRANSPARENT);
|
|
|
+ } catch (Exception e) {
|
|
|
+
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ mErrorView = new ErrorView(mView);
|
|
|
+ mErrorView.setViewBgColor(Color.TRANSPARENT);
|
|
|
+ mErrorView.setBtnClickListener(new ErrorView.BtnClickListener() {
|
|
|
+ @Override
|
|
|
+ public void clickRelase() {
|
|
|
+
|
|
|
+ if (ContextUtil.getNetWorkState()) {
|
|
|
+ mView.destroyWeb();
|
|
|
+ mErrorViewDialog.dismiss();
|
|
|
+ mView.resumeWebView();
|
|
|
+ openWeb(mView.getActivity().getIntent());
|
|
|
+ } else {
|
|
|
+ ToastUtil.showToast("请检查网络连接状况");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void clickExit() {
|
|
|
+
|
|
|
+ mErrorViewDialog.dismiss();
|
|
|
+ mView.getActivity().finish();
|
|
|
+ EApplication.clearActivity();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ mErrorViewDialog.setCancelable(false);
|
|
|
+ mErrorViewDialog.setContentView(mErrorView);
|
|
|
+ Window dialogWindow = mErrorViewDialog.getWindow();
|
|
|
+ dialogWindow.setGravity(Gravity.CENTER);
|
|
|
+ dialogWindow.getDecorView().setPadding(0, 0, 0, 0);
|
|
|
+ dialogWindow.getDecorView().setBackgroundColor(Color.TRANSPARENT);
|
|
|
+ WindowManager m = mView.getActivity().getWindowManager();
|
|
|
+ Display d = m.getDefaultDisplay();
|
|
|
+ WindowManager.LayoutParams p = dialogWindow.getAttributes();
|
|
|
+ p.height = (int) (d.getHeight() * 1);
|
|
|
+ p.width = WindowManager.LayoutParams.MATCH_PARENT;
|
|
|
+ p.horizontalMargin = 0;
|
|
|
+ dialogWindow.setAttributes(p);
|
|
|
+ }
|
|
|
+ if (!mErrorViewDialog.isShowing()) {
|
|
|
+ mErrorViewDialog.show();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public static Handler mPersenterHandler = new Handler(new Handler.Callback() {
|
|
|
+ @Override
|
|
|
+ public boolean handleMessage(Message msg) {
|
|
|
+ switch (msg.what) {
|
|
|
+ case WECHAT_LOGIN:
|
|
|
+
|
|
|
+ mView.loadJsMehtod("WeChatLoginSuccess('" + msg.obj.toString() + "')");
|
|
|
+ break;
|
|
|
+ case PAY_RESULT:
|
|
|
+ mView.loadJsMehtod("commonPayResult(" + msg.obj.toString() + ")");
|
|
|
+ Intent intent_restart = new Intent(ContextUtil.CLOSE_ACTIVITY_PAY);
|
|
|
+ mView.getActivity().sendBroadcast(intent_restart);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
|
|
|
+ public Bitmap createVideoThumbnail(String url, int width, int height) {
|
|
|
+ Bitmap bitmap = null;
|
|
|
+ MediaMetadataRetriever retriever = new MediaMetadataRetriever();
|
|
|
+ int kind = MediaStore.Video.Thumbnails.MINI_KIND;
|
|
|
+ try {
|
|
|
+ if (Build.VERSION.SDK_INT >= 14) {
|
|
|
+ retriever.setDataSource(url, new HashMap<String, String>());
|
|
|
+ } else {
|
|
|
+ retriever.setDataSource(url);
|
|
|
+ }
|
|
|
+ bitmap = retriever.getFrameAtTime(1000);
|
|
|
+ } catch (IllegalArgumentException ex) {
|
|
|
+
|
|
|
+ } catch (RuntimeException ex) {
|
|
|
+
|
|
|
+ } finally {
|
|
|
+ try {
|
|
|
+ retriever.release();
|
|
|
+ } catch (RuntimeException ex) {
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (kind == MediaStore.Images.Thumbnails.MICRO_KIND && bitmap != null) {
|
|
|
+ bitmap = ThumbnailUtils.extractThumbnail(bitmap, width, height,
|
|
|
+ ThumbnailUtils.OPTIONS_RECYCLE_INPUT);
|
|
|
+ }
|
|
|
+ return bitmap;
|
|
|
+ }
|
|
|
+
|
|
|
+ int getYear = 0;
|
|
|
+ int getMonth = 0;
|
|
|
+ int getDay = 0;
|
|
|
+ int year_index = 0;
|
|
|
+ List<String> view_y_list = new ArrayList<>();
|
|
|
+ List<String> view_m_list = new ArrayList<>();
|
|
|
+ List<String> view_d_list1 = new ArrayList<>();
|
|
|
+ List<String> view_d_list2 = new ArrayList<>();
|
|
|
+ List<String> view_d_list3 = new ArrayList<>();
|
|
|
+ List<String> view_d_list4 = new ArrayList<>();
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void showDateView(final int show_type) {
|
|
|
+ mView.getRootView().post(new Runnable() {
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ Calendar selectedDate = Calendar.getInstance();
|
|
|
+
|
|
|
+ int year = selectedDate.get(Calendar.YEAR);
|
|
|
+
|
|
|
+
|
|
|
+ int month = selectedDate.get(Calendar.MONTH);
|
|
|
+
|
|
|
+ int date = selectedDate.get(Calendar.DATE);
|
|
|
+ if (view_y_list.size() == 0) {
|
|
|
+ for (int i = year - 50; i < year + 150; i++) {
|
|
|
+ year_index++;
|
|
|
+ if (i < year) {
|
|
|
+ year_index++;
|
|
|
+ }
|
|
|
+ view_y_list.add(String.valueOf(i) + "年");
|
|
|
+ }
|
|
|
+
|
|
|
+ for (int i = 0; i < 12; i++) {
|
|
|
+ view_m_list.add(String.valueOf(i + 1) + "月");
|
|
|
+ }
|
|
|
+
|
|
|
+ for (int i = 0; i < 31; i++) {
|
|
|
+ view_d_list1.add(String.valueOf(i + 1) + "日");
|
|
|
+ }
|
|
|
+
|
|
|
+ for (int i = 0; i < 30; i++) {
|
|
|
+ view_d_list2.add(String.valueOf(i + 1) + "日");
|
|
|
+ }
|
|
|
+
|
|
|
+ for (int i = 0; i < 28; i++) {
|
|
|
+ view_d_list3.add(String.valueOf(i + 1) + "日");
|
|
|
+ }
|
|
|
+ for (int i = 0; i < 29; i++) {
|
|
|
+ view_d_list4.add(String.valueOf(i + 1) + "日");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ final FrameLayout layout = (FrameLayout) LayoutInflater.from(mView.getActivity()).inflate(R.layout.date_view, null);
|
|
|
+ layout.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
|
|
|
+ TextView cancel = layout.findViewById(R.id.date_cancel);
|
|
|
+ TextView ok = layout.findViewById(R.id.date_ok);
|
|
|
+ TextView title = layout.findViewById(R.id.date_title);
|
|
|
+ cancel.setOnClickListener(new View.OnClickListener() {
|
|
|
+ @Override
|
|
|
+ public void onClick(View v) {
|
|
|
+ mView.getRootView().removeView(layout);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ ok.setOnClickListener(new View.OnClickListener() {
|
|
|
+ @Override
|
|
|
+ public void onClick(View v) {
|
|
|
+ mView.loadJSMehtodPost("getAndroidDate('" + getYear + "','" + getMonth + "','" + getDay + "')");
|
|
|
+ mView.getRootView().removeView(layout);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ WheelView view_y = layout.findViewById(R.id.date_whell_y);
|
|
|
+ WheelView view_m = layout.findViewById(R.id.date_whell_m);
|
|
|
+ final WheelView view_d = layout.findViewById(R.id.date_whell_d);
|
|
|
+ if (show_type != 1) {
|
|
|
+ view_y.setVisibility(View.GONE);
|
|
|
+ title.setVisibility(View.GONE);
|
|
|
+ }
|
|
|
+ view_y.setEntries(view_y_list);
|
|
|
+ view_m.setEntries(view_m_list);
|
|
|
+ view_y.setOnWheelChangedListener(new OnWheelChangedListener() {
|
|
|
+ @Override
|
|
|
+ public void onChanged(WheelView view, int oldIndex, int newIndex) {
|
|
|
+ CharSequence text = view.getItem(newIndex);
|
|
|
+
|
|
|
+ getYear = Integer.valueOf(text.subSequence(0, text.toString().indexOf("年")).toString());
|
|
|
+ changeDay(view_d);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ view_m.setOnWheelChangedListener(new OnWheelChangedListener() {
|
|
|
+ @Override
|
|
|
+ public void onChanged(WheelView view, int oldIndex, int newIndex) {
|
|
|
+ CharSequence text = view.getItem(newIndex);
|
|
|
+
|
|
|
+ getMonth = Integer.valueOf(text.subSequence(0, text.toString().indexOf("月")).toString());
|
|
|
+ changeDay(view_d);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ view_d.setOnWheelChangedListener(new OnWheelChangedListener() {
|
|
|
+ @Override
|
|
|
+ public void onChanged(WheelView view, int oldIndex, int newIndex) {
|
|
|
+ CharSequence text = view.getItem(newIndex);
|
|
|
+
|
|
|
+ getDay = Integer.valueOf(text.subSequence(0, text.toString().indexOf("日")).toString());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ view_y.setCurrentIndex(year_index);
|
|
|
+ view_m.setCurrentIndex(month);
|
|
|
+ view_d.setCurrentIndex(date - 1);
|
|
|
+ mView.getRootView().addView(layout);
|
|
|
+
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ void changeDay(WheelView view_d) {
|
|
|
+ switch (getMonth) {
|
|
|
+ case 1:
|
|
|
+ case 3:
|
|
|
+ case 5:
|
|
|
+ case 7:
|
|
|
+ case 8:
|
|
|
+ case 10:
|
|
|
+ case 12:
|
|
|
+ view_d.setEntries(view_d_list1);
|
|
|
+ break;
|
|
|
+ case 4:
|
|
|
+ case 6:
|
|
|
+ case 9:
|
|
|
+ case 11:
|
|
|
+ view_d.setEntries(view_d_list2);
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+
|
|
|
+ if ((getYear % 4 == 0 && getYear % 100 != 0)
|
|
|
+ || (getYear % 400 == 0)) {
|
|
|
+
|
|
|
+ view_d.setEntries(view_d_list4);
|
|
|
+ } else {
|
|
|
+
|
|
|
+ view_d.setEntries(view_d_list3);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+interface MainIPersenter extends BasePersenter {
|
|
|
+ void initWebView(WebView webview);
|
|
|
+
|
|
|
+ JsInterfaces getJsInterfaces();
|
|
|
+
|
|
|
+ EfunboxPayInterfaces getPayInterfaces();
|
|
|
+
|
|
|
+ void openWeb(Intent intent);
|
|
|
+
|
|
|
+ boolean onKeyDown(int keycode, KeyEvent event);
|
|
|
+
|
|
|
+ boolean onKeyUp(int keycode, KeyEvent event);
|
|
|
+
|
|
|
+ void onActivityResult(int requestCode, int resultCode, @Nullable Intent data);
|
|
|
+
|
|
|
+ void postUserTime(long time);
|
|
|
+
|
|
|
+ void showDateView(int type);
|
|
|
+}
|