zoukankan      html  css  js  c++  java
  • 第二阶段冲刺(二)

    今日工作:

    • 添加条目图标的增加。
    • 添加代码的优化,去除数据库操作。

    添加界面源代码:

    package com.yuukidach.ucount;
    
    import android.content.Intent;
    import android.graphics.Typeface;
    import android.os.Bundle;
    import androidx.fragment.app.FragmentManager;
    import androidx.fragment.app.FragmentTransaction;
    import androidx.appcompat.app.AppCompatActivity;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.ImageButton;
    import android.widget.ImageView;
    import android.widget.TextView;
    import android.widget.Toast;
    
    import org.litepal.crud.DataSupport;
    
    import java.text.DecimalFormat;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class AddItemActivity extends AppCompatActivity {
        private static final String TAG = "AddItemActivity";
    
        private FragmentManager manager;
        private FragmentTransaction transaction;
    
        private Button addCostBtn;
        private Button addEarnBtn;
        private Button clearBtn;
        private ImageButton addFinishBtn;
        private ImageButton addDescription;
    
    
        private ImageView bannerImage;
        private TextView bannerText;
    
        private TextView moneyText;
    
        private TextView words;
    
        private SimpleDateFormat formatItem = new SimpleDateFormat("yyyy年MM月dd日");
        private SimpleDateFormat formatSum  = new SimpleDateFormat("yyyy年MM月");
        private DecimalFormat decimalFormat = new DecimalFormat("0.00");
    
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_add_item);
    
    
    
    
            addCostBtn = (Button) findViewById(R.id.add_cost_button);
            addEarnBtn = (Button) findViewById(R.id.add_earn_button);
            addFinishBtn   = (ImageButton) findViewById(R.id.add_finish);
            addDescription = (ImageButton) findViewById(R.id.add_description);
            clearBtn = (Button) findViewById(R.id.clear);
            words = (TextView) findViewById(R.id.anime_words);
            // 设置字体颜色
            Typeface typeface = Typeface.createFromAsset(getAssets(), "fonts/chinese_character.ttf");
            clearBtn.setTypeface(typeface);
            words.setTypeface(typeface);
            // 设置按钮监听
            addCostBtn.setOnClickListener(new ButtonListener());
            addEarnBtn.setOnClickListener(new ButtonListener());
            addFinishBtn.setOnClickListener(new ButtonListener());
            addDescription.setOnClickListener(new ButtonListener());
            clearBtn.setOnClickListener(new ButtonListener());
    
    
            bannerText = (TextView) findViewById(R.id.chosen_title);
            bannerImage = (ImageView) findViewById(R.id.chosen_image);
    
            moneyText = (TextView) findViewById(R.id.input_money_text);
            // 及时清零
            moneyText.setText("0.00");
    
            manager = getSupportFragmentManager();
    
            transaction = manager.beginTransaction();
            transaction.replace(R.id.item_fragment, new CostFragment());
            transaction.commit();
    
        }
    
        private class ButtonListener implements View.OnClickListener {
            @Override
            public void onClick(View view) {
                transaction = manager.beginTransaction();
    
                switch (view.getId()) {
                    case R.id.add_cost_button:
                        addCostBtn.setTextColor(0xffff8c00); // 设置“支出“按钮为灰色
                        addEarnBtn.setTextColor(0xff908070); // 设置“收入”按钮为橙色
                        transaction.replace(R.id.item_fragment, new CostFragment());
                        Log.d(TAG, "onClick: add_cost_button");
    
                        break;
                    case R.id.add_earn_button:
                        addEarnBtn.setTextColor(0xffff8c00); // 设置“收入“按钮为灰色
                        addCostBtn.setTextColor(0xff908070); // 设置“支出”按钮为橙色
                        transaction.replace(R.id.item_fragment, new EarnFragment());
                        Log.d(TAG, "onClick: add_earn_button");
    
                        break;
                    case R.id.add_finish:
                        String moneyString =  moneyText.getText().toString();
                        if (moneyString.equals("0.00") || GlobalVariables.getmInputMoney().equals(""))
                            Toast.makeText(getApplicationContext(),"你还没输入金额",Toast.LENGTH_SHORT).show();
                        else {
                            putItemInData(Double.parseDouble(moneyText.getText().toString()));
                            calculatorClear();
                            finish();
                        }
                        break;
                    case R.id.clear:
                        calculatorClear();
                        moneyText.setText("0.00");
                        break;
                    case R.id.add_description:
                        Intent intent = new Intent(AddItemActivity.this, AddDescription.class);
                        startActivity(intent);
                }
    
                transaction.commit();
            }
        }
    
        public void putItemInData(double money) {
            Sum sum = new Sum();
            IOItem ioItem = new IOItem();
            String tagName = (String) bannerText.getTag();
            int tagType = (int) bannerImage.getTag();
    
            if (tagType < 0) {
                ioItem.setType(ioItem.TYPE_COST);
            } else ioItem.setType(ioItem.TYPE_EARN);
    
            ioItem.setName(bannerText.getText().toString());
            ioItem.setSrcName(tagName);
            ioItem.setMoney(money);
            ioItem.setTimeStamp(formatItem.format(new Date()));         // 存储记账时间
            ioItem.setDescription(GlobalVariables.getmDescription());
            ioItem.save();
    
            // 存储完之后及时清空备注
            GlobalVariables.setmDescription("");
    
            int type = ioItem.getType();
            String sumDate = formatSum.format(new Date());
            // 计算总额
            sum.calculateMoneyIncludeNull(sum.SUM, "All", money, type, sumDate);
            calculateMonthlyMoney(type, ioItem);
        }
    
        public void calculateMonthlyMoney(int type, IOItem ioItem) {
            Sum sum = new Sum();
            Sum tmpSum = new Sum();
            String sumDate = formatSum.format(new Date());
            int id = (int)((double)type / 2 + 2.5);
    
            // 保证一定现有2号id,避免出现当月支出不更新的bug
            if (!tmpSum.isThereASum(tmpSum.MONTHLY_COST))
                tmpSum.saveSum(tmpSum, tmpSum.MONTHLY_COST, 0.0, 1, sumDate);
    
            if (sum.isThereASum(id)) {
                sum = DataSupport.find(Sum.class, id);
                if (sum.getDate().equals(ioItem.getTimeStamp().substring(0, 8))) {
                    sum.calculateMoney(id, ioItem.getMoney(), type*type);
                } else {
                    sum.saveSum(sum, id, ioItem.getMoney(), type*type, sumDate);
                }
            } else {
                sum.saveSum(sum, id, ioItem.getMoney(), type*type, sumDate);
            }
        }
    
        // 数字输入按钮
        public void calculatorNumOnclick(View v) {
            Button view = (Button) v;
            String digit = view.getText().toString();
            String money = GlobalVariables.getmInputMoney();
            if (GlobalVariables.getmHasDot() && GlobalVariables.getmInputMoney().length()>2) {
                String dot = money.substring(money.length() - 3, money.length() - 2);
                Log.d(TAG, "calculatorNumOnclick: " + dot);
                if (dot.equals(".")) {
                    Toast.makeText(getApplicationContext(), "你已经不能继续输入了", Toast.LENGTH_SHORT).show();
                    return;
                }
            }
            GlobalVariables.setmInputMoney(money+digit);
            moneyText.setText(decimalFormat.format(Double.valueOf(GlobalVariables.getmInputMoney())));
        }
    
        // 清零按钮
        public void calculatorClear() {
            GlobalVariables.setmInputMoney("");
            GlobalVariables.setHasDot(false);
        }
    
        // 小数点处理工作
        public void calculatorPushDot(View view) {
            if (GlobalVariables.getmHasDot()) {
                Toast.makeText(getApplicationContext(), "你已经输入过小数点了", Toast.LENGTH_SHORT).show();
            } else {
                GlobalVariables.setmInputMoney(GlobalVariables.getmInputMoney()+".");
                GlobalVariables.setHasDot(true);
            }
        }
    }
  • 相关阅读:
    redis发布订阅
    redis学习笔记(面试题)
    redis安全 (error) NOAUTH Authentication required
    HDU3001 Travelling —— 状压DP(三进制)
    POJ3616 Milking Time —— DP
    POJ3186 Treats for the Cows —— DP
    HDU1074 Doing Homework —— 状压DP
    POJ1661 Help Jimmy —— DP
    HDU1260 Tickets —— DP
    HDU1176 免费馅饼 —— DP
  • 原文地址:https://www.cnblogs.com/mac-13/p/13083849.html
Copyright © 2011-2022 走看看