package michaellee.mortgagecalculator; import android.app.ProgressDialog; import android.graphics.Matrix; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.util.DisplayMetrics; import android.util.Log; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.animation.Animation; import android.view.animation.TranslateAnimation; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast; import com.github.clans.fab.FloatingActionButton; import com.github.clans.fab.FloatingActionMenu; import com.tencent.mm.sdk.modelmsg.SendMessageToWX; import com.tencent.mm.sdk.modelmsg.WXMediaMessage; import com.tencent.mm.sdk.modelmsg.WXTextObject; import com.tencent.mm.sdk.openapi.IWXAPI; import com.tencent.mm.sdk.openapi.WXAPIFactory; import com.umeng.analytics.MobclickAgent; import net.youmi.android.normal.banner.BannerManager; import net.youmi.android.normal.common.ErrorCode; import net.youmi.android.normal.spot.SpotListener; import net.youmi.android.normal.spot.SpotManager; import net.youmi.android.normal.video.VideoAdListener; import net.youmi.android.normal.video.VideoAdManager; import net.youmi.android.normal.video.VideoAdSettings; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.List; import java.util.Random; public class Activity_Result extends AppCompatActivity { private static final String TAG = "youmi-demo"; private double mortgage; private int time; private double rate; private double montRate; private int aheadTime; private int firstYear; private int firstMonth; private int calculationMethod; private String title; private IWXAPI wxApi; private FloatingActionMenu shareMenu; private FloatingActionButton share2friendButton; private FloatingActionButton share2timelineButton; private FloatingActionButton adButton; private String WXAppID = "wxe1309186360d6399"; //正式版:wxe1309186360d6399 //测试版:wx0cccc66f5792e9d0 private double sum = 0; private double interest = 0; //用于显示等额本息和等额本金的ViewPager private ViewPager viewPager; private List<View> viewList; private View view1; private View view2; private MyListView listViewOne; //等额本息的ListView private MyListView listViewTwo; //等额本金的ListView private TextView typeOneText; //等额本息的标题 private TextView typeTwoText; //等额本金的标题 private TextView oneLoanSumTextView; //显示等额本息的结果 private TextView oneMonthTextView; private TextView onePaySumTextView; private TextView oneInterestTextView; private TextView oneMonthPayTextView; private TextView twoLoanSumTextView; //显示等额本金的结果 private TextView twoMonthTextView; private TextView twoPaySumTextView; private TextView twoInterestTextView; private TextView twoFirstMonthPayTextView; private TextView twoDeltaMonthPayTextView; private String oneSumString; //等额本息的结果数据 private String oneInterestString; private String oneMonthPayString; private String[] oneTimeStrings; private String[] oneCapitalStrings; private String[] oneInterestStrings; private String[] oneMonthPayStrings; private String twoSumString; //等额本金的结果数据 private String twoInterestString; private String twoFistMonthSum; private String twoDeltaMonthSum; private String[] twoTimeStrings; private String[] twoCapitalStrings; private String[] twoInterestStrings; private String[] twoMonthPayStrings; private int currentItem = 0; private ImageView cursorImageView; private int offSet; private Matrix matrix = new Matrix(); private Animation animation; private ProgressDialog progressDialog = null; private static final int DONE = 1; private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what){ case DONE: showResult(); //9.显示结果 //等额本息的结果 Adapter_ResultListView adapterList1 = new Adapter_ResultListView(Activity_Result.this, oneTimeStrings, oneCapitalStrings, oneInterestStrings, oneMonthPayStrings); listViewOne.setAdapter(adapterList1); //等额本金的结果 Adapter_ResultListView adapterList2 = new Adapter_ResultListView(Activity_Result.this, twoTimeStrings, twoCapitalStrings, twoInterestStrings, twoMonthPayStrings); listViewTwo.setAdapter(adapterList2); viewPager.setCurrentItem(currentItem); progressDialog.dismiss(); break; } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_result); progressDialog = ProgressDialog.show(Activity_Result.this, "", "正在计算...", false, true); init(); //0.初始化 getData(); //1.获得数据 initViews(); //2.初始化控件 initViewPager(); //3.设置ViewPager setListeners(); //4.设置监听器 //启动新线程来计算 new Thread(new Runnable() { @Override public void run() { calculateTypeOne(time, aheadTime); //5.等额本息的计算方法 sortOneStrings(); //7.等额本金数据整理 calculateTypeTwo(time, aheadTime); //6.等额本金的计算方法 sortTwoStrings(); //8.等额本金数据整理 handler.sendEmptyMessage(DONE); } }).start(); } //0.初始化 public void init(){ //微信分享初始化 wxApi = WXAPIFactory.createWXAPI(this, WXAppID); wxApi.registerApp(WXAppID); //有米 //获取要嵌入广告条的布局 LinearLayout bannerLayout = (LinearLayout)findViewById(R.id.ll_banner1); //获取广告条 View bannerView = BannerManager.getInstance(Activity_Result.this).getBannerView(new net.youmi.android.normal.banner.BannerViewListener() { @Override public void onRequestSuccess() { System.out.println("请求广告成功"); } @Override public void onSwitchBanner() { System.out.println("切换广告条"); RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT); lp.addRule(RelativeLayout.ABOVE, R.id.ll_banner1); lp.addRule(RelativeLayout.BELOW, R.id.ResultCursorImageView); viewPager.setLayoutParams(lp); } @Override public void onRequestFailed() { System.out.println("请求广告失败"); } }); //将广告条加入到布局中 bannerLayout.addView(bannerView); } //1.获得数据 public void getData(){ //从前一个Activity传来的数据 Bundle bundle = this.getIntent().getExtras(); String m = bundle.getString("mortgage"); String r = bundle.getString("rate"); String t = bundle.getString("time"); String a = bundle.getString("aheadTime"); firstYear = bundle.getInt("firstYear"); firstMonth = bundle.getInt("firstMonth"); currentItem = bundle.getInt("paybackMethod"); calculationMethod = bundle.getInt("calculationMethod"); switch (calculationMethod){ case 0: title = "商业贷款"; break; case 1: title = "公积金贷款"; break; case 2: title = "组合贷款"; break; } this.setTitle(title); //万元转换为元 mortgage = Double.valueOf(m); mortgage = mortgage * 10000; //年利率转换为月利率 rate = Double.valueOf(r); rate = rate / 100; montRate = rate / 12; //贷款时间转换为月 time = Integer.valueOf(t); time = time * 12; //第几年还款转换为月 aheadTime = Integer.valueOf(a); aheadTime = aheadTime * 12; } //2.初始化控件 public void initViews(){ viewPager = (ViewPager)findViewById(R.id.viewpager); typeOneText = (TextView)findViewById(R.id.typeOneTextView); typeTwoText = (TextView)findViewById(R.id.typeTwoTextView); cursorImageView = (ImageView)findViewById(R.id.ResultCursorImageView); shareMenu = (FloatingActionMenu)findViewById(R.id.menu); share2friendButton = (FloatingActionButton)findViewById(R.id.menu_item1); share2timelineButton = (FloatingActionButton)findViewById(R.id.menu_item2); adButton = (FloatingActionButton)findViewById(R.id.menu_item3); } //3.设置ViewPager public void initViewPager(){ viewList = new ArrayList<View>(); LayoutInflater layoutInflater = getLayoutInflater().from(this); view1 = layoutInflater.inflate(R.layout.viewpager_result_capital_interest, null); view2 = layoutInflater.inflate(R.layout.viewpager_result_capital, null); viewList.add(view1); viewList.add(view2); oneLoanSumTextView = (TextView)view1.findViewById(R.id.ViewPager_CapitalInterest_LoanSum_Number_TextView); oneMonthTextView = (TextView)view1.findViewById(R.id.ViewPager_CapitalInterest_Month_Number_TextView); onePaySumTextView = (TextView)view1.findViewById(R.id.ViewPager_CapitalInterest_PaySum_Number_TextView); oneInterestTextView = (TextView)view1.findViewById(R.id.ViewPager_CapitalInterest_Interest_Number_TextView); oneMonthPayTextView = (TextView)view1.findViewById(R.id.ViewPager_CapitalInterest_MonthPay_Number_TextView); listViewOne = (MyListView)view1.findViewById(R.id.listOne); twoLoanSumTextView = (TextView)view2.findViewById(R.id.ViewPager_Capital_LoanSum_Number_TextView); twoMonthTextView = (TextView)view2.findViewById(R.id.ViewPager_Capital_Month_Number_TextView); twoPaySumTextView = (TextView)view2.findViewById(R.id.ViewPager_Capital_PaySum_Number_TextView); twoInterestTextView = (TextView)view2.findViewById(R.id.ViewPager_Capital_Interest_Number_TextView); twoFirstMonthPayTextView = (TextView)view2.findViewById(R.id.ViewPager_Capital_FirstMonthPay_Number_TextView); twoDeltaMonthPayTextView = (TextView)view2.findViewById(R.id.ViewPager_Capital_DeltaMonthPay_Number_TextView); listViewTwo = (MyListView)view2.findViewById(R.id.listTwo); Adapter_MainViewPager adapter = new Adapter_MainViewPager(viewList); viewPager.setAdapter(adapter); viewPager.setOnPageChangeListener(new PageChangeListener()); //3-1.ViewPager的监听器 //设置光标 DisplayMetrics displayMetrics = getResources().getDisplayMetrics(); offSet = displayMetrics.widthPixels / 2; //每个标题的宽度(720/2=360) matrix.setTranslate(0, 0); cursorImageView.setImageMatrix(matrix); // 需要imageView的scaleType为matrix*/ } //3-1.ViewPager的监听器 public class PageChangeListener implements ViewPager.OnPageChangeListener{ @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { //设置光标 switch (position){ case 0: animation = new TranslateAnimation(offSet, 0, 0, 0); break; case 1: animation = new TranslateAnimation(0, offSet, 0, 0); break; } currentItem = position; animation.setDuration(150); // 光标滑动速度 animation.setFillAfter(true); cursorImageView.startAnimation(animation); } @Override public void onPageScrollStateChanged(int state) { } } //4.设置监听器 public void setListeners(){ typeOneText.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { viewPager.setCurrentItem(0); } }); typeTwoText.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { viewPager.setCurrentItem(1); } }); //用于微信分享 shareMenu.setClosedOnTouchOutside(true); shareMenu.setOnMenuButtonClickListener(new View.OnClickListener() { @Override public void onClick(View v) { shareMenu.toggle(true); } }); share2friendButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { share2WeChat(0); //4-1.发送给微信好友或朋友圈 shareMenu.toggle(true); } }); share2timelineButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { share2WeChat(1); //4-1.发送给微信好友或朋友圈 shareMenu.close(true); } }); //插屏广告 SpotManager.getInstance(Activity_Result.this).setImageType(SpotManager.IMAGE_TYPE_VERTICAL); SpotManager.getInstance(Activity_Result.this).setAnimationType(SpotManager.ANIMATION_TYPE_SIMPLE); //视频广告 VideoAdManager.getInstance(Activity_Result.this).setUserId("UserID"); VideoAdManager.getInstance(Activity_Result.this).requestVideoAd(Activity_Result.this); final VideoAdSettings videoAdSettings = new VideoAdSettings(); adButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { shareMenu.toggle(true); int random = new Random().nextInt(10); System.out.println(random); //播放插屏广告 if (random % 2 == 0){ SpotManager.getInstance(Activity_Result.this).showSpot(Activity_Result.this, new SpotListener() { @Override public void onShowSuccess() { Toast.makeText(Activity_Result.this, "谢谢", Toast.LENGTH_SHORT).show(); Log.d(TAG, "插屏展示成功"); } @Override public void onShowFailed(int errorCode) { Toast.makeText(Activity_Result.this, "暂时没有广告,谢谢", Toast.LENGTH_SHORT).show(); Log.d(TAG, "插屏展示失败"); switch (errorCode) { case ErrorCode.NON_NETWORK: //Toast.makeText(Activity_Result.this, "网络异常", Toast.LENGTH_SHORT).show(); break; case ErrorCode.NON_AD: //Toast.makeText(Activity_Result.this, "暂无广告", Toast.LENGTH_SHORT).show(); break; case ErrorCode.RESOURCE_NOT_READY: Log.e(TAG, "资源还没准备好"); //Toast.makeText(Activity_Result.this, "请稍后再试", Toast.LENGTH_SHORT).show(); break; case ErrorCode.SHOW_INTERVAL_LIMITED: Log.e(TAG, "展示间隔限制"); //Toast.makeText(Activity_Result.this, "请勿频繁展示", Toast.LENGTH_SHORT).show(); break; case ErrorCode.WIDGET_NOT_IN_VISIBILITY_STATE: Log.e(TAG, "控件处在不可见状态"); //Toast.makeText(Activity_Result.this, "请设置插屏为可见状态", Toast.LENGTH_SHORT).show(); break; } } @Override public void onSpotClosed() { Log.d(TAG, "插屏被关闭"); } @Override public void onSpotClicked(boolean isWebPage) { Log.d(TAG, "插屏被点击"); Log.i(TAG, String.format("是否是网页广告?%s", isWebPage ? "是" : "不是")); } }); } // 展示视频广告 else { VideoAdManager.getInstance(Activity_Result.this).showVideoAd(Activity_Result.this, videoAdSettings, new VideoAdListener() { @Override public void onPlayStarted() { Log.i(TAG, "开始播放视频"); } @Override public void onPlayInterrupted() { Log.i(TAG, "播放视频被中断"); //Toast.makeText(Activity_Result.this, "播放视频被中断", Toast.LENGTH_SHORT).show(); } @Override public void onPlayFailed(int errorCode) { switch (errorCode) { case ErrorCode.NON_NETWORK: Log.e(TAG, "网络异常"); Toast.makeText(Activity_Result.this, "网络异常", Toast.LENGTH_SHORT).show(); break; case ErrorCode.NON_AD: Log.e(TAG, "暂无广告"); //Toast.makeText(Activity_Result.this, "暂无广告", Toast.LENGTH_SHORT).show(); break; case ErrorCode.RESOURCE_NOT_READY: Log.e(TAG, "资源还没准备好"); break; case ErrorCode.SHOW_INTERVAL_LIMITED: Log.e(TAG, "展示间隔限制"); break; case ErrorCode.WIDGET_NOT_IN_VISIBILITY_STATE: Log.e(TAG, "控件处在不可见状态"); break; } } @Override public void onPlayCompleted() { Log.i(TAG, "视频播放成功"); //Toast.makeText(Activity_Result.this, "视频播放成功", Toast.LENGTH_SHORT).show(); Toast.makeText(Activity_Result.this, "谢谢", Toast.LENGTH_SHORT).show(); } }); } } }); /*//视频广告 VideoAdManager.getInstance(Activity_Result.this).setUserId("UserID"); VideoAdManager.getInstance(Activity_Result.this).requestVideoAd(Activity_Result.this); final VideoAdSettings videoAdSettings = new VideoAdSettings(); vedioAdButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { shareMenu.toggle(true); // 展示视频广告 VideoAdManager.getInstance(Activity_Result.this).showVideoAd(Activity_Result.this, videoAdSettings, new VideoAdListener() { @Override public void onPlayStarted() { Log.i(TAG, "开始播放视频"); } @Override public void onPlayInterrupted() { Log.i(TAG, "播放视频被中断"); Toast.makeText(Activity_Result.this, "播放视频被中断", Toast.LENGTH_SHORT).show(); } @Override public void onPlayFailed(int errorCode) { switch (errorCode) { case ErrorCode.NON_NETWORK: Log.e(TAG, "网络异常"); Toast.makeText(Activity_Result.this, "网络异常", Toast.LENGTH_SHORT).show(); break; case ErrorCode.NON_AD: Log.e(TAG, "暂无广告"); Toast.makeText(Activity_Result.this, "暂无广告", Toast.LENGTH_SHORT).show(); break; case ErrorCode.RESOURCE_NOT_READY: Log.e(TAG, "资源还没准备好"); break; case ErrorCode.SHOW_INTERVAL_LIMITED: Log.e(TAG, "展示间隔限制"); break; case ErrorCode.WIDGET_NOT_IN_VISIBILITY_STATE: Log.e(TAG, "控件处在不可见状态"); break; } } @Override public void onPlayCompleted() { Log.i(TAG, "视频播放成功"); Toast.makeText(Activity_Result.this, "视频播放成功", Toast.LENGTH_SHORT).show(); } }); } });*/ } //3-5.发送给微信好友或朋友圈 private void share2WeChat(int flag) { if (!wxApi.isWXAppInstalled()) { Toast.makeText(Activity_Result.this, "您还未安装微信客户端", Toast.LENGTH_SHORT).show(); return; } StringBuilder stringBuilder = new StringBuilder(title + "\n"); stringBuilder.append("贷款总额:").append(oneLoanSumTextView.getText().toString()).append("\n"); stringBuilder.append("贷款月数:").append(time).append("月\n\n"); stringBuilder.append("等额本息贷款方式:\n"); stringBuilder.append("还款总额:").append(oneSumString).append("元\n"); stringBuilder.append("支付利息:").append(oneInterestString).append("元\n"); stringBuilder.append("每月还款:").append(oneMonthPayString).append("元\n\n"); stringBuilder.append("等额本金贷款方式:\n"); stringBuilder.append("还款总额:").append(twoSumString).append("元\n"); stringBuilder.append("支付利息:").append(twoInterestString).append("元\n"); stringBuilder.append("首月还款:").append(twoFistMonthSum).append("元\n"); stringBuilder.append("每月递减:").append(twoDeltaMonthSum).append("元\n"); //初始化一个WXTextObject对象,填写分享的文本内容 WXTextObject textObj = new WXTextObject(); textObj.text = stringBuilder.toString(); //用WXTextObject对象初始化一个WXMediaMessage对象 WXMediaMessage msg = new WXMediaMessage(); msg.mediaObject = textObj; msg.description = "房贷计算结果"; //构造一个Req SendMessageToWX.Req req = new SendMessageToWX.Req(); //req.transaction = buildTransaction("这是transaction"); //transaction字段用于唯一标识一个请求 req.message = msg; switch (flag){ case 0: //发送给好友 req.scene = SendMessageToWX.Req.WXSceneSession; break; case 1: //发送到朋友圈 req.scene = SendMessageToWX.Req.WXSceneTimeline; break; } wxApi.sendReq(req); } //5.等额本息的计算方法 public void calculateTypeOne(int time, int aheadTime){ //如果没有提前还款 if (aheadTime == 0){ aheadTime = time; } oneTimeStrings = new String[aheadTime + 1]; oneCapitalStrings = new String[aheadTime + 1]; oneInterestStrings = new String[aheadTime + 1]; oneMonthPayStrings = new String[aheadTime + 1]; String monthCapital[] = new String[time + 1]; String monthInterest[] = new String[time + 1]; String monthSum[] = new String[time + 1]; double paidCapital = 0; //已还本金 double paidInterest = 0; //已还利息 double paid = 0; //总共已还 DecimalFormat df = new DecimalFormat("#,###.0"); //保留两位小数 for (int i = 1; i <= aheadTime; i++){ //每月应还本金:每月应还本金=贷款本金×月利率×(1+月利率)^(还款月序号-1)÷〔(1+月利率)^还款月数-1〕 monthCapital[i] = df.format(mortgage * montRate * Math.pow((1 + montRate), i - 1) / (Math.pow(1 + montRate, time) - 1)); //每月应还利息:贷款本金×月利率×〔(1+月利率)^还款月数-(1+月利率)^(还款月序号-1)〕÷〔(1+月利率)^还款月数-1〕 monthInterest[i] = df.format(mortgage * montRate * (Math.pow(1 + montRate, time) - Math.pow(1 + montRate, i - 1)) / (Math.pow(1 + montRate, time) - 1)); //月供:每月月供额=〔贷款本金×月利率×(1+月利率)^还款月数〕÷〔(1+月利率)^还款月数-1〕 monthSum[i] = df.format(mortgage * montRate * Math.pow((1 + montRate), time) / (Math.pow(1 + montRate, time) - 1)); //得到输出字符串 //strings[i] = i + "期" + " " + monthCapital[i] + " " + monthInterest[i] + " " + monthSum[i]; oneTimeStrings[i] = i + "期"; oneCapitalStrings[i] = monthCapital[i]; oneInterestStrings[i] = monthInterest[i]; oneMonthPayStrings[i] = monthSum[i]; //已还本金 paidCapital = paidCapital + mortgage * montRate * Math.pow((1 + montRate), i - 1) / (Math.pow(1 + montRate, time) - 1); //已还利息 paidInterest = paidInterest + mortgage * montRate * (Math.pow(1 + montRate, time) - Math.pow(1 + montRate, i - 1)) / (Math.pow(1 + montRate, time) - 1); //总共已还 paid = paid + mortgage * montRate * Math.pow((1 + montRate), time) / (Math.pow(1 + montRate, time) - 1); } //月供 double monthPay = mortgage * montRate * Math.pow((1 + montRate), time) / (Math.pow(1 + montRate, time) - 1); //还款总额 sum = monthPay * time; //还款利息总额 interest = monthPay * time - mortgage; //格式化 oneSumString = df.format(sum); oneInterestString = df.format(interest); oneMonthPayString = df.format(monthPay); //提前还款的相关数据 String pi = df.format(paidInterest); String rest = df.format(mortgage - paidCapital); String p = df.format(paid); } //6.等额本金的计算方法 public void calculateTypeTwo(int time, int aheadTime){ if (aheadTime == 0){ aheadTime = time; } twoTimeStrings = new String[aheadTime + 1]; twoCapitalStrings = new String[aheadTime + 1]; twoInterestStrings = new String[aheadTime + 1]; twoMonthPayStrings = new String[aheadTime + 1]; //String[] strings = new String[aheadTime + 1]; String monthCapital[] = new String[time + 1]; String monthInterest[] = new String[time + 1]; String monthSum[] = new String[time + 1]; DecimalFormat df = new DecimalFormat("#,###.0"); double paid = 0; double paidCapital = 0; double paidInterest = 0; double paidSum = 0; for (int i = 1; i <= aheadTime; i++){ //每月应还本金:贷款本金÷还款月数 monthCapital[i] = df.format(mortgage / time); //每月应还利息:剩余本金×月利率=(贷款本金-已归还本金累计额)×月利率 monthInterest[i] = df.format((mortgage - paid) * montRate); //月供:(贷款本金÷还款月数)+(贷款本金-已归还本金累计额)×月利率 monthSum[i] = df.format((mortgage / time) + (mortgage - paid) * montRate); //已归还本金累计额 paid = paid + mortgage / time; //已还本金 paidCapital = paidCapital + mortgage / time; //已还利息 paidInterest = paidInterest + (mortgage - paid) * montRate; //总共已还 paidSum = paidSum + (mortgage / time) + (mortgage - paid) * montRate; //strings[i] = i + "期" + " " + monthCapital[i] + " "+ monthInterest[i] + " "+ monthSum[i]; //注意,i是从1开始的 twoTimeStrings[i] = i + "期"; twoCapitalStrings[i] = monthCapital[i]; twoInterestStrings[i] = monthInterest[i]; twoMonthPayStrings[i] = monthSum[i]; } sum = time * (mortgage * montRate - montRate * (mortgage / time) * (time - 1) / 2 + mortgage / time); interest = sum - mortgage; twoSumString = df.format(sum); twoInterestString = df.format(interest); twoFistMonthSum = monthSum[1]; //计算每月递减 String firstMonth = monthSum[1].replaceAll(",", ""); String secondMonth = monthSum[2].replaceAll(",", ""); double delta = Double.valueOf(firstMonth) - Double.valueOf(secondMonth); twoDeltaMonthSum = df.format(delta); //提前还款的相关数据 String p = df.format(paidSum); String pi = df.format(paidInterest); String rest = df.format(mortgage - paidCapital); } //7.等额本息数据整理 public void sortOneStrings(){ ArrayList timeList = new ArrayList(); ArrayList capitalList = new ArrayList(); ArrayList interestList = new ArrayList(); ArrayList monthPayList = new ArrayList(); int deltaMonth = 12 - firstMonth + 1; int deltaYear = time / 12; int max = 0; //开始月份不是1月 if (deltaMonth != 12){ String[] years = new String[deltaYear + 1]; for (int i = 0; i < deltaYear + 1; i++){ years[i] = (firstYear + i) + "年"; } max = time + (deltaYear + 1) - (deltaMonth + 1); timeList.add(years[0]); capitalList.add(""); interestList.add(""); monthPayList.add(""); for (int i = 0; i < deltaMonth; i ++){ timeList.add((firstMonth + i) + "月," + oneTimeStrings[i + 1]); capitalList.add(oneCapitalStrings[i + 1]); interestList.add(oneInterestStrings[i + 1]); monthPayList.add(oneMonthPayStrings[i + 1]); } int j = 1; int k = deltaMonth + 1; for (int i = 0; i < max; i++){ int index = i % 13; if (index == 0){ timeList.add(years[j]); capitalList.add(""); interestList.add(""); monthPayList.add(""); j++; } else { timeList.add(index + "月," + oneTimeStrings[k]); capitalList.add(oneCapitalStrings[k]); interestList.add(oneInterestStrings[k]); monthPayList.add(oneMonthPayStrings[k]); k++; } } } //开始月份是1月 else { String[] years = new String[deltaYear]; for (int i = 0; i < deltaYear; i++){ years[i] = (firstYear + i) + "年"; } max = time + deltaYear; int j = 0; int k = 1; for (int i = 0; i < max; i++){ int index = i % 13; if (index == 0){ timeList.add(years[j]); capitalList.add(""); interestList.add(""); monthPayList.add(""); j++; } else { timeList.add(index + "月," + oneTimeStrings[k]); capitalList.add(oneCapitalStrings[k]); interestList.add(oneInterestStrings[k]); monthPayList.add(oneMonthPayStrings[k]); k++; } } } oneTimeStrings = (String[])timeList.toArray(new String[timeList.size()]); oneCapitalStrings = (String[])capitalList.toArray(new String[capitalList.size()]); oneInterestStrings = (String[])interestList.toArray(new String[interestList.size()]); oneMonthPayStrings = (String[])monthPayList.toArray(new String[monthPayList.size()]); //return resultString; } //8.等额本金数据整理 public void sortTwoStrings(){ ArrayList timeList = new ArrayList(); ArrayList capitalList = new ArrayList(); ArrayList interestList = new ArrayList(); ArrayList monthPayList = new ArrayList(); int deltaMonth = 12 - firstMonth + 1; int deltaYear = time / 12; int max = 0; //开始月份不是1月 if (deltaMonth != 12){ String[] years = new String[deltaYear + 1]; for (int i = 0; i < deltaYear + 1; i++){ years[i] = (firstYear + i) + "年"; } max = time + (deltaYear + 1) - (deltaMonth + 1); timeList.add(years[0]); capitalList.add(""); interestList.add(""); monthPayList.add(""); for (int i = 0; i < deltaMonth; i ++){ timeList.add((firstMonth + i) + "月," + twoTimeStrings[i + 1]); capitalList.add(twoCapitalStrings[i + 1]); interestList.add(twoInterestStrings[i + 1]); monthPayList.add(twoMonthPayStrings[i + 1]); } int j = 1; int k = deltaMonth + 1; for (int i = 0; i < max; i++){ int index = i % 13; if (index == 0){ timeList.add(years[j]); capitalList.add(""); interestList.add(""); monthPayList.add(""); j++; } else { timeList.add(index + "月," + twoTimeStrings[k]); capitalList.add(twoCapitalStrings[k]); interestList.add(twoInterestStrings[k]); monthPayList.add(twoMonthPayStrings[k]); k++; } } } //开始月份是1月 else { String[] years = new String[deltaYear]; for (int i = 0; i < deltaYear; i++){ years[i] = (firstYear + i) + "年"; } max = time + deltaYear; int j = 0; int k = 1; for (int i = 0; i < max; i++){ int index = i % 13; if (index == 0){ timeList.add(years[j]); capitalList.add(""); interestList.add(""); monthPayList.add(""); j++; } else { timeList.add(index + "月," + twoTimeStrings[k]); capitalList.add(twoCapitalStrings[k]); interestList.add(twoInterestStrings[k]); monthPayList.add(twoMonthPayStrings[k]); k++; } } } twoTimeStrings = (String[])timeList.toArray(new String[timeList.size()]); twoCapitalStrings = (String[])capitalList.toArray(new String[capitalList.size()]); twoInterestStrings = (String[])interestList.toArray(new String[interestList.size()]); twoMonthPayStrings = (String[])monthPayList.toArray(new String[monthPayList.size()]); //return resultString; } //9.显示结果 public void showResult(){ DecimalFormat df = new DecimalFormat("#,###.0"); if (aheadTime == 0){ //等额本息的结果 oneLoanSumTextView.setText(df.format(mortgage / 10000) + "万元"); oneMonthTextView.setText(time + "月"); onePaySumTextView.setText(oneSumString + "元"); oneInterestTextView.setText(oneInterestString + "元"); oneMonthPayTextView.setText(oneMonthPayString + "元"); //等额本金的结果 twoLoanSumTextView.setText(df.format(mortgage / 10000) + "万元"); twoMonthTextView.setText(time + "月"); twoPaySumTextView.setText(twoSumString + "元"); twoInterestTextView.setText(twoInterestString + "元"); twoFirstMonthPayTextView.setText(twoFistMonthSum + "元"); twoDeltaMonthPayTextView.setText(twoDeltaMonthSum + "元"); } } @Override protected void onResume() { super.onResume(); //友盟数据统计 MobclickAgent.onResume(this); // 视频广告 VideoAdManager.getInstance(this).onResume(); } @Override protected void onPause() { super.onPause(); //友盟数据统计 MobclickAgent.onPause(this); // 插播广告 SpotManager.getInstance(this).onPause(); // 视频广告 VideoAdManager.getInstance(this).onPause(); } @Override protected void onStop() { super.onStop(); // 插播广告 SpotManager.getInstance(this).onStop(); } @Override protected void onDestroy() { super.onDestroy(); // 插播广告 SpotManager.getInstance(this).onDestroy(); // 视频广告 VideoAdManager.getInstance(this).onDestroy(); } //按下返回键,返回到首页 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK){ Activity_Result.this.finish(); } if (SpotManager.getInstance(Activity_Result.this).isSpotShowing()) { SpotManager.getInstance(Activity_Result.this).hideSpot(); } return super.onKeyDown(keyCode, event); } }