MainPersenter.java 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685
  1. package com.edufound.android.xyyf.main;
  2. import android.annotation.SuppressLint;
  3. import android.annotation.TargetApi;
  4. import android.app.Activity;
  5. import android.app.Dialog;
  6. import android.content.Context;
  7. import android.content.Intent;
  8. import android.graphics.Bitmap;
  9. import android.graphics.BitmapFactory;
  10. import android.graphics.Color;
  11. import android.media.MediaMetadataRetriever;
  12. import android.media.ThumbnailUtils;
  13. import android.os.Build;
  14. import android.os.Bundle;
  15. import android.os.Handler;
  16. import android.os.Message;
  17. import android.os.Process;
  18. import android.provider.MediaStore;
  19. import android.support.annotation.Nullable;
  20. import android.view.Display;
  21. import android.view.Gravity;
  22. import android.view.KeyEvent;
  23. import android.view.LayoutInflater;
  24. import android.view.View;
  25. import android.view.ViewGroup;
  26. import android.view.Window;
  27. import android.view.WindowManager;
  28. import android.webkit.JsResult;
  29. import android.webkit.WebChromeClient;
  30. import android.webkit.WebResourceRequest;
  31. import android.webkit.WebResourceResponse;
  32. import android.webkit.WebSettings;
  33. import android.webkit.WebView;
  34. import android.webkit.WebViewClient;
  35. import android.widget.FrameLayout;
  36. import android.widget.TextView;
  37. import com.cncoderx.wheelview.OnWheelChangedListener;
  38. import com.cncoderx.wheelview.WheelView;
  39. import com.edufound.android.xyyf.R;
  40. import com.edufound.android.xyyf.application.EApplication;
  41. import com.edufound.android.xyyf.base.BaseModel;
  42. import com.edufound.android.xyyf.base.BasePersenter;
  43. import com.edufound.android.xyyf.interfaces.EfunboxPayInterfaces;
  44. import com.edufound.android.xyyf.interfaces.JsInterfaces;
  45. import com.edufound.android.xyyf.util.ContextUtil;
  46. import com.edufound.android.xyyf.util.DeviceUtil;
  47. import com.edufound.android.xyyf.util.DeviceUuidFactory;
  48. import com.edufound.android.xyyf.util.Logger;
  49. import com.edufound.android.xyyf.util.OKHttpUtil;
  50. import com.edufound.android.xyyf.util.SPutil;
  51. import com.edufound.android.xyyf.util.ToastUtil;
  52. import com.edufound.android.xyyf.view.ErrorView;
  53. import java.io.IOException;
  54. import java.util.ArrayList;
  55. import java.util.Calendar;
  56. import java.util.HashMap;
  57. import java.util.List;
  58. import okhttp3.Call;
  59. import okhttp3.Callback;
  60. import okhttp3.Response;
  61. public class MainPersenter implements MainIPersenter {
  62. public static final int WECHAT_LOGIN = 0x76761;
  63. public static final int PAY_RESULT = 0x76762;
  64. private static MainView mView = null;
  65. private MainModel mModel = null;
  66. private JsInterfaces mJsInterfaces = null;
  67. private EfunboxPayInterfaces mPayInterfaces = null;
  68. private String mLoadUrl;
  69. ErrorView mErrorView;
  70. Dialog mErrorViewDialog;
  71. private DeviceUtil deviceUtil;
  72. Bitmap mVideoBitmap = null;
  73. Intent getIntent;
  74. public MainPersenter(MainView view) {
  75. mView = view;
  76. mModel = new MainModel();
  77. deviceUtil = new DeviceUtil();
  78. mJsInterfaces = new JsInterfaces(mView);
  79. mPayInterfaces = new EfunboxPayInterfaces(mView);
  80. mVideoBitmap = BitmapFactory.decodeResource(mView.getActivity().getResources(),
  81. R.drawable.videopower);
  82. }
  83. @Override
  84. public void loadData() {
  85. mModel.LoadData(new BaseModel.LoadDataBack() {
  86. @Override
  87. public void success(String datajson) {
  88. Logger.e("datajson:" + datajson);
  89. mView.showData(datajson);
  90. }
  91. @Override
  92. public void failure() {
  93. Logger.e("failure");
  94. }
  95. });
  96. }
  97. // 设置WebView
  98. @SuppressLint("JavascriptInterface")
  99. @Override
  100. public void initWebView(final WebView webview) {
  101. if (Build.VERSION.SDK_INT >= 19) {
  102. webview.getSettings().setLoadsImagesAutomatically(true);
  103. } else {
  104. webview.getSettings().setLoadsImagesAutomatically(false);
  105. }
  106. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
  107. webview.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
  108. }
  109. webview.requestFocus(View.FOCUS_DOWN);
  110. webview.getSettings().setJavaScriptEnabled(true);
  111. webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);//允许js弹出窗口
  112. webview.getSettings().setDomStorageEnabled(true);
  113. // webview.getSettings().setMediaPlaybackRequiresUserGesture(false);
  114. webview.getSettings().setBlockNetworkImage(false);
  115. // webview.getSettings().set
  116. webview.setBackgroundColor(Color.TRANSPARENT);
  117. // webview.setBackgroundResource();
  118. webview.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
  119. webview.getSettings().setUseWideViewPort(true);
  120. webview.getSettings().setLoadWithOverviewMode(true);
  121. webview.getSettings().setTextZoom(100);
  122. webview.setWebChromeClient(new WebChromeClient() {
  123. @Override
  124. public Bitmap getDefaultVideoPoster() {
  125. return mVideoBitmap;
  126. }
  127. @Override
  128. public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
  129. return super.onJsAlert(view, url, message, result);
  130. }
  131. @Override
  132. public void onShowCustomView(View view, CustomViewCallback callback) {
  133. super.onShowCustomView(view, callback);
  134. }
  135. @Override
  136. public void onProgressChanged(WebView view, int newProgress) {
  137. if (newProgress >= 100) {
  138. }
  139. super.onProgressChanged(view, newProgress);
  140. }
  141. });
  142. webview.setWebViewClient(new WebViewClient() {
  143. @Override
  144. public boolean shouldOverrideUrlLoading(WebView view, String url) {
  145. // webview.removeAllViews();
  146. view.loadUrl(url);
  147. return true;
  148. }
  149. @Override
  150. public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
  151. super.onReceivedError(view, errorCode, description, failingUrl);
  152. view.loadUrl("");
  153. showDisConnNeWorkWindow();
  154. }
  155. @Override
  156. public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {
  157. super.onReceivedHttpError(view, request, errorResponse);
  158. // int statusCode = 0;
  159. // if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
  160. // statusCode = errorResponse.getStatusCode();
  161. // }
  162. // System.out.println("onReceivedHttpError code = " + statusCode);
  163. // if (404 == statusCode) {
  164. // view.loadUrl("about:blank");// 避免出现默认的错误界面
  165. // showDisConnNeWorkWindow();
  166. // }
  167. }
  168. @Override
  169. public void onPageStarted(WebView view, String url, Bitmap favicon) {
  170. super.onPageStarted(view, url, favicon);
  171. }
  172. @Override
  173. public void onPageFinished(WebView view, String url) {
  174. if (!webview.getSettings().getLoadsImagesAutomatically()) {
  175. webview.getSettings().setLoadsImagesAutomatically(true);
  176. }
  177. mView.hideLoading();
  178. super.onPageFinished(view, url);
  179. }
  180. });
  181. webview.addJavascriptInterface(mJsInterfaces, "efunboxJS");
  182. webview.addJavascriptInterface(mPayInterfaces, "efunboxPay");
  183. }
  184. public int dip2px(Context context, float dpValue) {
  185. final float scale = context.getResources().getDisplayMetrics().density;
  186. return (int) (dpValue * scale + 0.5f);
  187. }
  188. @Override
  189. public JsInterfaces getJsInterfaces() {
  190. return mJsInterfaces;
  191. }
  192. @Override
  193. public EfunboxPayInterfaces getPayInterfaces() {
  194. return mPayInterfaces;
  195. }
  196. @Override
  197. public void openWeb(Intent intent) {
  198. getIntent = intent;
  199. mView.loadUrl("");
  200. mLoadUrl = mModel.getDefaultLoadUrl();
  201. String intent_url = intent.getStringExtra("url");
  202. Logger.e("-----------------------------");
  203. Logger.e("intent_url:" + intent_url);
  204. Logger.e("-----------------------------");
  205. if (intent_url != null && !intent_url.isEmpty()) {
  206. mLoadUrl = intent_url;
  207. }
  208. String preuuid = SPutil.getPrefString(ContextUtil.getContext(), DeviceUuidFactory.UUID_SPKEY, "");
  209. if (preuuid.equals("")) {
  210. preuuid = DeviceUuidFactory.getUuid().toString();
  211. }
  212. StringBuffer buffer = new StringBuffer();
  213. buffer.append("appCode=" + EApplication.getAppCode());
  214. buffer.append("&uuid=" + preuuid);
  215. buffer.append("&width=" + deviceUtil.getWidth(mView.getActivity()));
  216. buffer.append("&height=" + deviceUtil.getHeight(mView.getActivity()));
  217. buffer.append("&version=" + deviceUtil.getVersionCode(mView.getActivity()));
  218. mLoadUrl += buffer.toString();
  219. Logger.DebugE("LOADURL=" + mLoadUrl);
  220. mView.loadUrl(mLoadUrl);
  221. }
  222. @Override
  223. public boolean onKeyDown(int keycode, KeyEvent event) {
  224. switch (keycode) {
  225. case KeyEvent.KEYCODE_DPAD_CENTER:
  226. case KeyEvent.KEYCODE_ENTER:
  227. mView.loadJsMehtod("boxEventHandler('key_down','KEY_SELECT')");
  228. break;
  229. case KeyEvent.KEYCODE_BACK:
  230. case KeyEvent.KEYCODE_ESCAPE:
  231. mView.loadJsMehtod("boxEventHandler('key_down','KEY_BACK')");
  232. return true;
  233. case KeyEvent.KEYCODE_HOME:
  234. // Home键 -,- P.S:不一定能监听到
  235. Logger.DebugE("click home");
  236. EApplication.exitApp();
  237. break;
  238. case KeyEvent.KEYCODE_DPAD_UP:
  239. // 上
  240. mView.loadJsMehtod("boxEventHandler('key_down','KEY_UP')");
  241. break;
  242. case KeyEvent.KEYCODE_DPAD_RIGHT:
  243. // 右
  244. mView.loadJsMehtod("boxEventHandler('key_down','KEY_RIGHT')");
  245. break;
  246. case KeyEvent.KEYCODE_DPAD_DOWN:
  247. // 下
  248. mView.loadJsMehtod("boxEventHandler('key_down','KEY_DOWN')");
  249. break;
  250. case KeyEvent.KEYCODE_DPAD_LEFT:
  251. // 左
  252. mView.loadJsMehtod("boxEventHandler('key_down','KEY_LEFT')");
  253. break;
  254. }
  255. return false;
  256. }
  257. @Override
  258. public boolean onKeyUp(int keycode, KeyEvent event) {
  259. // getJsInterfaces().clickMusic("1", "1");
  260. if (mView.getActivityPay()) {
  261. return true;
  262. }
  263. switch (keycode) {
  264. case KeyEvent.KEYCODE_DPAD_CENTER:
  265. case KeyEvent.KEYCODE_ENTER:
  266. // 确认键
  267. mView.loadJsMehtod("boxEventHandler('key_up','KEY_SELECT')");
  268. break;
  269. case KeyEvent.KEYCODE_BACK:
  270. case KeyEvent.KEYCODE_ESCAPE:
  271. // 返回键
  272. mView.loadJsMehtod("boxEventHandler('key_up','KEY_BACK')");
  273. // mJsInterfaces.closeApp();
  274. return true;
  275. case KeyEvent.KEYCODE_DPAD_UP:
  276. // 上
  277. mView.loadJsMehtod("boxEventHandler('key_up','KEY_UP')");
  278. break;
  279. case KeyEvent.KEYCODE_DPAD_RIGHT:
  280. // 右
  281. mView.loadJsMehtod("boxEventHandler('key_up','KEY_RIGHT')");
  282. break;
  283. case KeyEvent.KEYCODE_DPAD_DOWN:
  284. // 下
  285. mView.loadJsMehtod("boxEventHandler('key_up','KEY_DOWN')");
  286. break;
  287. case KeyEvent.KEYCODE_DPAD_LEFT:
  288. // 左
  289. mView.loadJsMehtod("boxEventHandler('key_up','KEY_LEFT')");
  290. break;
  291. }
  292. return false;
  293. }
  294. @Override
  295. public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
  296. switch (requestCode) {
  297. case EfunboxPayInterfaces.START_PAY_DB:
  298. if (resultCode == Activity.RESULT_OK) {
  299. Bundle bundle = data.getExtras();
  300. int back = bundle.getInt("back");
  301. //back为返回值
  302. String Out_trade_no = bundle.getString("Out_trade_no");
  303. // Out_trade_no为订单号
  304. } else if (requestCode == Activity.RESULT_CANCELED) {
  305. }
  306. break;
  307. case EfunboxPayInterfaces.START_PAY_HUANWANG:
  308. break;
  309. case EfunboxPayInterfaces.START_PAY_SKYWORTH:
  310. // ToastUtil.showToast("START_PAY_SKYWORTH");
  311. break;
  312. case EfunboxPayInterfaces.START_PAY_XIAOMI:
  313. // ToastUtil.showToast("START_PAY_XIAOMI");
  314. break;
  315. }
  316. mView.acPostDelayed(new Runnable() {
  317. @Override
  318. public void run() {
  319. mView.setActivityPay(false);
  320. }
  321. }, 1000);
  322. }
  323. @Override
  324. public void postUserTime(long time) {
  325. try {
  326. OKHttpUtil.getInstance().doGetSync("?time=" + time, new Callback() {
  327. @Override
  328. public void onFailure(Call call, IOException e) {
  329. Logger.e("postUserTime---onFailure---");
  330. }
  331. @Override
  332. public void onResponse(Call call, Response response) throws IOException {
  333. Logger.e("postUserTime---onResponse---");
  334. EApplication.clearActivity();
  335. android.os.Process.killProcess(Process.myPid());
  336. }
  337. });
  338. } catch (IOException e) {
  339. e.printStackTrace();
  340. }
  341. }
  342. @Override
  343. public void onDisConnNetWork() {
  344. // ToastUtil.showToast("断网了。。");
  345. // mView.stopWebView();
  346. showDisConnNeWorkWindow();
  347. }
  348. @Override
  349. public void onConnNetWork() {
  350. Logger.e("onConnNetWork");
  351. if (mErrorViewDialog != null) {
  352. mErrorViewDialog.dismiss();
  353. // mView.resumeWebView();
  354. }
  355. openWeb(getIntent);
  356. }
  357. void showDisConnNeWorkWindow() {
  358. if (mErrorView == null) {
  359. mErrorViewDialog = new Dialog(mView.getActivity());
  360. try {
  361. int dividerID = mView.getActivity().getResources().getIdentifier("android:id/titleDivider", null, null);
  362. View divider = mErrorViewDialog.findViewById(dividerID);
  363. divider.setBackgroundColor(Color.TRANSPARENT);
  364. } catch (Exception e) {
  365. //上面的代码,是用来去除Holo主题的蓝色线条
  366. e.printStackTrace();
  367. }
  368. mErrorView = new ErrorView(mView);
  369. mErrorView.setViewBgColor(Color.TRANSPARENT);
  370. mErrorView.setBtnClickListener(new ErrorView.BtnClickListener() {
  371. @Override
  372. public void clickRelase() {
  373. //重新加载
  374. if (ContextUtil.getNetWorkState()) {
  375. mView.destroyWeb();
  376. mErrorViewDialog.dismiss();
  377. mView.resumeWebView();
  378. openWeb(mView.getActivity().getIntent());
  379. } else {
  380. ToastUtil.showToast("请检查网络连接状况");
  381. }
  382. }
  383. @Override
  384. public void clickExit() {
  385. //退出
  386. mErrorViewDialog.dismiss();
  387. mView.getActivity().finish();
  388. EApplication.clearActivity();
  389. }
  390. });
  391. mErrorViewDialog.setCancelable(false);
  392. mErrorViewDialog.setContentView(mErrorView);
  393. Window dialogWindow = mErrorViewDialog.getWindow();
  394. dialogWindow.setGravity(Gravity.CENTER);
  395. dialogWindow.getDecorView().setPadding(0, 0, 0, 0);
  396. dialogWindow.getDecorView().setBackgroundColor(Color.TRANSPARENT);
  397. WindowManager m = mView.getActivity().getWindowManager();
  398. Display d = m.getDefaultDisplay(); // 获取屏幕宽、高用
  399. WindowManager.LayoutParams p = dialogWindow.getAttributes(); // 获取对话框当前的参数值
  400. p.height = (int) (d.getHeight() * 1);
  401. p.width = WindowManager.LayoutParams.MATCH_PARENT;
  402. p.horizontalMargin = 0;
  403. dialogWindow.setAttributes(p);
  404. }
  405. if (!mErrorViewDialog.isShowing()) {
  406. mErrorViewDialog.show();
  407. }
  408. }
  409. public static Handler mPersenterHandler = new Handler(new Handler.Callback() {
  410. @Override
  411. public boolean handleMessage(Message msg) {
  412. switch (msg.what) {
  413. case WECHAT_LOGIN:
  414. // Logger.e("微信用户信息:" + msg.obj.toString());
  415. mView.loadJsMehtod("WeChatLoginSuccess('" + msg.obj.toString() + "')");
  416. break;
  417. case PAY_RESULT:
  418. mView.loadJsMehtod("commonPayResult(" + msg.obj.toString() + ")");
  419. Intent intent_restart = new Intent(ContextUtil.CLOSE_ACTIVITY_PAY);
  420. mView.getActivity().sendBroadcast(intent_restart);
  421. break;
  422. }
  423. return false;
  424. }
  425. });
  426. @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
  427. public Bitmap createVideoThumbnail(String url, int width, int height) {
  428. Bitmap bitmap = null;
  429. MediaMetadataRetriever retriever = new MediaMetadataRetriever();
  430. int kind = MediaStore.Video.Thumbnails.MINI_KIND;
  431. try {
  432. if (Build.VERSION.SDK_INT >= 14) {
  433. retriever.setDataSource(url, new HashMap<String, String>());
  434. } else {
  435. retriever.setDataSource(url);
  436. }
  437. bitmap = retriever.getFrameAtTime(1000);
  438. } catch (IllegalArgumentException ex) {
  439. // Assume this is a corrupt video file
  440. } catch (RuntimeException ex) {
  441. // Assume this is a corrupt video file.
  442. } finally {
  443. try {
  444. retriever.release();
  445. } catch (RuntimeException ex) {
  446. // Ignore failures while cleaning up.
  447. }
  448. }
  449. if (kind == MediaStore.Images.Thumbnails.MICRO_KIND && bitmap != null) {
  450. bitmap = ThumbnailUtils.extractThumbnail(bitmap, width, height,
  451. ThumbnailUtils.OPTIONS_RECYCLE_INPUT);
  452. }
  453. return bitmap;
  454. }
  455. int getYear = 0;
  456. int getMonth = 0;
  457. int getDay = 0;
  458. List<String> view_y_list = new ArrayList<>();
  459. List<String> view_m_list = new ArrayList<>();
  460. List<String> view_d_list1 = new ArrayList<>();
  461. List<String> view_d_list2 = new ArrayList<>();
  462. List<String> view_d_list3 = new ArrayList<>();
  463. List<String> view_d_list4 = new ArrayList<>();
  464. int yearindex;
  465. int monthindex;
  466. int dayindex;
  467. int dayoldindex;
  468. @Override
  469. public void showDateView(final int show_type) {
  470. mView.getRootView().post(new Runnable() {
  471. @Override
  472. public void run() {
  473. Calendar selectedDate = Calendar.getInstance();
  474. // 获取年
  475. int year = selectedDate.get(Calendar.YEAR);
  476. // 获取月
  477. int month = selectedDate.get(Calendar.MONTH);
  478. // 获取日
  479. int day = selectedDate.get(Calendar.DATE);
  480. if (view_y_list.size() == 0) {
  481. for (int i = year - 50; i < year + 150; i++) {
  482. yearindex++;
  483. if (i < year) {
  484. yearindex++;
  485. }
  486. view_y_list.add(String.valueOf(i) + "年");
  487. }
  488. for (int i = 0; i < 12; i++) {
  489. view_m_list.add(String.valueOf(i + 1) + "月");
  490. }
  491. for (int i = 0; i < 31; i++) {
  492. view_d_list1.add(String.valueOf(i + 1) + "日");
  493. }
  494. for (int i = 0; i < 30; i++) {
  495. view_d_list2.add(String.valueOf(i + 1) + "日");
  496. }
  497. for (int i = 0; i < 28; i++) {
  498. view_d_list3.add(String.valueOf(i + 1) + "日");
  499. }
  500. for (int i = 0; i < 29; i++) {
  501. view_d_list4.add(String.valueOf(i + 1) + "日");
  502. }
  503. }
  504. final FrameLayout layout = (FrameLayout) LayoutInflater.from(mView.getActivity()).inflate(R.layout.date_view, null);
  505. layout.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
  506. TextView cancel = layout.findViewById(R.id.date_cancel);
  507. TextView ok = layout.findViewById(R.id.date_ok);
  508. TextView title = layout.findViewById(R.id.date_title);
  509. cancel.setOnClickListener(new View.OnClickListener() {
  510. @Override
  511. public void onClick(View v) {
  512. mView.getRootView().removeView(layout);
  513. }
  514. });
  515. ok.setOnClickListener(new View.OnClickListener() {
  516. @Override
  517. public void onClick(View v) {
  518. dayindex = dayoldindex;
  519. Logger.e("dayindex:"+dayindex);
  520. mView.loadJSMehtodPost("getAndroidDate('" + getYear + "','" + (getMonth) + "','" + getDay + "')");
  521. mView.getRootView().removeView(layout);
  522. }
  523. });
  524. WheelView view_y = layout.findViewById(R.id.date_whell_y);
  525. WheelView view_m = layout.findViewById(R.id.date_whell_m);
  526. final WheelView view_d = layout.findViewById(R.id.date_whell_d);
  527. if (show_type != 1) {
  528. view_y.setVisibility(View.GONE);
  529. title.setVisibility(View.GONE);
  530. }
  531. view_y.setEntries(view_y_list);
  532. view_m.setEntries(view_m_list);
  533. view_y.setOnWheelChangedListener(new OnWheelChangedListener() {
  534. @Override
  535. public void onChanged(WheelView view, int oldIndex, int newIndex) {
  536. CharSequence text = view.getItem(newIndex);
  537. yearindex = newIndex;
  538. // Logger.e("WheelView:" + String.format("index: %d, text: %s", newIndex, text));
  539. getYear = Integer.valueOf(text.subSequence(0, text.toString().indexOf("年")).toString());
  540. changeDay(view_d);
  541. }
  542. });
  543. view_m.setOnWheelChangedListener(new OnWheelChangedListener() {
  544. @Override
  545. public void onChanged(WheelView view, int oldIndex, int newIndex) {
  546. CharSequence text = view.getItem(newIndex);
  547. monthindex = newIndex;
  548. // Logger.e("WheelView:" + String.format("index: %d, text: %s", newIndex, text));
  549. getMonth = Integer.valueOf(text.subSequence(0, text.toString().indexOf("月")).toString());
  550. changeDay(view_d);
  551. }
  552. });
  553. view_d.setOnWheelChangedListener(new OnWheelChangedListener() {
  554. @Override
  555. public void onChanged(WheelView view, int oldIndex, int newIndex) {
  556. dayoldindex = newIndex;
  557. CharSequence text = view.getItem(newIndex);
  558. // Logger.e("WheelView:" + String.format("index: %d, text: %s", newIndex, text));
  559. getDay = Integer.valueOf(text.subSequence(0, text.toString().indexOf("日")).toString());
  560. }
  561. });
  562. if (monthindex == 0) {
  563. view_y.setCurrentIndex(yearindex);
  564. view_m.setCurrentIndex(month);
  565. getMonth = month + 1;
  566. changeDay(view_d);
  567. view_d.setCurrentIndex(day - 1);
  568. } else {
  569. view_y.setCurrentIndex(yearindex);
  570. view_m.setCurrentIndex(monthindex);
  571. view_d.setCurrentIndex(dayindex);
  572. }
  573. mView.getRootView().addView(layout);
  574. }
  575. });
  576. }
  577. void changeDay(WheelView view_d) {
  578. switch (getMonth) {
  579. case 1:
  580. case 3:
  581. case 5:
  582. case 7:
  583. case 8:
  584. case 10:
  585. case 12:
  586. view_d.setEntries(view_d_list1);
  587. break;
  588. case 4:
  589. case 6:
  590. case 9:
  591. case 11:
  592. view_d.setEntries(view_d_list2);
  593. break;
  594. case 2:
  595. //平年
  596. if ((getYear % 4 == 0 && getYear % 100 != 0)
  597. || (getYear % 400 == 0)) {
  598. // System.out.println(input + "年闰年");
  599. view_d.setEntries(view_d_list4);
  600. } else {
  601. // System.out.println(input + "年平年");
  602. view_d.setEntries(view_d_list3);
  603. }
  604. break;
  605. }
  606. }
  607. }
  608. interface MainIPersenter extends BasePersenter {
  609. void initWebView(WebView webview);
  610. JsInterfaces getJsInterfaces();
  611. EfunboxPayInterfaces getPayInterfaces();
  612. void openWeb(Intent intent);
  613. boolean onKeyDown(int keycode, KeyEvent event);
  614. boolean onKeyUp(int keycode, KeyEvent event);
  615. void onActivityResult(int requestCode, int resultCode, @Nullable Intent data);
  616. void postUserTime(long time);
  617. void showDateView(int type);
  618. }