Skip to content
MikeSu edited this page Aug 24, 2016 · 15 revisions

Current in module there are 4 example marks.

  • Today (Purple ring)
  • Selected day (Black circle)
  • Custom 1 (Red dot)
  • Custom 2 (Green rectangle)

marks1

Add / Remove Mark

java/.../common/Marks.java

enum CustomMarks define Custom 1 and Custom 2

There are specific methods for:
Today mark: markToday()
Selected mark: refreshMarkSelected()
Custom 1 / Custom 2: refreshCustomMark()

to Add or Remove custom mark call refreshCustomMark() with correct parameters
dateTime is cell date
customMarks is enum, which mark edit
mark is boolean to set mark visible or not

Edit View

XML

res/layout/mark_cell_view.xml

every view (mark) has own background drawable: 

res/drawable/mark_today.xml
res/drawable/mark_selected.xml
res/drawable/mark_custom1.xml
res/drawable/mark_custom2.xml

remember to set ID

set here margins, paddings and gravity (Frame Layout)

MarkSetup

java/.../model/MarkSetup.java

Mark's flags visibility

(Important)
line: 69 | public boolean canBeDeleted()
Add here negation mark's flag, it's triggered to remove useless Mark's Objects

DayCellView Bind

java/.../view/cell/DayCellView.java

bind here views from xml

private View markToday;
private View markSelected;
private View markCustom1;
private View markCustom2;
...
markToday = findViewById(R.id.mark_today_view);
markSelected = findViewById(R.id.mark_selected_view);
markCustom1 = findViewById(R.id.mark_custom1);
markCustom2 = findViewById(R.id.mark_custom2);

DayCellView Setup

java/.../view/cell/DayCellView.java

Visibility:
line: 117 | private void setMarkToView()

Remember to set mark visibility from MarkSetup

(Additionally)
some parameters like sizes must be set programmatically

example:

  private void setupCustom1Mark(int size) {
    LayoutParams markCustomParams = (LayoutParams) markCustom1.getLayoutParams();
    int markCustomPercentSize = (int) (size * Marks.MARK_CUSTOM1_SIZE_PROPORTION_TO_CELL);
    markCustomParams.height = markCustomPercentSize;
    markCustomParams.width = markCustomPercentSize;
  }

  private void setupCustom2Mark(int size) {
    LayoutParams markCustomParams = (LayoutParams) markCustom2.getLayoutParams();
    markCustomParams.height = (int) (size * Marks.MARK_CUSTOM2_HEIGHT_PROPORTION_TO_CELL);
    markCustomParams.width = (int) (size * Marks.MARK_CUSTOM2_WIDTH_PROPORTION_TO_CELL);
  }

Clone this wiki locally