Search in sources :

Example 1 with PointValue

use of lecho.lib.hellocharts.model.PointValue in project CoCoin by Nightonke.

the class ShowActivity method onCreate.

@Override
protected void onCreate(Bundle savedInstanceState) {
    getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_show);
    mContext = this;
    title = (TextView) findViewById(R.id.title);
    CoCoinUtil.init(mContext);
    title.setTypeface(CoCoinUtil.typefaceLatoLight);
    title.setText(mContext.getResources().getString(R.string.app_name));
    mViewPager = (SCViewPager) findViewById(R.id.viewpager_main_activity);
    mDotsView = (DotsView) findViewById(R.id.dotsview_main);
    mDotsView.setDotRessource(R.drawable.dot_selected, R.drawable.dot_unselected);
    mDotsView.setNumberOfPage(NUM_PAGES);
    mPageAdapter = new SCViewPagerAdapter(getSupportFragmentManager());
    mPageAdapter.setNumberOfPage(NUM_PAGES);
    mPageAdapter.setFragmentBackgroundColor(R.color.my_blue);
    mViewPager.setAdapter(mPageAdapter);
    mViewPager.setOverScrollMode(View.OVER_SCROLL_NEVER);
    mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
        }

        @Override
        public void onPageSelected(int position) {
            mDotsView.selectDot(position);
        }

        @Override
        public void onPageScrollStateChanged(int state) {
        }
    });
    final Point size = SCViewAnimationUtil.getDisplaySize(this);
    int iconOffsetX = CoCoinUtil.getInstance().dpToPx(28);
    int iconOffsetY = CoCoinUtil.getInstance().dpToPx(28);
    SCViewAnimation sc0 = new SCViewAnimation(findViewById(R.id.icon_4));
    sc0.startToPosition(size.x / 4 - iconOffsetX, size.y * 2 / 7 - iconOffsetY);
    sc0.addPageAnimation(new SCPositionAnimation(this, 0, 0, size.y));
    mViewPager.addAnimation(sc0);
    SCViewAnimation sc1 = new SCViewAnimation(findViewById(R.id.icon_11));
    sc1.startToPosition(size.x * 3 / 4 - iconOffsetX, size.y * 3 / 7 - iconOffsetY);
    sc1.addPageAnimation(new SCPositionAnimation(this, 0, -size.x, 0));
    mViewPager.addAnimation(sc1);
    SCViewAnimation sc2 = new SCViewAnimation(findViewById(R.id.icon_12));
    sc2.startToPosition(size.x / 4 - iconOffsetX, size.y * 4 / 7 - iconOffsetY);
    sc2.addPageAnimation(new SCPositionAnimation(this, 0, size.x, 0));
    mViewPager.addAnimation(sc2);
    SCViewAnimation sc3 = new SCViewAnimation(findViewById(R.id.icon_19));
    sc3.startToPosition(size.x * 3 / 4 - iconOffsetX, size.y * 5 / 7 - iconOffsetY);
    sc3.addPageAnimation(new SCPositionAnimation(this, 0, 0, -size.y));
    mViewPager.addAnimation(sc3);
    ((TextView) findViewById(R.id.text_0)).setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    SCViewAnimation sc4 = new SCViewAnimation(findViewById(R.id.text_0));
    sc4.addPageAnimation(new SCPositionAnimation(this, 0, -size.x, 0));
    mViewPager.addAnimation(sc4);
    PieChartView pie = (PieChartView) findViewById(R.id.pie);
    List<SliceValue> values = new ArrayList<SliceValue>();
    for (int i = 0; i < 5; ++i) {
        SliceValue sliceValue = new SliceValue((float) Math.random() * 30 + 15, ContextCompat.getColor(CoCoinApplication.getAppContext(), R.color.white));
        values.add(sliceValue);
    }
    PieChartData pieData = new PieChartData(values);
    pieData.setHasLabels(false);
    pieData.setHasLabelsOnlyForSelected(false);
    pieData.setHasLabelsOutside(false);
    pieData.setHasCenterCircle(true);
    pie.setPieChartData(pieData);
    pie.setContainerScrollEnabled(true, ContainerScrollType.HORIZONTAL);
    SCViewAnimation sc5 = new SCViewAnimation(pie);
    sc5.startToPosition(size.x / 2, size.y / 9 - size.y);
    sc5.addPageAnimation(new SCPositionAnimation(this, 0, 0, size.y));
    sc5.addPageAnimation(new SCPositionAnimation(this, 1, 0, size.y));
    mViewPager.addAnimation(sc5);
    LineChartView line = (LineChartView) findViewById(R.id.line);
    List<Line> lines = new ArrayList<Line>();
    for (int i = 0; i < 1; ++i) {
        List<PointValue> pointValues = new ArrayList<PointValue>();
        pointValues.add(new PointValue(0, 50));
        pointValues.add(new PointValue(1, 100));
        pointValues.add(new PointValue(2, 20));
        pointValues.add(new PointValue(3, 0));
        pointValues.add(new PointValue(4, 10));
        pointValues.add(new PointValue(5, 15));
        pointValues.add(new PointValue(6, 40));
        pointValues.add(new PointValue(7, 60));
        pointValues.add(new PointValue(8, 100));
        Line aLine = new Line(pointValues);
        aLine.setColor(ContextCompat.getColor(CoCoinApplication.getAppContext(), R.color.white));
        aLine.setShape(ValueShape.CIRCLE);
        aLine.setCubic(false);
        aLine.setFilled(false);
        aLine.setHasLabels(false);
        aLine.setHasLabelsOnlyForSelected(false);
        aLine.setHasLines(true);
        aLine.setHasPoints(true);
        lines.add(aLine);
    }
    LineChartData linedata = new LineChartData(lines);
    linedata.setBaseValue(Float.NEGATIVE_INFINITY);
    line.setLineChartData(linedata);
    line.setContainerScrollEnabled(true, ContainerScrollType.HORIZONTAL);
    SCViewAnimation sc6 = new SCViewAnimation(line);
    sc6.startToPosition(-size.x, null);
    sc6.addPageAnimation(new SCPositionAnimation(this, 0, size.x, 0));
    sc6.addPageAnimation(new SCPositionAnimation(this, 1, size.x, 0));
    mViewPager.addAnimation(sc6);
    ColumnChartView histogram = (ColumnChartView) findViewById(R.id.histogram);
    List<Column> columns = new ArrayList<Column>();
    List<SubcolumnValue> subcolumnValues;
    for (int i = 0; i < 5; ++i) {
        subcolumnValues = new ArrayList<SubcolumnValue>();
        for (int j = 0; j < 1; ++j) {
            subcolumnValues.add(new SubcolumnValue((float) Math.random() * 50f + 5, ContextCompat.getColor(CoCoinApplication.getAppContext(), R.color.white)));
        }
        Column column = new Column(subcolumnValues);
        column.setHasLabels(false);
        column.setHasLabelsOnlyForSelected(false);
        columns.add(column);
    }
    ColumnChartData histogramData = new ColumnChartData(columns);
    histogram.setColumnChartData(histogramData);
    histogram.setContainerScrollEnabled(true, ContainerScrollType.HORIZONTAL);
    SCViewAnimation sc7 = new SCViewAnimation(histogram);
    sc7.startToPosition(size.x / 2 - CoCoinUtil.getInstance().dpToPx(140), size.y * 8 / 9 - CoCoinUtil.getInstance().dpToPx(140) + size.y);
    sc7.addPageAnimation(new SCPositionAnimation(this, 0, 0, -size.y));
    sc7.addPageAnimation(new SCPositionAnimation(this, 1, 0, size.y));
    mViewPager.addAnimation(sc7);
    ((TextView) findViewById(R.id.text_1)).setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    SCViewAnimation sc8 = new SCViewAnimation(findViewById(R.id.text_1));
    sc8.startToPosition(size.x, null);
    sc8.addPageAnimation(new SCPositionAnimation(this, 0, -size.x, 0));
    sc8.addPageAnimation(new SCPositionAnimation(this, 1, -size.x, 0));
    mViewPager.addAnimation(sc8);
    SCViewAnimation sc9 = new SCViewAnimation(findViewById(R.id.cloud));
    sc9.startToPosition(size.x / 2 - CoCoinUtil.getInstance().dpToPx(100) + size.x, size.y / 7);
    sc9.addPageAnimation(new SCPositionAnimation(this, 1, -size.x, 0));
    sc9.addPageAnimation(new SCPositionAnimation(this, 2, 0, size.y));
    mViewPager.addAnimation(sc9);
    SCViewAnimation sc10 = new SCViewAnimation(findViewById(R.id.mobile));
    sc10.startToPosition(size.x / 2 - size.x, size.y * 6 / 7 - CoCoinUtil.getInstance().dpToPx(100));
    sc10.addPageAnimation(new SCPositionAnimation(this, 1, size.x, 0));
    sc10.addPageAnimation(new SCPositionAnimation(this, 2, 0, -size.y));
    mViewPager.addAnimation(sc10);
    ((TextView) findViewById(R.id.text_2)).setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    SCViewAnimation sc11 = new SCViewAnimation(findViewById(R.id.text_2));
    sc11.startToPosition(size.x, null);
    sc11.addPageAnimation(new SCPositionAnimation(this, 1, -size.x, 0));
    sc11.addPageAnimation(new SCPositionAnimation(this, 2, -size.x, 0));
    mViewPager.addAnimation(sc11);
    ImageView remind1 = (ImageView) findViewById(R.id.remind_1);
    remind1.getLayoutParams().width = size.x / 3;
    remind1.getLayoutParams().height = size.x / 3 * 653 / 320;
    SCViewAnimation sc12 = new SCViewAnimation(findViewById(R.id.remind_1));
    sc12.startToPosition(size.x / 2 - size.x, size.y / 11);
    sc12.addPageAnimation(new SCPositionAnimation(this, 2, size.x, 0));
    sc12.addPageAnimation(new SCPositionAnimation(this, 3, size.x, 0));
    mViewPager.addAnimation(sc12);
    ImageView remind2 = (ImageView) findViewById(R.id.remind_2);
    remind2.getLayoutParams().width = size.x / 3;
    remind2.getLayoutParams().height = size.x / 3 * 653 / 320;
    SCViewAnimation sc13 = new SCViewAnimation(findViewById(R.id.remind_2));
    sc13.startToPosition(size.x / 2 + size.x - size.x / 3, size.y * 10 / 11 - remind1.getLayoutParams().height);
    sc13.addPageAnimation(new SCPositionAnimation(this, 2, -size.x, 0));
    sc13.addPageAnimation(new SCPositionAnimation(this, 3, -size.x, 0));
    mViewPager.addAnimation(sc13);
    ((TextView) findViewById(R.id.text_3)).setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    SCViewAnimation sc14 = new SCViewAnimation(findViewById(R.id.text_3));
    sc14.startToPosition(size.x, null);
    sc14.addPageAnimation(new SCPositionAnimation(this, 2, -size.x, 0));
    sc14.addPageAnimation(new SCPositionAnimation(this, 3, -size.x, 0));
    mViewPager.addAnimation(sc14);
    View statusBar = findViewById(R.id.status_bar);
    statusBar.setLayoutParams(new RelativeLayout.LayoutParams(statusBar.getLayoutParams().width, getStatusBarHeight()));
    SCViewAnimation statusBarAnimation = new SCViewAnimation(statusBar);
    statusBarAnimation.startToPosition(null, -getStatusBarHeight());
    statusBarAnimation.addPageAnimation(new SCPositionAnimation(this, 3, 0, getStatusBarHeight()));
    mViewPager.addAnimation(statusBarAnimation);
    toolbarLayout = findViewById(R.id.toolbar_layout);
    SCViewAnimation toolbarLayoutAnimation = new SCViewAnimation(toolbarLayout);
    toolbarLayoutAnimation.startToPosition(null, -size.y / 2);
    toolbarLayoutAnimation.addPageAnimation(new SCPositionAnimation(this, 3, 0, size.y / 2));
    mViewPager.addAnimation(toolbarLayoutAnimation);
    passwordAdapter = new PasswordChangeFragmentAdapter(getSupportFragmentManager());
    viewPager = (ViewPager) findViewById(R.id.viewpager);
    viewPager.setScrollBarFadeDuration(700);
    viewPager.setAdapter(passwordAdapter);
    myGridView = (MyGridView) findViewById(R.id.gridview);
    myGridViewAdapter = new PasswordChangeButtonGridViewAdapter(this);
    myGridView.setAdapter(myGridViewAdapter);
    myGridView.setOnItemClickListener(gridViewClickListener);
    myGridView.setOnItemLongClickListener(gridViewLongClickListener);
    myGridView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {

        @Override
        public void onGlobalLayout() {
            myGridView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
            View lastChild = myGridView.getChildAt(myGridView.getChildCount() - 1);
            RelativeLayout.LayoutParams relativeLayout = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, lastChild.getBottom());
            relativeLayout.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
            myGridView.setLayoutParams(relativeLayout);
            DisplayMetrics displaymetrics = new DisplayMetrics();
            getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
            int height = displaymetrics.heightPixels;
            RelativeLayout.LayoutParams viewPagerLayoutParams = new RelativeLayout.LayoutParams(viewPager.getLayoutParams().width, 800);
            viewPagerLayoutParams.topMargin = getStatusBarHeight() + CoCoinUtil.getToolBarHeight(mContext) / 2;
            viewPager.setLayoutParams(viewPagerLayoutParams);
        }
    });
    superToast = new SuperToast(this);
    SCViewAnimation gridViewAnimation = new SCViewAnimation(myGridView);
    gridViewAnimation.startToPosition(null, size.y);
    gridViewAnimation.addPageAnimation(new SCPositionAnimation(this, 3, 0, -size.y));
    mViewPager.addAnimation(gridViewAnimation);
    SCViewAnimation viewpagerAnimation = new SCViewAnimation(viewPager);
    viewpagerAnimation.startToPosition(null, -size.y);
    viewpagerAnimation.addPageAnimation(new SCPositionAnimation(this, 3, 0, size.y));
    mViewPager.addAnimation(viewpagerAnimation);
    View background = findViewById(R.id.background);
    SCViewAnimation backgroundAnimation = new SCViewAnimation(background);
    backgroundAnimation.startToPosition(null, -size.y - 100);
    backgroundAnimation.addPageAnimation(new SCPositionAnimation(this, 3, 0, size.y + 100));
    mViewPager.addAnimation(backgroundAnimation);
}
Also used : SuperToast(com.github.johnpersano.supertoasts.SuperToast) ArrayList(java.util.ArrayList) SliceValue(lecho.lib.hellocharts.model.SliceValue) SCViewPagerAdapter(com.dev.sacot41.scviewpager.SCViewPagerAdapter) DisplayMetrics(android.util.DisplayMetrics) PasswordChangeButtonGridViewAdapter(com.nightonke.saver.adapter.PasswordChangeButtonGridViewAdapter) Column(lecho.lib.hellocharts.model.Column) LineChartData(lecho.lib.hellocharts.model.LineChartData) SubcolumnValue(lecho.lib.hellocharts.model.SubcolumnValue) TextView(android.widget.TextView) LineChartView(lecho.lib.hellocharts.view.LineChartView) ImageView(android.widget.ImageView) ViewTreeObserver(android.view.ViewTreeObserver) SCViewAnimation(com.dev.sacot41.scviewpager.SCViewAnimation) PointValue(lecho.lib.hellocharts.model.PointValue) PieChartView(lecho.lib.hellocharts.view.PieChartView) PieChartData(lecho.lib.hellocharts.model.PieChartData) Point(android.graphics.Point) SCViewPager(com.dev.sacot41.scviewpager.SCViewPager) ViewPager(android.support.v4.view.ViewPager) ImageView(android.widget.ImageView) View(android.view.View) MyGridView(com.nightonke.saver.ui.MyGridView) PieChartView(lecho.lib.hellocharts.view.PieChartView) AdapterView(android.widget.AdapterView) DotsView(com.dev.sacot41.scviewpager.DotsView) TextView(android.widget.TextView) LineChartView(lecho.lib.hellocharts.view.LineChartView) ColumnChartView(lecho.lib.hellocharts.view.ColumnChartView) Point(android.graphics.Point) Line(lecho.lib.hellocharts.model.Line) PasswordChangeFragmentAdapter(com.nightonke.saver.adapter.PasswordChangeFragmentAdapter) SCPositionAnimation(com.dev.sacot41.scviewpager.SCPositionAnimation) RelativeLayout(android.widget.RelativeLayout) ColumnChartData(lecho.lib.hellocharts.model.ColumnChartData) ColumnChartView(lecho.lib.hellocharts.view.ColumnChartView)

Example 2 with PointValue

use of lecho.lib.hellocharts.model.PointValue in project CoCoin by Nightonke.

the class ReportViewFragment method onViewCreated.

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    IS_EMPTY = RecordManager.getInstance(CoCoinApplication.getAppContext()).RECORDS.isEmpty();
    mScrollView = (ObservableScrollView) view.findViewById(R.id.scrollView);
    MaterialViewPagerHelper.registerScrollView(getActivity(), mScrollView, null);
    expenseTV = (TextView) view.findViewById(R.id.expense);
    expenseTV.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    expenseTV.setText(CoCoinUtil.GetInMoney(0));
    tagsTV = (TextView) view.findViewById(R.id.tags);
    tagsTV.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    tagsTV.setText("");
    title = (TextView) view.findViewById(R.id.title);
    title.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    pieLayout = (LinearLayout) view.findViewById(R.id.pie_layout);
    pieLayout.setVisibility(View.GONE);
    pieTitle = (TextView) view.findViewById(R.id.pie_title);
    pieTitle.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    pie = (PieChartView) view.findViewById(R.id.chart_pie);
    pie.setChartRotationEnabled(false);
    pie.setOnValueTouchListener(new PieChartOnValueSelectListener() {

        @Override
        public void onValueSelected(int p, SliceValue sliceValue) {
            // snack bar
            String text;
            tagId = Integer.valueOf(String.valueOf(sliceValue.getLabelAsChars()));
            double percent = sliceValue.getValue() / expense * 100;
            if ("zh".equals(CoCoinUtil.GetLanguage())) {
                text = CoCoinUtil.GetSpendString((int) sliceValue.getValue()) + CoCoinUtil.GetPercentString(percent) + "\n" + "于" + CoCoinUtil.GetTagName(tagId);
            } else {
                text = CoCoinUtil.GetSpendString((int) sliceValue.getValue()) + " (takes " + String.format("%.2f", percent) + "%)\n" + "in " + CoCoinUtil.GetTagName(tagId);
            }
            if ("zh".equals(CoCoinUtil.GetLanguage())) {
                if (selectYear) {
                    dialogTitle = from.get(Calendar.YEAR) + "年" + "\n" + CoCoinUtil.GetSpendString((int) sliceValue.getValue()) + "于" + CoCoinUtil.GetTagName(tagId);
                } else {
                    dialogTitle = from.get(Calendar.YEAR) + "年" + (from.get(Calendar.MONTH) + 1) + "月" + "\n" + CoCoinUtil.GetSpendString((int) sliceValue.getValue()) + "于" + CoCoinUtil.GetTagName(tagId);
                }
            } else {
                if (selectYear) {
                    dialogTitle = CoCoinUtil.GetSpendString((int) sliceValue.getValue()) + " in " + from.get(Calendar.YEAR) + "\n" + "on " + CoCoinUtil.GetTagName(tagId);
                } else {
                    dialogTitle = CoCoinUtil.GetSpendString((int) sliceValue.getValue()) + " in " + CoCoinUtil.GetMonthShort(from.get(Calendar.MONTH) + 1) + " " + from.get(Calendar.YEAR) + "\n" + "on " + CoCoinUtil.GetTagName(tagId);
                }
            }
            Snackbar snackbar = Snackbar.with(mContext).type(SnackbarType.MULTI_LINE).duration(Snackbar.SnackbarDuration.LENGTH_SHORT).position(Snackbar.SnackbarPosition.BOTTOM).margin(15, 15).backgroundDrawable(CoCoinUtil.GetSnackBarBackground(-3)).text(text).textTypeface(CoCoinUtil.GetTypeface()).textColor(Color.WHITE).actionLabelTypeface(CoCoinUtil.GetTypeface()).actionLabel(mContext.getResources().getString(R.string.check)).actionColor(Color.WHITE).actionListener(new ActionClickListener() {

                @Override
                public void onActionClicked(Snackbar snackbar) {
                    new GetData(from, to, tagId, dialogTitle).execute();
                }
            });
            SnackbarManager.show(snackbar);
            if (p == lastPieSelectedPosition) {
                return;
            } else {
                lastPieSelectedPosition = p;
            }
        }

        @Override
        public void onValueDeselected() {
        }
    });
    iconRight = (MaterialIconView) view.findViewById(R.id.icon_right);
    iconRight.setOnClickListener(this);
    iconLeft = (MaterialIconView) view.findViewById(R.id.icon_left);
    iconLeft.setOnClickListener(this);
    emptyTip = (TextView) view.findViewById(R.id.empty_tip);
    emptyTip.setTypeface(CoCoinUtil.GetTypeface());
    if (RecordManager.getInstance(CoCoinApplication.getAppContext()).RECORDS.size() != 0) {
        emptyTip.setText(mContext.getResources().getString(R.string.report_view_please_select_data));
    } else {
        emptyTip.setText(mContext.getResources().getString(R.string.report_view_no_data));
        isEmpty = true;
    }
    highestTagLayout = (LinearLayout) view.findViewById(R.id.highest_tag_layout);
    highestTagLayout.setVisibility(View.GONE);
    highestTagTitle = (TextView) view.findViewById(R.id.highest_tag_title);
    highestTagTitle.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    highestFirst = (LinearLayout) view.findViewById(R.id.highest_first);
    highestFirst.setOnClickListener(this);
    highestTagIcon = (ImageView) view.findViewById(R.id.highest_tag_icon);
    highestTagText = (TextView) view.findViewById(R.id.highest_tag_text);
    highestTagText.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    highestTagExpenseTV = (TextView) view.findViewById(R.id.highest_tag_expense);
    highestTagExpenseTV.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    highestTagRecord = (TextView) view.findViewById(R.id.highest_tag_sum);
    highestTagRecord.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    highestTags = (ExpandedListView) view.findViewById(R.id.highest_tags);
    highestTagsLayout = (ExpandableRelativeLayout) view.findViewById(R.id.expand_highest_tag);
    highestTagMore = (LinearLayout) view.findViewById(R.id.highest_tag_more);
    highestTagMore.setOnClickListener(this);
    highestTagMoreText = (TextView) view.findViewById(R.id.highest_tag_more_text);
    highestTagMoreText.setTypeface(CoCoinUtil.getInstance().GetTypeface());
    highestTags.setOnItemClickListener(this);
    lowestTagLayout = (LinearLayout) view.findViewById(R.id.lowest_tag_layout);
    lowestTagLayout.setVisibility(View.GONE);
    lowestTagTitle = (TextView) view.findViewById(R.id.lowest_tag_title);
    lowestTagTitle.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    lowestFirst = (LinearLayout) view.findViewById(R.id.lowest_first);
    lowestFirst.setOnClickListener(this);
    lowestTagIcon = (ImageView) view.findViewById(R.id.lowest_tag_icon);
    lowestTagText = (TextView) view.findViewById(R.id.lowest_tag_text);
    lowestTagText.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    lowestTagExpenseTV = (TextView) view.findViewById(R.id.lowest_tag_expense);
    lowestTagExpenseTV.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    lowestTagRecord = (TextView) view.findViewById(R.id.lowest_tag_sum);
    lowestTagRecord.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    lowestTags = (ExpandedListView) view.findViewById(R.id.lowest_tags);
    lowestTagsLayout = (ExpandableRelativeLayout) view.findViewById(R.id.expand_lowest_tag);
    lowestTagMore = (LinearLayout) view.findViewById(R.id.lowest_tag_more);
    lowestTagMore.setOnClickListener(this);
    lowestTagMoreText = (TextView) view.findViewById(R.id.lowest_tag_more_text);
    lowestTagMoreText.setTypeface(CoCoinUtil.getInstance().GetTypeface());
    lowestTags.setOnItemClickListener(this);
    lineLayout = (LinearLayout) view.findViewById(R.id.line_layout);
    lineLayout.setVisibility(View.GONE);
    lineTitle = (TextView) view.findViewById(R.id.line_title);
    lineTitle.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    line = (LineChartView) view.findViewById(R.id.chart_line);
    line.setZoomEnabled(false);
    line.setOnValueTouchListener(new LineChartOnValueSelectListener() {

        @Override
        public void onValueSelected(int lineIndex, int pointIndex, PointValue value) {
            // snack bar
            String text;
            double percent = value.getY() / expense * 100;
            if ("zh".equals(CoCoinUtil.GetLanguage())) {
                if (selectYear) {
                    text = "在" + reportYear + " " + CoCoinUtil.getInstance().GetMonthShort((int) value.getX() + 1) + "\n" + CoCoinUtil.GetSpendString((int) value.getY()) + CoCoinUtil.GetPercentString(percent);
                } else {
                    text = "在" + CoCoinUtil.getInstance().GetMonthShort(reportMonth) + " " + ((int) value.getX() + 1) + CoCoinUtil.getInstance().GetWhetherFuck() + "\n" + CoCoinUtil.GetSpendString((int) value.getY()) + CoCoinUtil.GetPercentString(percent);
                }
            } else {
                if (selectYear) {
                    text = CoCoinUtil.GetSpendString((int) value.getY()) + CoCoinUtil.GetPercentString(percent) + "\n" + "in " + reportYear + " " + CoCoinUtil.getInstance().GetMonthShort((int) value.getX() + 1);
                } else {
                    text = CoCoinUtil.GetSpendString((int) value.getY()) + CoCoinUtil.GetPercentString(percent) + "\n" + "on " + CoCoinUtil.getInstance().GetMonthShort(reportMonth) + " " + ((int) value.getX() + 1) + CoCoinUtil.getInstance().GetWhetherFuck();
                }
            }
            if ("zh".equals(CoCoinUtil.GetLanguage())) {
                if (selectYear) {
                    dialogTitle = "在" + reportYear + " " + CoCoinUtil.getInstance().GetMonthShort((int) value.getX() + 1) + "\n" + CoCoinUtil.GetSpendString((int) value.getY()) + CoCoinUtil.GetPercentString(percent);
                } else {
                    dialogTitle = "在" + CoCoinUtil.getInstance().GetMonthShort(reportMonth) + " " + ((int) value.getX() + 1) + CoCoinUtil.getInstance().GetWhetherFuck() + "\n" + CoCoinUtil.GetSpendString((int) value.getY()) + CoCoinUtil.GetPercentString(percent);
                }
            } else {
                if (selectYear) {
                    dialogTitle = CoCoinUtil.GetSpendString((int) value.getY()) + CoCoinUtil.GetPercentString(percent) + "\n" + "in " + reportYear + " " + CoCoinUtil.getInstance().GetMonthShort((int) value.getX() + 1);
                } else {
                    dialogTitle = CoCoinUtil.GetSpendString((int) value.getY()) + CoCoinUtil.GetPercentString(percent) + "\n" + "on " + CoCoinUtil.getInstance().GetMonthShort(reportMonth) + " " + ((int) value.getX() + 1) + CoCoinUtil.getInstance().GetWhetherFuck();
                }
            }
            final Calendar tempFrom = Calendar.getInstance();
            final Calendar tempTo = Calendar.getInstance();
            if (selectYear) {
                tempFrom.set(reportYear, (int) value.getX(), 1, 0, 0, 0);
                tempFrom.add(Calendar.SECOND, 0);
                tempTo.set(reportYear, (int) value.getX(), tempFrom.getActualMaximum(Calendar.DAY_OF_MONTH), 23, 59, 59);
                tempTo.add(Calendar.SECOND, 0);
            } else {
                tempFrom.set(reportYear, reportMonth - 1, (int) value.getX() + 1, 0, 0, 0);
                tempFrom.add(Calendar.SECOND, 0);
                tempTo.set(reportYear, reportMonth - 1, (int) value.getX() + 1, 23, 59, 59);
                tempTo.add(Calendar.SECOND, 0);
            }
            Snackbar snackbar = Snackbar.with(mContext).type(SnackbarType.MULTI_LINE).duration(Snackbar.SnackbarDuration.LENGTH_SHORT).position(Snackbar.SnackbarPosition.BOTTOM).margin(15, 15).backgroundDrawable(CoCoinUtil.GetSnackBarBackground(-3)).text(text).textTypeface(CoCoinUtil.GetTypeface()).textColor(Color.WHITE).actionLabelTypeface(CoCoinUtil.GetTypeface()).actionLabel(mContext.getResources().getString(R.string.check)).actionColor(Color.WHITE).actionListener(new ActionClickListener() {

                @Override
                public void onActionClicked(Snackbar snackbar) {
                    new GetData(tempFrom, tempTo, Integer.MIN_VALUE, dialogTitle).execute();
                }
            });
            SnackbarManager.show(snackbar);
            if (pointIndex == lastLineSelectedPosition) {
                return;
            } else {
                lastLineSelectedPosition = pointIndex;
            }
        }

        @Override
        public void onValueDeselected() {
        }
    });
    iconRightLine = (MaterialIconView) view.findViewById(R.id.icon_right_line);
    iconRightLine.setOnClickListener(this);
    iconLeftLine = (MaterialIconView) view.findViewById(R.id.icon_left_line);
    iconLeftLine.setOnClickListener(this);
    highestMonthLayout = (LinearLayout) view.findViewById(R.id.highest_month_layout);
    highestMonthLayout.setVisibility(View.GONE);
    monthTitle = (TextView) view.findViewById(R.id.month_title);
    monthTitle.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    highestFirstMonth = (LinearLayout) view.findViewById(R.id.highest_first_month);
    highestFirstMonth.setOnClickListener(this);
    highestFirstIcon = (TextView) view.findViewById(R.id.highest_month_icon);
    highestFirstIcon.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    highestFirstText = (TextView) view.findViewById(R.id.highest_month_text);
    highestFirstText.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    highestFirstExpenseTV = (TextView) view.findViewById(R.id.highest_month_expense);
    highestFirstExpenseTV.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    highestFirstRecord = (TextView) view.findViewById(R.id.highest_month_sum);
    highestFirstRecord.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    highestMonths = (ExpandedListView) view.findViewById(R.id.highest_month);
    highestMonths.setOnItemClickListener(this);
    highestMonthsLayout = (ExpandableRelativeLayout) view.findViewById(R.id.expand_highest_month);
    highestLast = (LinearLayout) view.findViewById(R.id.highest_last_month);
    highestLast.setOnClickListener(this);
    highestLastIcon = (TextView) view.findViewById(R.id.lowest_month_icon);
    highestLastIcon.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    highestLastText = (TextView) view.findViewById(R.id.lowest_month_text);
    highestLastText.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    highestLastExpenseTV = (TextView) view.findViewById(R.id.lowest_month_expense);
    highestLastExpenseTV.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    highestLastRecord = (TextView) view.findViewById(R.id.lowest_month_sum);
    highestLastRecord.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    highestMonthMore = (LinearLayout) view.findViewById(R.id.highest_month_more);
    highestMonthMore.setOnClickListener(this);
    highestMonthMoreText = (TextView) view.findViewById(R.id.highest_month_more_text);
    highestMonthMoreText.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    averageMonthText = (TextView) view.findViewById(R.id.average_month_text);
    averageMonthText.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    averageMonthExpenseTV = (TextView) view.findViewById(R.id.average_month_expense);
    averageMonthExpenseTV.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    averageMonthRecordTV = (TextView) view.findViewById(R.id.average_month_sum);
    averageMonthRecordTV.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    highestDayLayout = (LinearLayout) view.findViewById(R.id.highest_day_layout);
    highestDayLayout.setVisibility(View.GONE);
    highestDayTitle = (TextView) view.findViewById(R.id.highest_day_title);
    highestDayTitle.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    highestFirstDay = (LinearLayout) view.findViewById(R.id.highest_first_day);
    highestFirstDay.setOnClickListener(this);
    highestDayIcon = (TextView) view.findViewById(R.id.highest_day_icon);
    highestDayIcon.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    highestDayText = (TextView) view.findViewById(R.id.highest_day_text);
    highestDayText.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    highestDayExpenseTV = (TextView) view.findViewById(R.id.highest_day_expense);
    highestDayExpenseTV.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    highestDayRecord = (TextView) view.findViewById(R.id.highest_day_sum);
    highestDayRecord.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    highestDays = (ExpandedListView) view.findViewById(R.id.highest_days);
    highestDaysLayout = (ExpandableRelativeLayout) view.findViewById(R.id.expand_highest_day);
    highestDayMore = (LinearLayout) view.findViewById(R.id.highest_day_more);
    highestDayMore.setOnClickListener(this);
    highestDayMoreText = (TextView) view.findViewById(R.id.highest_day_more_text);
    highestDayMoreText.setTypeface(CoCoinUtil.getInstance().GetTypeface());
    highestDays.setOnItemClickListener(this);
    lowestDayLayout = (LinearLayout) view.findViewById(R.id.lowest_day_layout);
    lowestDayLayout.setVisibility(View.GONE);
    lowestDayTitle = (TextView) view.findViewById(R.id.lowest_day_title);
    lowestDayTitle.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    lowestFirstDay = (LinearLayout) view.findViewById(R.id.lowest_first_day);
    lowestFirstDay.setOnClickListener(this);
    lowestDayIcon = (TextView) view.findViewById(R.id.lowest_day_icon);
    lowestDayIcon.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    lowestDayText = (TextView) view.findViewById(R.id.lowest_day_text);
    lowestDayText.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    lowestDayExpenseTV = (TextView) view.findViewById(R.id.lowest_day_expense);
    lowestDayExpenseTV.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    lowestDayRecord = (TextView) view.findViewById(R.id.lowest_day_sum);
    lowestDayRecord.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    lowestDays = (ExpandedListView) view.findViewById(R.id.lowest_days);
    lowestDaysLayout = (ExpandableRelativeLayout) view.findViewById(R.id.expand_lowest_day);
    lowestDayMore = (LinearLayout) view.findViewById(R.id.lowest_day_more);
    lowestDayMore.setOnClickListener(this);
    lowestDayMoreText = (TextView) view.findViewById(R.id.lowest_day_more_text);
    lowestDayMoreText.setTypeface(CoCoinUtil.getInstance().GetTypeface());
    lowestDays.setOnItemClickListener(this);
    averageDayText = (TextView) view.findViewById(R.id.average_day_text);
    averageDayText.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    averageDayExpenseTV = (TextView) view.findViewById(R.id.average_day_expense);
    averageDayExpenseTV.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    averageDayRecordTV = (TextView) view.findViewById(R.id.average_day_sum);
    averageDayRecordTV.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    foot = (TextView) view.findViewById(R.id.foot);
    foot.setTypeface(CoCoinUtil.getInstance().typefaceLatoLight);
    foot.setVisibility(View.GONE);
    if (IS_EMPTY) {
        emptyTip.setVisibility(View.GONE);
    }
    button = (FloatingActionButton) view.findViewById(R.id.button);
    button.setOnClickListener(this);
    new GetSelectListData(false).execute();
}
Also used : PieChartOnValueSelectListener(lecho.lib.hellocharts.listener.PieChartOnValueSelectListener) PointValue(lecho.lib.hellocharts.model.PointValue) Calendar(java.util.Calendar) SliceValue(lecho.lib.hellocharts.model.SliceValue) ActionClickListener(com.nispok.snackbar.listeners.ActionClickListener) Snackbar(com.nispok.snackbar.Snackbar) LineChartOnValueSelectListener(lecho.lib.hellocharts.listener.LineChartOnValueSelectListener)

Example 3 with PointValue

use of lecho.lib.hellocharts.model.PointValue in project hellocharts-android by lecho.

the class LineChartRenderer method drawSquarePath.

private void drawSquarePath(Canvas canvas, final Line line) {
    prepareLinePaint(line);
    int valueIndex = 0;
    float previousRawY = 0;
    for (PointValue pointValue : line.getValues()) {
        final float rawX = computator.computeRawX(pointValue.getX());
        final float rawY = computator.computeRawY(pointValue.getY());
        if (valueIndex == 0) {
            path.moveTo(rawX, rawY);
        } else {
            path.lineTo(rawX, previousRawY);
            path.lineTo(rawX, rawY);
        }
        previousRawY = rawY;
        ++valueIndex;
    }
    canvas.drawPath(path, linePaint);
    if (line.isFilled()) {
        drawArea(canvas, line);
    }
    path.reset();
}
Also used : PointValue(lecho.lib.hellocharts.model.PointValue) Paint(android.graphics.Paint)

Example 4 with PointValue

use of lecho.lib.hellocharts.model.PointValue in project hellocharts-android by lecho.

the class LineChartRenderer method checkTouch.

@Override
public boolean checkTouch(float touchX, float touchY) {
    selectedValue.clear();
    final LineChartData data = dataProvider.getLineChartData();
    int lineIndex = 0;
    for (Line line : data.getLines()) {
        if (checkIfShouldDrawPoints(line)) {
            int pointRadius = ChartUtils.dp2px(density, line.getPointRadius());
            int valueIndex = 0;
            for (PointValue pointValue : line.getValues()) {
                final float rawValueX = computator.computeRawX(pointValue.getX());
                final float rawValueY = computator.computeRawY(pointValue.getY());
                if (isInArea(rawValueX, rawValueY, touchX, touchY, pointRadius + touchToleranceMargin)) {
                    selectedValue.set(lineIndex, valueIndex, SelectedValueType.LINE);
                }
                ++valueIndex;
            }
        }
        ++lineIndex;
    }
    return isTouched();
}
Also used : Line(lecho.lib.hellocharts.model.Line) PointValue(lecho.lib.hellocharts.model.PointValue) LineChartData(lecho.lib.hellocharts.model.LineChartData) Paint(android.graphics.Paint)

Example 5 with PointValue

use of lecho.lib.hellocharts.model.PointValue in project hellocharts-android by lecho.

the class LineChartView method callTouchListener.

@Override
public void callTouchListener() {
    SelectedValue selectedValue = chartRenderer.getSelectedValue();
    if (selectedValue.isSet()) {
        PointValue point = data.getLines().get(selectedValue.getFirstIndex()).getValues().get(selectedValue.getSecondIndex());
        onValueTouchListener.onValueSelected(selectedValue.getFirstIndex(), selectedValue.getSecondIndex(), point);
    } else {
        onValueTouchListener.onValueDeselected();
    }
}
Also used : PointValue(lecho.lib.hellocharts.model.PointValue) SelectedValue(lecho.lib.hellocharts.model.SelectedValue)

Aggregations

PointValue (lecho.lib.hellocharts.model.PointValue)12 Paint (android.graphics.Paint)5 Line (lecho.lib.hellocharts.model.Line)5 LineChartData (lecho.lib.hellocharts.model.LineChartData)4 ArrayList (java.util.ArrayList)3 SelectedValue (lecho.lib.hellocharts.model.SelectedValue)2 SliceValue (lecho.lib.hellocharts.model.SliceValue)2 SubcolumnValue (lecho.lib.hellocharts.model.SubcolumnValue)2 Point (android.graphics.Point)1 ViewPager (android.support.v4.view.ViewPager)1 DisplayMetrics (android.util.DisplayMetrics)1 View (android.view.View)1 ViewTreeObserver (android.view.ViewTreeObserver)1 AdapterView (android.widget.AdapterView)1 ImageView (android.widget.ImageView)1 RelativeLayout (android.widget.RelativeLayout)1 TextView (android.widget.TextView)1 DotsView (com.dev.sacot41.scviewpager.DotsView)1 SCPositionAnimation (com.dev.sacot41.scviewpager.SCPositionAnimation)1 SCViewAnimation (com.dev.sacot41.scviewpager.SCViewAnimation)1