Skip to content

Commit

Permalink
刷新页面
Browse files Browse the repository at this point in the history
  • Loading branch information
yannecer committed Sep 13, 2018
1 parent ede862a commit 6baa939
Show file tree
Hide file tree
Showing 6 changed files with 116 additions and 51 deletions.
22 changes: 22 additions & 0 deletions app/src/main/java/necer/ncalendardemo/activity/TestActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,11 @@
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;

import com.necer.calendar.MonthCalendar;

import java.util.ArrayList;
import java.util.List;

import necer.ncalendardemo.R;

/**
Expand All @@ -17,5 +22,22 @@ public class TestActivity extends AppCompatActivity {
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test_new);


MonthCalendar monthcalendar = findViewById(R.id.monthcalendar);


List<String> list = new ArrayList<>();
list.add("2018-9-10");
list.add("2018-9-12");
list.add("2018-9-13");
list.add("2018-10-10");
list.add("2018-10-12");
list.add("2018-10-16");


monthcalendar.setPointList(list);


}
}
1 change: 1 addition & 0 deletions app/src/main/res/layout/activity_test_new.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
android:layout_height="match_parent">

<com.necer.calendar.MonthCalendar
android:id="@+id/monthcalendar"
android:layout_width="match_parent"
android:layout_height="300dp"
app:solarTextColor="#333333">
Expand Down
101 changes: 58 additions & 43 deletions calendar/src/main/java/com/necer/calendar/BaseCalendar.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,20 +18,27 @@

import org.joda.time.LocalDate;

import java.util.ArrayList;
import java.util.List;

/**
* Created by necer on 2018/9/11.
* qq群:127278900
*/
public abstract class BaseCalendar extends ViewPager {
public abstract class BaseCalendar extends ViewPager {

protected int mCalendarSize;
protected int mCurrNum;
private BaseCalendarAdapter calendarAdapter;
private Attrs attrs;
private BaseCalendarView mCurrView;//当前显示的页面
private BaseCalendarView mLastView;//当前显示的页面的上一个页面
private BaseCalendarView mNextView;//当前显示的页面的下一个页面

protected LocalDate mSelectDate;//日历上面点击选中的日期

private List<LocalDate> mPointList;

public BaseCalendar(@NonNull Context context, @Nullable AttributeSet attributeSet) {
super(context, attributeSet);

Expand Down Expand Up @@ -75,24 +82,25 @@ public BaseCalendar(@NonNull Context context, @Nullable AttributeSet attributeSe
ta.recycle();


mPointList = new ArrayList<>();

LocalDate startDate = new LocalDate(startString == null ? "1901-01-01" : startString);
LocalDate endDate = new LocalDate(endString == null ? "2099-12-31" : endString);

mCalendarSize = getCalendarSize(startDate, endDate, attrs.firstDayOfWeek);
mCurrNum = getCurrNum(startDate, new LocalDate(), attrs.firstDayOfWeek);

calendarAdapter = getCalendarAdapter(context, attrs, mCalendarSize, mCurrNum);

setAdapter(calendarAdapter);

setBackgroundColor(attrs.backgroundColor);


OnPageChangeListener onPageChangeListener = new OnPageChangeListener() {
addOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}

}
@Override
public void onPageScrollStateChanged(int state) {}

@Override
public void onPageSelected(final int position) {
Expand All @@ -102,43 +110,60 @@ public void run() {
BaseCalendarView currectView = calendarAdapter.getBaseCalendarView(position);
BaseCalendarView lastView = calendarAdapter.getBaseCalendarView(position - 1);
BaseCalendarView nextView = calendarAdapter.getBaseCalendarView(position + 1);

reDraw(lastView, currectView, nextView);
}
});
}
});

@Override
public void onPageScrollStateChanged(int state) {

}
};

addOnPageChangeListener(onPageChangeListener);
setCurrentItem(mCurrNum);


}

private void reDraw(BaseCalendarView lastView, BaseCalendarView currectView, BaseCalendarView nextView) {
this.mCurrView = currectView;
this.mLastView = lastView;
this.mNextView = nextView;

LocalDate initialDate = currectView.getInitialDate();
//当前页面的初始值和上个页面选中的日期,相差几月或几周,再又上个页面选中的日期得出当前页面选中的日期
if (mSelectDate != null) {
int currNum = getCurrNum(mSelectDate, initialDate, attrs.firstDayOfWeek);//得出两个页面相差几个
mSelectDate = getDate(mSelectDate, currNum);
} else {
mSelectDate = initialDate;
}
currectView.setSelectDate(mSelectDate == null ? initialDate : mSelectDate);
notifyView(mSelectDate);

if (lastView != null) {
lastView.clear();
}
}

if (nextView != null) {
nextView.clear();
public void setPointList(List<String> list) {
mPointList.clear();
for (int i = 0; i < list.size(); i++) {
mPointList.add(new LocalDate(list.get(i)));
}
if (mCurrView != null) {
mCurrView.invalidate();
}
if (mLastView != null) {
mLastView.invalidate();
}
if (mNextView != null) {
mNextView.invalidate();
}
}

//刷新页面
protected void notifyView(LocalDate currectSelectDate) {
this.mSelectDate = currectSelectDate;
mCurrView.setSelectDate(currectSelectDate, mPointList);

if (mLastView != null) {
mLastView.setSelectDate(getLastSelectDate(currectSelectDate), mPointList);
}
if (mNextView != null) {
mNextView.setSelectDate(getNextSelectDate(currectSelectDate), mPointList);
}
}


Expand Down Expand Up @@ -167,29 +192,19 @@ private void reDraw(BaseCalendarView lastView, BaseCalendarView currectView, Bas
*/
protected abstract LocalDate getDate(LocalDate localDate, int count);

/* @Override
public void onRedrawCurrentView(BaseCalendarView currView, BaseCalendarView lastView, int position) {
this.mCurrView = currView;
/**
* 重绘当前页面时,获取上个月选中的日期
*
* @return
*/
protected abstract LocalDate getLastSelectDate(LocalDate currectSelectDate);

MyLog.d("当前view:::" + mCurrView);

//获取当前页面的initialDate
LocalDate initialDate = currView.getInitialDate();
//当前页面的初始值和上个页面选中的日期,相差几月或几周,再又上个页面选中的日期得出当前页面选中的日期
if (mSelectDate != null) {
int currNum = getCurrNum(mSelectDate, initialDate, attrs.firstDayOfWeek);//得出两个页面相差几个
mSelectDate = getDate(mSelectDate, currNum);
}
currView.setSelectDate(mSelectDate == null ? initialDate : mSelectDate);
//上个页面选中的先清除
if (lastView != null) {
lastView.clear();
}
}
*/
/**
* 重绘当前页面时,获取下个月选中的日期
*
* @return
*/
protected abstract LocalDate getNextSelectDate(LocalDate currectSelectDate);

protected void notifyView() {
mCurrView.setSelectDate(mSelectDate);
}
}
15 changes: 11 additions & 4 deletions calendar/src/main/java/com/necer/calendar/MonthCalendar.java
Original file line number Diff line number Diff line change
Expand Up @@ -48,12 +48,19 @@ protected LocalDate getDate(LocalDate localDate, int count) {
}

@Override
public void onClickCurrentMonth(LocalDate date) {
protected LocalDate getLastSelectDate(LocalDate currectSelectDate) {
return currectSelectDate.plusMonths(-1);
}

Toast.makeText(getContext(), date.toString(), Toast.LENGTH_SHORT).show();
@Override
protected LocalDate getNextSelectDate(LocalDate currectSelectDate) {
return currectSelectDate.plusMonths(1);
}

mSelectDate = date;
notifyView();
@Override
public void onClickCurrentMonth(LocalDate date) {
Toast.makeText(getContext(), date.toString(), Toast.LENGTH_SHORT).show();
notifyView(date);
}

@Override
Expand Down
10 changes: 10 additions & 0 deletions calendar/src/main/java/com/necer/calendar/WeekCalendar.java
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,16 @@ protected LocalDate getDate(LocalDate localDate, int count) {
return localDate.plusWeeks(count);
}

@Override
protected LocalDate getLastSelectDate(LocalDate currectSelectDate) {
return currectSelectDate.plusWeeks(-1);
}

@Override
protected LocalDate getNextSelectDate(LocalDate currectSelectDate) {
return currectSelectDate.plusWeeks(1);
}

@Override
public void onClickCurrentWeek(LocalDate date) {

Expand Down
18 changes: 14 additions & 4 deletions calendar/src/main/java/com/necer/view/BaseCalendarView.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ public abstract class BaseCalendarView extends View {
protected Paint mSorlarPaint;
protected List<Rect> mRectList;//点击用的矩形集合

private List<LocalDate> mPointList;

private LocalDate mSelectDate;//点击选中的日期

Expand Down Expand Up @@ -106,7 +107,7 @@ protected void onDraw(Canvas canvas) {
//绘制节假日
// drawHolidays(canvas, rect, date, baseline);
//绘制圆点
// drawPoint(canvas, rect, date, baseline);
drawPoint(canvas, rect, date, baseline);
}

} else {
Expand All @@ -124,6 +125,14 @@ protected void onDraw(Canvas canvas) {
}


//绘制圆点
public void drawPoint(Canvas canvas, Rect rect, LocalDate date, int baseline) {
if (mPointList != null && mPointList.contains(date)) {
mSorlarPaint.setColor(mAttrs.pointColor);
canvas.drawCircle(rect.centerX(), baseline - getMeasuredHeight() / 15, mAttrs.pointSize, mSorlarPaint);
}
}


private Paint getPaint(int paintColor, float paintSize) {
Paint paint = new Paint();
Expand Down Expand Up @@ -195,13 +204,14 @@ public boolean onSingleTapUp(MotionEvent e) {
});


public void setSelectDate(LocalDate localDate) {
public void setSelectDate(LocalDate localDate,List<LocalDate> pointList) {
this.mSelectDate = localDate;
this.mPointList = pointList;
invalidate();
}

public void clear() {
/*public void clear() {
this.mSelectDate = null;
invalidate();
}
}*/
}

0 comments on commit 6baa939

Please sign in to comment.