MainPersenter.java 25 KB

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