note_book/app/src/main/java/com/example/tally/MonthChartActivity.java

152 lines
5.5 KiB
Java
Raw Normal View History

2024-02-11 03:14:04 +00:00
package com.example.tally;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.viewpager.widget.ViewPager;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import com.example.tally.adapter.ChartVPAdapter;
import com.example.tally.db.DBManager;
import com.example.tally.frag_chart.IncomeChartFragment;
import com.example.tally.frag_chart.OutcomeChartFragment;
import com.example.tally.utils.CalendarDialog;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
public class MonthChartActivity extends AppCompatActivity {
Button inBtn,outBtn;
TextView dateTv,inTv,outTv;
ViewPager chartVp;
int year;
int month;
int selectPos = -1,selectMonth =-1;
List<Fragment> chartFragList;
private IncomeChartFragment incomChartFragment;
private OutcomeChartFragment outcomChartFragment;
private ChartVPAdapter chartVPAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_month_chart);
initView();
initTime();
initStatistics(year,month);
initFrag();
setVPSelectListener();
}
private void setVPSelectListener() {
chartVp.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener(){
@Override
public void onPageSelected(int position) {
setButtonStyle(position);
}
});
}
private void initFrag() {
chartFragList = new ArrayList<>();
// 添加Fragment的对象
incomChartFragment = new IncomeChartFragment();
outcomChartFragment = new OutcomeChartFragment();
// 添加数据到Fragment当中
Bundle bundle = new Bundle();
bundle.putInt("year",year);
bundle.putInt("month",month);
incomChartFragment.setArguments(bundle);
outcomChartFragment.setArguments(bundle);
// 将Fragment添加到数据源当中
chartFragList.add(outcomChartFragment);
chartFragList.add(incomChartFragment);
// 使用适配器
chartVPAdapter = new ChartVPAdapter(getSupportFragmentManager(), chartFragList);
chartVp.setAdapter(chartVPAdapter);
// 将Fragment加载到Acitivy当中
}
/* 统计某年某月的收支情况数据*/
private void initStatistics(int year, int month) {
float inMoneyOneMonth = DBManager.getSumMoneyOneMonth(year, month, 1); //收入总钱数
float outMoneyOneMonth = DBManager.getSumMoneyOneMonth(year, month, 0); //支出总钱数
int incountItemOneMonth = DBManager.getCountItemOneMonth(year, month, 1); //收入多少笔
int outcountItemOneMonth = DBManager.getCountItemOneMonth(year, month, 0); //支出多少笔
dateTv.setText(year+""+month+"月账单");
inTv.setText(""+incountItemOneMonth+"笔收入, ¥ "+inMoneyOneMonth);
outTv.setText(""+outcountItemOneMonth+"笔支出, ¥ "+outMoneyOneMonth);
}
/** 初始化时间的方法*/
private void initTime() {
Calendar calendar = Calendar.getInstance();
year = calendar.get(Calendar.YEAR);
month = calendar.get(Calendar.MONTH)+1;
}
//初始化控件
private void initView() {
inBtn = findViewById(R.id.chart_btn_in);
outBtn = findViewById(R.id.chart_btn_out);
dateTv = findViewById(R.id.chart_tv_date);
inTv = findViewById(R.id.chart_tv_in);
outTv = findViewById(R.id.chart_tv_out);
chartVp = findViewById(R.id.chart_vp);
}
public void onClick(View view) {
switch (view.getId()) {
case R.id.chart_iv_back:
finish();
break;
case R.id.chart_iv_rili:
showCalendarDialog();
break;
case R.id.chart_btn_in:
setButtonStyle(1);
chartVp.setCurrentItem(1);
break;
case R.id.chart_btn_out:
setButtonStyle(0);
chartVp.setCurrentItem(0);
break;
}
}
/* 显示日历对话框*/
private void showCalendarDialog() {
CalendarDialog dialog = new CalendarDialog(this, selectPos, selectMonth);
dialog.show();
dialog.setDialogSize();
dialog.setOnRefreshListener(new CalendarDialog.OnRefreshListener() {
@Override
public void onRefresh(int selPos, int year, int month) {
MonthChartActivity.this.selectPos = selPos;
MonthChartActivity.this.selectMonth = month;
initStatistics(year,month);
incomChartFragment.setDate(year,month);
outcomChartFragment.setDate(year,month);
}
});
}
/* 设置按钮样式的改变 支出-0 收入-1*/
private void setButtonStyle(int kind){
if (kind == 0) {
outBtn.setBackgroundResource(R.drawable.main_recordbtn_bg);
outBtn.setTextColor(Color.WHITE);
inBtn.setBackgroundResource(R.drawable.dialog_btn_bg);
inBtn.setTextColor(Color.BLACK);
}else if (kind == 1){
inBtn.setBackgroundResource(R.drawable.main_recordbtn_bg);
inBtn.setTextColor(Color.WHITE);
outBtn.setBackgroundResource(R.drawable.dialog_btn_bg);
outBtn.setTextColor(Color.BLACK);
}
}
}