diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser deleted file mode 100644 index 9c96db60..00000000 Binary files a/.idea/caches/build_file_checksums.ser and /dev/null differ diff --git a/.idea/caches/gradle_models.ser b/.idea/caches/gradle_models.ser deleted file mode 100644 index 6ea9020e..00000000 Binary files a/.idea/caches/gradle_models.ser and /dev/null differ diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml deleted file mode 100644 index 6d799a05..00000000 --- a/.idea/codeStyles/Project.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/dbnavigator.xml b/.idea/dbnavigator.xml deleted file mode 100644 index 82b9de39..00000000 --- a/.idea/dbnavigator.xml +++ /dev/null @@ -1,456 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index c0f68edd..b5c78bcb 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,34 +1,39 @@ - - - - - - + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml index 33e7627a..ca9de94e 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -2,7 +2,7 @@ - + diff --git a/README.md b/README.md index 7e323a23..1c436eb0 100644 --- a/README.md +++ b/README.md @@ -1,88 +1,93 @@ -# CalenderView - -An elegant CalendarView on Android platform. -Freely draw UI with canvas, fast、efficient and low memory. -Support month view、 week view、year view、 custom week start、lunar calendar and so on. -Hot plug UI customization! -You can't think of the calendar can be so elegant! - -      - -      - -### Gradle -``` -compile 'com.haibin:calendarview:3.6.4' -``` - -``` - - com.haibin - calendarview - 3.6.4 - pom - -``` - -# How to use? - -[**English Doc**](https://github.com/huanghaibin-dev/CalendarView/blob/master/QUESTION.md) - -[**中文使用文档**](https://github.com/huanghaibin-dev/CalendarView/blob/master/QUESTION_ZH.md) - -### proguard-rules -```java --keepclasseswithmembers class * { - public (android.content.Context); -} -``` - -### or using this proguard-rules -``` java --keep class your project path.MonthView { - public (android.content.Context); -} --keep class your project path.WeekBar { - public (android.content.Context); -} --keep class your project path.WeekView { - public (android.content.Context); -} --keep class your project path.YearView { - public (android.content.Context); -} -``` - -### Effect Preview - -### func -      -### YearView and Range Style -      -### Beautiful Chinese style -      -### Meizu mobile phone calendar -      -### Colorful and Full style -      -### Progress bar style -      -### Galaxy style -      - - - -## Licenses -- Copyright (C) 2013 huanghaibin_dev - -- Licensed under the Apache License, Version 2.0 (the "License"); -- you may not use this file except in compliance with the License. -- You may obtain a copy of the License at - -- http://www.apache.org/licenses/LICENSE-2.0 - -- Unless required by applicable law or agreed to in writing, software -- distributed under the License is distributed on an "AS IS" BASIS, -- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -- See the License for the specific language governing permissions and - limitations under the License. +# CalenderView + +An elegant CalendarView on Android platform. +Freely draw UI with canvas, fast、efficient and low memory. +Support month view、 week view、year view、 custom week start、lunar calendar and so on. +Hot plug UI customization! +You can't think of the calendar can be so elegant! + +      + +      + +### gradle +``` +implementation 'com.haibin:calendarview:3.6.4' +``` + +### Androidx support since version 3.6.5 +``` +implementation 'com.haibin:calendarview:3.6.5' +``` + +``` + + com.haibin + calendarview + 3.6.4 + pom + +``` + +## How to use? + +[**English Doc**](https://github.com/huanghaibin-dev/CalendarView/blob/master/QUESTION.md) + +[**中文使用文档**](https://github.com/huanghaibin-dev/CalendarView/blob/master/QUESTION_ZH.md) + +### proguard-rules +```java +-keepclasseswithmembers class * { + public (android.content.Context); +} +``` + +### or using this proguard-rules +``` java +-keep class your project path.MonthView { + public (android.content.Context); +} +-keep class your project path.WeekBar { + public (android.content.Context); +} +-keep class your project path.WeekView { + public (android.content.Context); +} +-keep class your project path.YearView { + public (android.content.Context); +} +``` + +### Effect Preview + +### func +      +### YearView and Range Style +      +### Beautiful Chinese style +      +### Meizu mobile phone calendar +      +### Colorful and Full style +      +### Progress bar style +      +### Galaxy style +      + + + +## Licenses +- Copyright (C) 2013 huanghaibin_dev + +- Licensed under the Apache License, Version 2.0 (the "License"); +- you may not use this file except in compliance with the License. +- You may obtain a copy of the License at + +- http://www.apache.org/licenses/LICENSE-2.0 + +- Unless required by applicable law or agreed to in writing, software +- distributed under the License is distributed on an "AS IS" BASIS, +- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +- See the License for the specific language governing permissions and + limitations under the License. diff --git a/README_ZH.md b/README_ZH.md index 95f9b435..d3ab0255 100644 --- a/README_ZH.md +++ b/README_ZH.md @@ -12,8 +12,14 @@ Android上一个优雅、高度自定义、性能高效的日历控件,完美 ### Gradle ``` -compile 'com.haibin:calendarview:3.6.4 +implementation 'com.haibin:calendarview:3.6.4 ``` + +### 从3.6.5开始支持Androidx +``` +implementation 'com.haibin:calendarview:3.6.5' +``` + ``` com.haibin diff --git a/app/build.gradle b/app/build.gradle index 8b5aca4f..baa73321 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -32,6 +32,7 @@ dependencies { implementation 'com.google.android.material:material:1.0.0' //noinspection GradleDependency implementation 'com.github.bumptech.glide:glide:3.7.0' + //implementation 'com.haibin:calendarview:3.6.5' testImplementation 'junit:junit:4.12' implementation project(':calendarview') diff --git a/app/src/main/java/com/haibin/calendarviewproject/ArticleAdapter.java b/app/src/main/java/com/haibin/calendarviewproject/ArticleAdapter.java index 101cc7b8..7bb13b56 100644 --- a/app/src/main/java/com/haibin/calendarviewproject/ArticleAdapter.java +++ b/app/src/main/java/com/haibin/calendarviewproject/ArticleAdapter.java @@ -63,9 +63,9 @@ private static class ArticleViewHolder extends RecyclerView.ViewHolder { private ArticleViewHolder(View itemView) { super(itemView); - mTextTitle = (TextView) itemView.findViewById(R.id.tv_title); - mTextContent = (TextView) itemView.findViewById(R.id.tv_content); - mImageView = (ImageView) itemView.findViewById(R.id.imageView); + mTextTitle = itemView.findViewById(R.id.tv_title); + mTextContent = itemView.findViewById(R.id.tv_content); + mImageView = itemView.findViewById(R.id.imageView); } } diff --git a/app/src/main/java/com/haibin/calendarviewproject/MainActivity.java b/app/src/main/java/com/haibin/calendarviewproject/MainActivity.java index 7f796559..db47697c 100644 --- a/app/src/main/java/com/haibin/calendarviewproject/MainActivity.java +++ b/app/src/main/java/com/haibin/calendarviewproject/MainActivity.java @@ -2,7 +2,9 @@ import android.annotation.SuppressLint; import android.content.DialogInterface; + import androidx.appcompat.app.AlertDialog; + import android.text.TextUtils; import android.util.Log; import android.view.View; @@ -73,14 +75,14 @@ protected int getLayoutId() { @Override protected void initView() { setStatusBarDarkMode(); - mTextMonthDay = (TextView) findViewById(R.id.tv_month_day); - mTextYear = (TextView) findViewById(R.id.tv_year); - mTextLunar = (TextView) findViewById(R.id.tv_lunar); + mTextMonthDay = findViewById(R.id.tv_month_day); + mTextYear = findViewById(R.id.tv_year); + mTextLunar = findViewById(R.id.tv_lunar); - mRelativeTool = (RelativeLayout) findViewById(R.id.rl_tool); - mCalendarView = (CalendarView) findViewById(R.id.calendarView); + mRelativeTool = findViewById(R.id.rl_tool); + mCalendarView = findViewById(R.id.calendarView); //mCalendarView.setRange(2018, 7, 1, 2019, 4, 28); - mTextCurrentDay = (TextView) findViewById(R.id.tv_current_day); + mTextCurrentDay = findViewById(R.id.tv_current_day); mTextMonthDay.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -116,7 +118,8 @@ public void onClick(DialogInterface dialog, int which) { mCalendarLayout.expand(); break; case 1: - mCalendarLayout.shrink(); + boolean result = mCalendarLayout.shrink(); + Log.e("shrink", " -- " + result); break; case 2: mCalendarView.scrollToPre(false); @@ -126,7 +129,7 @@ public void onClick(DialogInterface dialog, int which) { break; case 4: //mCalendarView.scrollToCurrent(true); - mCalendarView.scrollToCalendar(2018,12,30); + mCalendarView.scrollToCalendar(2018, 12, 30); break; case 5: mCalendarView.setRange(2018, 7, 1, 2019, 4, 28); @@ -163,7 +166,7 @@ public void onClick(View v) { } }); - mCalendarLayout = (CalendarLayout) findViewById(R.id.calendarLayout); + mCalendarLayout = findViewById(R.id.calendarLayout); mCalendarView.setOnYearChangeListener(this); mCalendarView.setOnCalendarSelectListener(this); mCalendarView.setOnMonthChangeListener(this); diff --git a/app/src/main/java/com/haibin/calendarviewproject/TestActivity.java b/app/src/main/java/com/haibin/calendarviewproject/TestActivity.java index 73d2ab71..645d7fc6 100644 --- a/app/src/main/java/com/haibin/calendarviewproject/TestActivity.java +++ b/app/src/main/java/com/haibin/calendarviewproject/TestActivity.java @@ -3,7 +3,6 @@ import android.content.Context; import android.content.Intent; import android.view.View; -import android.widget.FrameLayout; import com.haibin.calendarview.CalendarView; import com.haibin.calendarviewproject.base.activity.BaseActivity; @@ -30,7 +29,7 @@ protected void initView() { setStatusBarDarkMode(); findViewById(R.id.iv_next).setOnClickListener(this); findViewById(R.id.iv_pre).setOnClickListener(this); - mCalendarView = (CalendarView) findViewById(R.id.calendar_view); + mCalendarView = findViewById(R.id.calendar_view); } @Override diff --git a/app/src/main/java/com/haibin/calendarviewproject/base/activity/BaseActivity.java b/app/src/main/java/com/haibin/calendarviewproject/base/activity/BaseActivity.java index 3753aba7..931d7875 100644 --- a/app/src/main/java/com/haibin/calendarviewproject/base/activity/BaseActivity.java +++ b/app/src/main/java/com/haibin/calendarviewproject/base/activity/BaseActivity.java @@ -84,6 +84,7 @@ private void setMIUIStatusBarDarkMode() { * @param dark 是否把状态栏字体及图标颜色设置为深色 * @return boolean 成功执行返回true */ + @SuppressWarnings("JavaReflectionMemberAccess") public static boolean setMeiZuDarkMode(Window window, boolean dark) { boolean result = false; if (Build.VERSION.SDK_INT >= 24) { diff --git a/app/src/main/java/com/haibin/calendarviewproject/base/adapter/BaseRecyclerAdapter.java b/app/src/main/java/com/haibin/calendarviewproject/base/adapter/BaseRecyclerAdapter.java index 0a310740..13d91e98 100644 --- a/app/src/main/java/com/haibin/calendarviewproject/base/adapter/BaseRecyclerAdapter.java +++ b/app/src/main/java/com/haibin/calendarviewproject/base/adapter/BaseRecyclerAdapter.java @@ -16,6 +16,8 @@ package com.haibin.calendarviewproject.base.adapter; import android.content.Context; + +import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; @@ -48,18 +50,17 @@ public void onClick(int position, long itemId) { } + @NonNull @Override - public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { final RecyclerView.ViewHolder holder = onCreateDefaultViewHolder(parent, viewType); - if (holder != null) { - holder.itemView.setTag(holder); - holder.itemView.setOnClickListener(onClickListener); - } + holder.itemView.setTag(holder); + holder.itemView.setOnClickListener(onClickListener); return holder; } @Override - public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { + public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { onBindViewHolder(holder, mItems.get(position), position); } diff --git a/app/src/main/java/com/haibin/calendarviewproject/base/fragment/BaseFragment.java b/app/src/main/java/com/haibin/calendarviewproject/base/fragment/BaseFragment.java index d10175d1..47fff120 100644 --- a/app/src/main/java/com/haibin/calendarviewproject/base/fragment/BaseFragment.java +++ b/app/src/main/java/com/haibin/calendarviewproject/base/fragment/BaseFragment.java @@ -2,6 +2,8 @@ import android.content.Context; import android.os.Bundle; + +import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; import android.view.LayoutInflater; @@ -22,7 +24,7 @@ public void onAttach(Context context) { @Nullable @Override - public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { if (mRootView != null) { ViewGroup parent = (ViewGroup) mRootView.getParent(); if (parent != null) diff --git a/app/src/main/java/com/haibin/calendarviewproject/base/fragment/FragmentAdapter.java b/app/src/main/java/com/haibin/calendarviewproject/base/fragment/FragmentAdapter.java index 35279aa7..55a59fc0 100644 --- a/app/src/main/java/com/haibin/calendarviewproject/base/fragment/FragmentAdapter.java +++ b/app/src/main/java/com/haibin/calendarviewproject/base/fragment/FragmentAdapter.java @@ -1,5 +1,6 @@ package com.haibin.calendarviewproject.base.fragment; +import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentPagerAdapter; @@ -9,7 +10,7 @@ import java.util.ArrayList; import java.util.List; - +@SuppressWarnings("unused") public class FragmentAdapter extends FragmentPagerAdapter { private List mFragment = new ArrayList<>(); private final FragmentManager mFragmentManager; @@ -31,12 +32,14 @@ public void setUpdateFlag(boolean mUpdateFlag) { } @Override - public int getItemPosition(Object object) { + public int getItemPosition(@NonNull Object object) { return POSITION_NONE; } + + @NonNull @Override - public Object instantiateItem(ViewGroup container, int position) { + public Object instantiateItem(@NonNull ViewGroup container, int position) { if (mUpdateFlag) { Fragment fragment = (Fragment) super.instantiateItem(container, position); String tag = fragment.getTag(); @@ -53,13 +56,13 @@ public Object instantiateItem(ViewGroup container, int position) { return super.instantiateItem(container, position); } - public void reset(List fragments) { + public void reset(List fragments) { mFragment.clear(); mFragment.addAll(fragments); } @Override - public void setPrimaryItem(ViewGroup container, int position, Object object) { + public void setPrimaryItem(@NonNull ViewGroup container, int position, @NonNull Object object) { super.setPrimaryItem(container, position, object); if (object instanceof Fragment) { mCurFragment = (Fragment) object; diff --git a/app/src/main/java/com/haibin/calendarviewproject/colorful/ColorfulActivity.java b/app/src/main/java/com/haibin/calendarviewproject/colorful/ColorfulActivity.java index f65de1dc..5ce09b39 100644 --- a/app/src/main/java/com/haibin/calendarviewproject/colorful/ColorfulActivity.java +++ b/app/src/main/java/com/haibin/calendarviewproject/colorful/ColorfulActivity.java @@ -58,12 +58,12 @@ protected int getLayoutId() { @Override protected void initView() { setStatusBarDarkMode(); - mTextMonthDay = (TextView) findViewById(R.id.tv_month_day); - mTextYear = (TextView) findViewById(R.id.tv_year); - mTextLunar = (TextView) findViewById(R.id.tv_lunar); - mRelativeTool = (RelativeLayout) findViewById(R.id.rl_tool); - mCalendarView = (CalendarView) findViewById(R.id.calendarView); - mTextCurrentDay = (TextView) findViewById(R.id.tv_current_day); + mTextMonthDay = findViewById(R.id.tv_month_day); + mTextYear = findViewById(R.id.tv_year); + mTextLunar = findViewById(R.id.tv_lunar); + mRelativeTool = findViewById(R.id.rl_tool); + mCalendarView = findViewById(R.id.calendarView); + mTextCurrentDay = findViewById(R.id.tv_current_day); mTextMonthDay.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -83,7 +83,7 @@ public void onClick(View v) { mCalendarView.scrollToCurrent(); } }); - mCalendarLayout = (CalendarLayout) findViewById(R.id.calendarLayout); + mCalendarLayout = findViewById(R.id.calendarLayout); mCalendarView.setOnCalendarSelectListener(this); mCalendarView.setOnYearChangeListener(this); mTextYear.setText(String.valueOf(mCalendarView.getCurYear())); @@ -122,7 +122,7 @@ protected void initData() { mCalendarView.setSchemeDate(map); - mRecyclerView = (GroupRecyclerView) findViewById(R.id.recyclerView); + mRecyclerView = findViewById(R.id.recyclerView); mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); mRecyclerView.addItemDecoration(new GroupItemDecoration()); mRecyclerView.setAdapter(new ArticleAdapter(this)); diff --git a/app/src/main/java/com/haibin/calendarviewproject/colorful/ColorfulMonthView.java b/app/src/main/java/com/haibin/calendarviewproject/colorful/ColorfulMonthView.java index 59c00d94..e8b96e57 100644 --- a/app/src/main/java/com/haibin/calendarviewproject/colorful/ColorfulMonthView.java +++ b/app/src/main/java/com/haibin/calendarviewproject/colorful/ColorfulMonthView.java @@ -59,6 +59,7 @@ protected void onDrawScheme(Canvas canvas, Calendar calendar, int x, int y) { canvas.drawCircle(cx, cy, mRadius, mSchemePaint); } + @SuppressWarnings("IntegerDivisionInFloatingPointContext") @Override protected void onDrawText(Canvas canvas, Calendar calendar, int x, int y, boolean hasScheme, boolean isSelected) { int cx = x + mItemWidth / 2; diff --git a/app/src/main/java/com/haibin/calendarviewproject/colorful/ColorfulWeekView.java b/app/src/main/java/com/haibin/calendarviewproject/colorful/ColorfulWeekView.java index 37c4fff7..c8b529de 100644 --- a/app/src/main/java/com/haibin/calendarviewproject/colorful/ColorfulWeekView.java +++ b/app/src/main/java/com/haibin/calendarviewproject/colorful/ColorfulWeekView.java @@ -58,6 +58,7 @@ protected void onDrawScheme(Canvas canvas, Calendar calendar, int x) { canvas.drawCircle(cx, cy, mRadius, mSchemePaint); } + @SuppressWarnings("IntegerDivisionInFloatingPointContext") @Override protected void onDrawText(Canvas canvas, Calendar calendar, int x, boolean hasScheme, boolean isSelected) { int cx = x + mItemWidth / 2; diff --git a/app/src/main/java/com/haibin/calendarviewproject/custom/CustomActivity.java b/app/src/main/java/com/haibin/calendarviewproject/custom/CustomActivity.java index 64fbb474..30611cda 100644 --- a/app/src/main/java/com/haibin/calendarviewproject/custom/CustomActivity.java +++ b/app/src/main/java/com/haibin/calendarviewproject/custom/CustomActivity.java @@ -59,12 +59,12 @@ protected int getLayoutId() { @Override protected void initView() { setStatusBarDarkMode(); - mTextMonthDay = (TextView) findViewById(R.id.tv_month_day); - mTextYear = (TextView) findViewById(R.id.tv_year); - mTextLunar = (TextView) findViewById(R.id.tv_lunar); - mRelativeTool = (RelativeLayout) findViewById(R.id.rl_tool); - mCalendarView = (CalendarView) findViewById(R.id.calendarView); - mTextCurrentDay = (TextView) findViewById(R.id.tv_current_day); + mTextMonthDay = findViewById(R.id.tv_month_day); + mTextYear = findViewById(R.id.tv_year); + mTextLunar = findViewById(R.id.tv_lunar); + mRelativeTool = findViewById(R.id.rl_tool); + mCalendarView = findViewById(R.id.calendarView); + mTextCurrentDay = findViewById(R.id.tv_current_day); mTextMonthDay.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -97,7 +97,7 @@ public void onClick(View v) { // mCalendarView.addSchemeDate(map); } }); - mCalendarLayout = (CalendarLayout) findViewById(R.id.calendarLayout); + mCalendarLayout = findViewById(R.id.calendarLayout); mCalendarView.setOnCalendarSelectListener(this); mCalendarView.setOnYearChangeListener(this); mTextYear.setText(String.valueOf(mCalendarView.getCurYear())); @@ -135,7 +135,7 @@ protected void initData() { mCalendarView.setSchemeDate(map); - mRecyclerView = (GroupRecyclerView) findViewById(R.id.recyclerView); + mRecyclerView = findViewById(R.id.recyclerView); mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); mRecyclerView.addItemDecoration(new GroupItemDecoration()); mRecyclerView.setAdapter(new ArticleAdapter(this)); diff --git a/app/src/main/java/com/haibin/calendarviewproject/custom/CustomMonthView.java b/app/src/main/java/com/haibin/calendarviewproject/custom/CustomMonthView.java index d7dcd929..3653a3e3 100644 --- a/app/src/main/java/com/haibin/calendarviewproject/custom/CustomMonthView.java +++ b/app/src/main/java/com/haibin/calendarviewproject/custom/CustomMonthView.java @@ -119,6 +119,7 @@ protected boolean onDrawSelected(Canvas canvas, Calendar calendar, int x, int y, return true; } + @SuppressWarnings("IntegerDivisionInFloatingPointContext") @Override protected void onDrawScheme(Canvas canvas, Calendar calendar, int x, int y) { @@ -132,6 +133,7 @@ protected void onDrawScheme(Canvas canvas, Calendar calendar, int x, int y) { canvas.drawCircle(x + mItemWidth / 2, y + mItemHeight - 3 * mPadding, mPointRadius, mPointPaint); } + @SuppressWarnings("IntegerDivisionInFloatingPointContext") @Override protected void onDrawText(Canvas canvas, Calendar calendar, int x, int y, boolean hasScheme, boolean isSelected) { int cx = x + mItemWidth / 2; diff --git a/app/src/main/java/com/haibin/calendarviewproject/custom/CustomWeekView.java b/app/src/main/java/com/haibin/calendarviewproject/custom/CustomWeekView.java index 6c420084..1505fa69 100644 --- a/app/src/main/java/com/haibin/calendarviewproject/custom/CustomWeekView.java +++ b/app/src/main/java/com/haibin/calendarviewproject/custom/CustomWeekView.java @@ -121,6 +121,7 @@ protected boolean onDrawSelected(Canvas canvas, Calendar calendar, int x, boolea return true; } + @SuppressWarnings("IntegerDivisionInFloatingPointContext") @Override protected void onDrawScheme(Canvas canvas, Calendar calendar, int x) { @@ -134,6 +135,7 @@ protected void onDrawScheme(Canvas canvas, Calendar calendar, int x) { canvas.drawCircle(x + mItemWidth / 2, mItemHeight - 3 * mPadding, mPointRadius, mPointPaint); } + @SuppressWarnings("IntegerDivisionInFloatingPointContext") @Override protected void onDrawText(Canvas canvas, Calendar calendar, int x, boolean hasScheme, boolean isSelected) { int cx = x + mItemWidth / 2; diff --git a/app/src/main/java/com/haibin/calendarviewproject/custom/CustomYearView.java b/app/src/main/java/com/haibin/calendarviewproject/custom/CustomYearView.java index d0efe935..8c05b2b6 100644 --- a/app/src/main/java/com/haibin/calendarviewproject/custom/CustomYearView.java +++ b/app/src/main/java/com/haibin/calendarviewproject/custom/CustomYearView.java @@ -46,6 +46,7 @@ public CustomYearView(Context context) { } + @SuppressWarnings("IntegerDivisionInFloatingPointContext") @Override protected void onDrawMonth(Canvas canvas, int year, int month, int x, int y, int width, int height) { @@ -81,6 +82,7 @@ private static boolean isLeapYear(int year) { } + @SuppressWarnings("IntegerDivisionInFloatingPointContext") @Override protected void onDrawWeek(Canvas canvas, int week, int x, int y, int width, int height) { String text = getContext().getResources().getStringArray(com.haibin.calendarview.R.array.year_view_week_string_array)[week]; diff --git a/app/src/main/java/com/haibin/calendarviewproject/full/FullActivity.java b/app/src/main/java/com/haibin/calendarviewproject/full/FullActivity.java index 57d2712b..7702da62 100644 --- a/app/src/main/java/com/haibin/calendarviewproject/full/FullActivity.java +++ b/app/src/main/java/com/haibin/calendarviewproject/full/FullActivity.java @@ -56,11 +56,11 @@ protected int getLayoutId() { protected void initView() { setStatusBarDarkMode(); - mTextMonthDay = (TextView) findViewById(R.id.tv_month_day); - mTextYear = (TextView) findViewById(R.id.tv_year); - mTextLunar = (TextView) findViewById(R.id.tv_lunar); - mTextCurrentDay = (TextView) findViewById(R.id.tv_current_day); - mCalendarView = (CalendarView) findViewById(R.id.calendarView); + mTextMonthDay = findViewById(R.id.tv_month_day); + mTextYear = findViewById(R.id.tv_year); + mTextLunar = findViewById(R.id.tv_lunar); + mTextCurrentDay = findViewById(R.id.tv_current_day); + mCalendarView = findViewById(R.id.calendarView); mTextMonthDay.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { diff --git a/app/src/main/java/com/haibin/calendarviewproject/full/FullMonthView.java b/app/src/main/java/com/haibin/calendarviewproject/full/FullMonthView.java index 271582cc..e429bcee 100644 --- a/app/src/main/java/com/haibin/calendarviewproject/full/FullMonthView.java +++ b/app/src/main/java/com/haibin/calendarviewproject/full/FullMonthView.java @@ -4,7 +4,6 @@ import android.graphics.BlurMaskFilter; import android.graphics.Canvas; import android.graphics.Paint; -import android.util.Log; import android.view.View; import com.haibin.calendarview.Calendar; @@ -68,6 +67,7 @@ protected boolean onDrawSelected(Canvas canvas, Calendar calendar, int x, int y, * @param x 日历Card x起点坐标 * @param y 日历Card y起点坐标 */ + @SuppressWarnings("IntegerDivisionInFloatingPointContext") @Override protected void onDrawScheme(Canvas canvas, Calendar calendar, int x, int y) { mSchemeBasicPaint.setColor(calendar.getSchemeColor()); @@ -100,6 +100,7 @@ protected void onDrawScheme(Canvas canvas, Calendar calendar, int x, int y) { * @param hasScheme 是否是标记的日期 * @param isSelected 是否选中 */ + @SuppressWarnings("IntegerDivisionInFloatingPointContext") @Override protected void onDrawText(Canvas canvas, Calendar calendar, int x, int y, boolean hasScheme, boolean isSelected) { canvas.drawRect(x, y, x + mItemWidth, y + mItemHeight, mRectPaint); diff --git a/app/src/main/java/com/haibin/calendarviewproject/full/FullWeekView.java b/app/src/main/java/com/haibin/calendarviewproject/full/FullWeekView.java index 69dd26b0..a062db7b 100644 --- a/app/src/main/java/com/haibin/calendarviewproject/full/FullWeekView.java +++ b/app/src/main/java/com/haibin/calendarviewproject/full/FullWeekView.java @@ -54,6 +54,7 @@ protected boolean onDrawSelected(Canvas canvas, Calendar calendar, int x, boolea return true; } + @SuppressWarnings("IntegerDivisionInFloatingPointContext") @Override protected void onDrawScheme(Canvas canvas, Calendar calendar, int x) { mSchemeBasicPaint.setColor(calendar.getSchemeColor()); @@ -76,7 +77,7 @@ protected void onDrawScheme(Canvas canvas, Calendar calendar, int x) { } } - + @SuppressWarnings("IntegerDivisionInFloatingPointContext") @Override protected void onDrawText(Canvas canvas, Calendar calendar, int x, boolean hasScheme, boolean isSelected) { canvas.drawRect(x, 0, x + mItemWidth, mItemHeight, mRectPaint); diff --git a/app/src/main/java/com/haibin/calendarviewproject/index/IndexActivity.java b/app/src/main/java/com/haibin/calendarviewproject/index/IndexActivity.java index a1f5d9a7..87cc05b4 100644 --- a/app/src/main/java/com/haibin/calendarviewproject/index/IndexActivity.java +++ b/app/src/main/java/com/haibin/calendarviewproject/index/IndexActivity.java @@ -59,12 +59,12 @@ protected int getLayoutId() { @Override protected void initView() { setStatusBarDarkMode(); - mTextMonthDay = (TextView) findViewById(R.id.tv_month_day); - mTextYear = (TextView) findViewById(R.id.tv_year); - mTextLunar = (TextView) findViewById(R.id.tv_lunar); - mRelativeTool = (RelativeLayout) findViewById(R.id.rl_tool); - mCalendarView = (CalendarView) findViewById(R.id.calendarView); - mTextCurrentDay = (TextView) findViewById(R.id.tv_current_day); + mTextMonthDay = findViewById(R.id.tv_month_day); + mTextYear = findViewById(R.id.tv_year); + mTextLunar = findViewById(R.id.tv_lunar); + mRelativeTool = findViewById(R.id.rl_tool); + mCalendarView = findViewById(R.id.calendarView); + mTextCurrentDay = findViewById(R.id.tv_current_day); mTextMonthDay.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -84,7 +84,7 @@ public void onClick(View v) { mCalendarView.scrollToCurrent(); } }); - mCalendarLayout = (CalendarLayout) findViewById(R.id.calendarLayout); + mCalendarLayout = findViewById(R.id.calendarLayout); mCalendarView.setOnCalendarSelectListener(this); mCalendarView.setOnYearChangeListener(this); mCalendarView.setOnCalendarLongClickListener(this,false); @@ -125,7 +125,7 @@ protected void initData() { - mRecyclerView = (GroupRecyclerView) findViewById(R.id.recyclerView); + mRecyclerView = findViewById(R.id.recyclerView); mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); mRecyclerView.addItemDecoration(new GroupItemDecoration()); mRecyclerView.setAdapter(new ArticleAdapter(this)); diff --git a/app/src/main/java/com/haibin/calendarviewproject/index/IndexMonthView.java b/app/src/main/java/com/haibin/calendarviewproject/index/IndexMonthView.java index bc3cabd8..d46b2bfc 100644 --- a/app/src/main/java/com/haibin/calendarviewproject/index/IndexMonthView.java +++ b/app/src/main/java/com/haibin/calendarviewproject/index/IndexMonthView.java @@ -45,6 +45,7 @@ protected boolean onDrawSelected(Canvas canvas, Calendar calendar, int x, int y, * @param x 日历Card x起点坐标 * @param y 日历Card y起点坐标 */ + @SuppressWarnings("IntegerDivisionInFloatingPointContext") @Override protected void onDrawScheme(Canvas canvas, Calendar calendar, int x, int y) { mSchemeBasicPaint.setColor(calendar.getSchemeColor()); @@ -54,6 +55,7 @@ protected void onDrawScheme(Canvas canvas, Calendar calendar, int x, int y) { y + mItemHeight - mH - mPadding, mSchemeBasicPaint); } + @SuppressWarnings("IntegerDivisionInFloatingPointContext") @Override protected void onDrawText(Canvas canvas, Calendar calendar, int x, int y, boolean hasScheme, boolean isSelected) { int cx = x + mItemWidth / 2; diff --git a/app/src/main/java/com/haibin/calendarviewproject/index/IndexWeekView.java b/app/src/main/java/com/haibin/calendarviewproject/index/IndexWeekView.java index ce8f5f8f..c8f8258f 100644 --- a/app/src/main/java/com/haibin/calendarviewproject/index/IndexWeekView.java +++ b/app/src/main/java/com/haibin/calendarviewproject/index/IndexWeekView.java @@ -42,7 +42,6 @@ protected void onPreviewHook() { * @param calendar 日历日历calendar * @param x 日历Card x起点坐标 * @param hasScheme hasScheme 非标记的日期 - * @return */ @Override protected boolean onDrawSelected(Canvas canvas, Calendar calendar, int x, boolean hasScheme) { @@ -58,6 +57,7 @@ protected boolean onDrawSelected(Canvas canvas, Calendar calendar, int x, boolea * @param calendar 日历calendar * @param x 日历Card x起点坐标 */ + @SuppressWarnings("IntegerDivisionInFloatingPointContext") @Override protected void onDrawScheme(Canvas canvas, Calendar calendar, int x) { mSchemeBasicPaint.setColor(calendar.getSchemeColor()); @@ -67,6 +67,7 @@ protected void onDrawScheme(Canvas canvas, Calendar calendar, int x) { mItemHeight - mH - mPadding, mSchemeBasicPaint); } + @SuppressWarnings("IntegerDivisionInFloatingPointContext") @Override protected void onDrawText(Canvas canvas, Calendar calendar, int x, boolean hasScheme, boolean isSelected) { int cx = x + mItemWidth / 2; diff --git a/app/src/main/java/com/haibin/calendarviewproject/meizu/MeiZuActivity.java b/app/src/main/java/com/haibin/calendarviewproject/meizu/MeiZuActivity.java index b806c166..f88f0120 100644 --- a/app/src/main/java/com/haibin/calendarviewproject/meizu/MeiZuActivity.java +++ b/app/src/main/java/com/haibin/calendarviewproject/meizu/MeiZuActivity.java @@ -56,12 +56,12 @@ protected int getLayoutId() { @Override protected void initView() { setStatusBarDarkMode(); - mTextMonthDay = (TextView) findViewById(R.id.tv_month_day); - mTextYear = (TextView) findViewById(R.id.tv_year); - mTextLunar = (TextView) findViewById(R.id.tv_lunar); - mRelativeTool = (RelativeLayout) findViewById(R.id.rl_tool); - mCalendarView = (CalendarView) findViewById(R.id.calendarView); - mTextCurrentDay = (TextView) findViewById(R.id.tv_current_day); + mTextMonthDay = findViewById(R.id.tv_month_day); + mTextYear = findViewById(R.id.tv_year); + mTextLunar = findViewById(R.id.tv_lunar); + mRelativeTool = findViewById(R.id.rl_tool); + mCalendarView = findViewById(R.id.calendarView); + mTextCurrentDay = findViewById(R.id.tv_current_day); mTextMonthDay.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -81,7 +81,7 @@ public void onClick(View v) { mCalendarView.scrollToCurrent(); } }); - mCalendarLayout = (CalendarLayout) findViewById(R.id.calendarLayout); + mCalendarLayout = findViewById(R.id.calendarLayout); mCalendarView.setOnCalendarSelectListener(this); mCalendarView.setOnYearChangeListener(this); mTextYear.setText(String.valueOf(mCalendarView.getCurYear())); @@ -119,7 +119,7 @@ protected void initData() { mCalendarView.setSchemeDate(map); - mRecyclerView = (GroupRecyclerView) findViewById(R.id.recyclerView); + mRecyclerView = findViewById(R.id.recyclerView); mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); mRecyclerView.addItemDecoration(new GroupItemDecoration()); mRecyclerView.setAdapter(new ArticleAdapter(this)); diff --git a/app/src/main/java/com/haibin/calendarviewproject/meizu/MeiZuMonthView.java b/app/src/main/java/com/haibin/calendarviewproject/meizu/MeiZuMonthView.java index 97447791..81b79f9f 100644 --- a/app/src/main/java/com/haibin/calendarviewproject/meizu/MeiZuMonthView.java +++ b/app/src/main/java/com/haibin/calendarviewproject/meizu/MeiZuMonthView.java @@ -102,6 +102,7 @@ private float getTextWidth(String text) { * @param hasScheme 是否是标记的日期 * @param isSelected 是否选中 */ + @SuppressWarnings("IntegerDivisionInFloatingPointContext") @Override protected void onDrawText(Canvas canvas, Calendar calendar, int x, int y, boolean hasScheme, boolean isSelected) { int cx = x + mItemWidth / 2; diff --git a/app/src/main/java/com/haibin/calendarviewproject/meizu/MeizuWeekView.java b/app/src/main/java/com/haibin/calendarviewproject/meizu/MeizuWeekView.java index 60cc5712..1ad0b454 100644 --- a/app/src/main/java/com/haibin/calendarviewproject/meizu/MeizuWeekView.java +++ b/app/src/main/java/com/haibin/calendarviewproject/meizu/MeizuWeekView.java @@ -75,6 +75,7 @@ private float getTextWidth(String text) { return mTextPaint.measureText(text); } + @SuppressWarnings("IntegerDivisionInFloatingPointContext") @Override protected void onDrawText(Canvas canvas, Calendar calendar, int x, boolean hasScheme, boolean isSelected) { int cx = x + mItemWidth / 2; diff --git a/app/src/main/java/com/haibin/calendarviewproject/multi/MultiActivity.java b/app/src/main/java/com/haibin/calendarviewproject/multi/MultiActivity.java index 041ca27d..406a419e 100644 --- a/app/src/main/java/com/haibin/calendarviewproject/multi/MultiActivity.java +++ b/app/src/main/java/com/haibin/calendarviewproject/multi/MultiActivity.java @@ -60,12 +60,12 @@ protected int getLayoutId() { @Override protected void initView() { setStatusBarDarkMode(); - mTextMonthDay = (TextView) findViewById(R.id.tv_month_day); - mTextYear = (TextView) findViewById(R.id.tv_year); - mTextLunar = (TextView) findViewById(R.id.tv_lunar); - mRelativeTool = (RelativeLayout) findViewById(R.id.rl_tool); - mCalendarView = (CalendarView) findViewById(R.id.calendarView); - mTextCurrentDay = (TextView) findViewById(R.id.tv_current_day); + mTextMonthDay = findViewById(R.id.tv_month_day); + mTextYear = findViewById(R.id.tv_year); + mTextLunar = findViewById(R.id.tv_lunar); + mRelativeTool = findViewById(R.id.rl_tool); + mCalendarView = findViewById(R.id.calendarView); + mTextCurrentDay = findViewById(R.id.tv_current_day); mTextMonthDay.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -93,7 +93,7 @@ public void onClick(View v) { // mCalendarView.getMultiSelectCalendars(); } }); - mCalendarLayout = (CalendarLayout) findViewById(R.id.calendarLayout); + mCalendarLayout = findViewById(R.id.calendarLayout); mCalendarView.setOnCalendarMultiSelectListener(this); mCalendarView.setOnYearChangeListener(this); mCalendarView.setOnCalendarSelectListener(this); @@ -141,7 +141,7 @@ protected void initData() { mCalendarView.setSchemeDate(map); - mRecyclerView = (GroupRecyclerView) findViewById(R.id.recyclerView); + mRecyclerView = findViewById(R.id.recyclerView); mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); mRecyclerView.addItemDecoration(new GroupItemDecoration()); mRecyclerView.setAdapter(new ArticleAdapter(this)); diff --git a/app/src/main/java/com/haibin/calendarviewproject/pager/PagerFragment.java b/app/src/main/java/com/haibin/calendarviewproject/pager/PagerFragment.java index 3d91f4a8..ca0d1b0c 100644 --- a/app/src/main/java/com/haibin/calendarviewproject/pager/PagerFragment.java +++ b/app/src/main/java/com/haibin/calendarviewproject/pager/PagerFragment.java @@ -14,7 +14,7 @@ public class PagerFragment extends BaseFragment { private GroupRecyclerView mRecyclerView; - public static PagerFragment newInstance() { + static PagerFragment newInstance() { return new PagerFragment(); } @@ -25,7 +25,7 @@ protected int getLayoutId() { @Override protected void initView() { - mRecyclerView = (GroupRecyclerView) mRootView.findViewById(R.id.recyclerView); + mRecyclerView = mRootView.findViewById(R.id.recyclerView); mRecyclerView.setLayoutManager(new LinearLayoutManager(mContext)); mRecyclerView.addItemDecoration(new GroupItemDecoration()); mRecyclerView.setAdapter(new ArticleAdapter(mContext)); @@ -37,7 +37,7 @@ protected void initData() { } - public boolean isScrollTop() { + boolean isScrollTop() { return mRecyclerView != null && mRecyclerView.computeVerticalScrollOffset() == 0; } } diff --git a/app/src/main/java/com/haibin/calendarviewproject/pager/ViewPagerActivity.java b/app/src/main/java/com/haibin/calendarviewproject/pager/ViewPagerActivity.java index a34bd5e6..17063273 100644 --- a/app/src/main/java/com/haibin/calendarviewproject/pager/ViewPagerActivity.java +++ b/app/src/main/java/com/haibin/calendarviewproject/pager/ViewPagerActivity.java @@ -58,12 +58,12 @@ protected int getLayoutId() { @Override protected void initView() { setStatusBarDarkMode(); - mTextMonthDay = (TextView) findViewById(R.id.tv_month_day); - mTextYear = (TextView) findViewById(R.id.tv_year); - mTextLunar = (TextView) findViewById(R.id.tv_lunar); - mRelativeTool = (RelativeLayout) findViewById(R.id.rl_tool); - mCalendarView = (CalendarView) findViewById(R.id.calendarView); - mTextCurrentDay = (TextView) findViewById(R.id.tv_current_day); + mTextMonthDay = findViewById(R.id.tv_month_day); + mTextYear = findViewById(R.id.tv_year); + mTextLunar = findViewById(R.id.tv_lunar); + mRelativeTool = findViewById(R.id.rl_tool); + mCalendarView = findViewById(R.id.calendarView); + mTextCurrentDay = findViewById(R.id.tv_current_day); mTextMonthDay.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -83,7 +83,7 @@ public void onClick(View v) { mCalendarView.scrollToCurrent(); } }); - mCalendarLayout = (CalendarLayout) findViewById(R.id.calendarLayout); + mCalendarLayout = findViewById(R.id.calendarLayout); mCalendarView.setOnCalendarSelectListener(this); mCalendarView.setOnYearChangeListener(this); mTextYear.setText(String.valueOf(mCalendarView.getCurYear())); @@ -92,8 +92,8 @@ public void onClick(View v) { mTextLunar.setText("今日"); mTextCurrentDay.setText(String.valueOf(mCalendarView.getCurDay())); - ViewPager viewPager = (ViewPager) findViewById(R.id.viewPager); - TabLayout tabLayout = (TabLayout) findViewById(R.id.tabLayout); + ViewPager viewPager = findViewById(R.id.viewPager); + TabLayout tabLayout = findViewById(R.id.tabLayout); FragmentAdapter adapter = new FragmentAdapter(getSupportFragmentManager()); adapter.reset(new String[]{"热门", "头条", "时尚"}); List fragments = new ArrayList<>(); diff --git a/app/src/main/java/com/haibin/calendarviewproject/progress/ProgressActivity.java b/app/src/main/java/com/haibin/calendarviewproject/progress/ProgressActivity.java index 05f226e4..bfcb7da1 100644 --- a/app/src/main/java/com/haibin/calendarviewproject/progress/ProgressActivity.java +++ b/app/src/main/java/com/haibin/calendarviewproject/progress/ProgressActivity.java @@ -58,12 +58,12 @@ protected int getLayoutId() { @Override protected void initView() { setStatusBarDarkMode(); - mTextMonthDay = (TextView) findViewById(R.id.tv_month_day); - mTextYear = (TextView) findViewById(R.id.tv_year); - mTextLunar = (TextView) findViewById(R.id.tv_lunar); - mRelativeTool = (RelativeLayout) findViewById(R.id.rl_tool); - mCalendarView = (CalendarView) findViewById(R.id.calendarView); - mTextCurrentDay = (TextView) findViewById(R.id.tv_current_day); + mTextMonthDay = findViewById(R.id.tv_month_day); + mTextYear = findViewById(R.id.tv_year); + mTextLunar = findViewById(R.id.tv_lunar); + mRelativeTool = findViewById(R.id.rl_tool); + mCalendarView = findViewById(R.id.calendarView); + mTextCurrentDay = findViewById(R.id.tv_current_day); mTextMonthDay.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -83,7 +83,7 @@ public void onClick(View v) { mCalendarView.scrollToCurrent(); } }); - mCalendarLayout = (CalendarLayout) findViewById(R.id.calendarLayout); + mCalendarLayout = findViewById(R.id.calendarLayout); mCalendarView.setOnCalendarSelectListener(this); mCalendarView.setOnYearChangeListener(this); mTextYear.setText(String.valueOf(mCalendarView.getCurYear())); @@ -123,7 +123,7 @@ protected void initData() { - mRecyclerView = (GroupRecyclerView) findViewById(R.id.recyclerView); + mRecyclerView = findViewById(R.id.recyclerView); mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); mRecyclerView.addItemDecoration(new GroupItemDecoration()); mRecyclerView.setAdapter(new ArticleAdapter(this)); diff --git a/app/src/main/java/com/haibin/calendarviewproject/range/RangeActivity.java b/app/src/main/java/com/haibin/calendarviewproject/range/RangeActivity.java index e4339524..dfbe4a96 100644 --- a/app/src/main/java/com/haibin/calendarviewproject/range/RangeActivity.java +++ b/app/src/main/java/com/haibin/calendarviewproject/range/RangeActivity.java @@ -50,15 +50,15 @@ protected int getLayoutId() { @Override protected void initView() { setStatusBarDarkMode(); - mTextLeftDate = (TextView) findViewById(R.id.tv_left_date); - mTextLeftWeek = (TextView) findViewById(R.id.tv_left_week); - mTextRightDate = (TextView) findViewById(R.id.tv_right_date); - mTextRightWeek = (TextView) findViewById(R.id.tv_right_week); + mTextLeftDate = findViewById(R.id.tv_left_date); + mTextLeftWeek = findViewById(R.id.tv_left_week); + mTextRightDate = findViewById(R.id.tv_right_date); + mTextRightWeek = findViewById(R.id.tv_right_week); - mTextMinRange = (TextView) findViewById(R.id.tv_min_range); - mTextMaxRange = (TextView) findViewById(R.id.tv_max_range); + mTextMinRange = findViewById(R.id.tv_min_range); + mTextMaxRange = findViewById(R.id.tv_max_range); - mCalendarView = (CalendarView) findViewById(R.id.calendarView); + mCalendarView = findViewById(R.id.calendarView); mCalendarView.setOnCalendarRangeSelectListener(this); mCalendarView.setOnMonthChangeListener(this); //设置日期拦截事件,当前有效 diff --git a/app/src/main/java/com/haibin/calendarviewproject/simple/SimpleActivity.java b/app/src/main/java/com/haibin/calendarviewproject/simple/SimpleActivity.java index 8f703703..02cba008 100644 --- a/app/src/main/java/com/haibin/calendarviewproject/simple/SimpleActivity.java +++ b/app/src/main/java/com/haibin/calendarviewproject/simple/SimpleActivity.java @@ -59,12 +59,12 @@ protected int getLayoutId() { @Override protected void initView() { setStatusBarDarkMode(); - mTextMonthDay = (TextView) findViewById(R.id.tv_month_day); - mTextYear = (TextView) findViewById(R.id.tv_year); - mTextLunar = (TextView) findViewById(R.id.tv_lunar); - mRelativeTool = (RelativeLayout) findViewById(R.id.rl_tool); - mCalendarView = (CalendarView) findViewById(R.id.calendarView); - mTextCurrentDay = (TextView) findViewById(R.id.tv_current_day); + mTextMonthDay = findViewById(R.id.tv_month_day); + mTextYear = findViewById(R.id.tv_year); + mTextLunar = findViewById(R.id.tv_lunar); + mRelativeTool = findViewById(R.id.rl_tool); + mCalendarView = findViewById(R.id.calendarView); + mTextCurrentDay = findViewById(R.id.tv_current_day); mTextMonthDay.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -85,7 +85,7 @@ public void onClick(View v) { } }); - mCalendarLayout = (CalendarLayout) findViewById(R.id.calendarLayout); + mCalendarLayout = findViewById(R.id.calendarLayout); mCalendarView.setOnYearChangeListener(this); mCalendarView.setOnCalendarSelectListener(this); mTextYear.setText(String.valueOf(mCalendarView.getCurYear())); @@ -93,7 +93,7 @@ public void onClick(View v) { mTextMonthDay.setText(mCalendarView.getCurMonth() + "月" + mCalendarView.getCurDay() + "日"); mTextLunar.setText("今日"); mTextCurrentDay.setText(String.valueOf(mCalendarView.getCurDay())); - mRecyclerView = (GroupRecyclerView) findViewById(R.id.recyclerView); + mRecyclerView = findViewById(R.id.recyclerView); mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); mRecyclerView.addItemDecoration(new GroupItemDecoration()); mRecyclerView.setAdapter(new ArticleAdapter(this)); @@ -149,7 +149,6 @@ public void onClick(View v) { } } - @SuppressWarnings("all") private Calendar getSchemeCalendar(int year, int month, int day, int color, String text) { Calendar calendar = new Calendar(); calendar.setYear(year); diff --git a/app/src/main/java/com/haibin/calendarviewproject/single/SingleActivity.java b/app/src/main/java/com/haibin/calendarviewproject/single/SingleActivity.java index 1fe95f2a..91ea93e4 100644 --- a/app/src/main/java/com/haibin/calendarviewproject/single/SingleActivity.java +++ b/app/src/main/java/com/haibin/calendarviewproject/single/SingleActivity.java @@ -62,12 +62,12 @@ protected int getLayoutId() { @Override protected void initView() { setStatusBarDarkMode(); - mTextMonthDay = (TextView) findViewById(R.id.tv_month_day); - mTextYear = (TextView) findViewById(R.id.tv_year); - mTextLunar = (TextView) findViewById(R.id.tv_lunar); - mRelativeTool = (RelativeLayout) findViewById(R.id.rl_tool); - mCalendarView = (CalendarView) findViewById(R.id.calendarView); - mTextCurrentDay = (TextView) findViewById(R.id.tv_current_day); + mTextMonthDay = findViewById(R.id.tv_month_day); + mTextYear = findViewById(R.id.tv_year); + mTextLunar = findViewById(R.id.tv_lunar); + mRelativeTool = findViewById(R.id.rl_tool); + mCalendarView = findViewById(R.id.calendarView); + mTextCurrentDay = findViewById(R.id.tv_current_day); mTextMonthDay.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -95,7 +95,7 @@ public void onClick(View v) { " -- " + mCalendarView.getSelectedCalendar().hasScheme()); } }); - mCalendarLayout = (CalendarLayout) findViewById(R.id.calendarLayout); + mCalendarLayout = findViewById(R.id.calendarLayout); mCalendarView.setOnCalendarSelectListener(this); mCalendarView.setOnYearChangeListener(this); mCalendarView.setOnMonthChangeListener(this); @@ -138,7 +138,7 @@ protected void initData() { mCalendarView.setSchemeDate(map); - mRecyclerView = (GroupRecyclerView) findViewById(R.id.recyclerView); + mRecyclerView = findViewById(R.id.recyclerView); mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); mRecyclerView.addItemDecoration(new GroupItemDecoration()); mRecyclerView.setAdapter(new ArticleAdapter(this)); diff --git a/app/src/main/java/com/haibin/calendarviewproject/single/SingleMonthView.java b/app/src/main/java/com/haibin/calendarviewproject/single/SingleMonthView.java index 6c0356ce..098365df 100644 --- a/app/src/main/java/com/haibin/calendarviewproject/single/SingleMonthView.java +++ b/app/src/main/java/com/haibin/calendarviewproject/single/SingleMonthView.java @@ -129,7 +129,6 @@ protected void onDrawText(Canvas canvas, Calendar calendar, int x, int y, boolea * @param dpValue dp * @return px */ - @SuppressWarnings("all") private static int dipToPx(Context context, float dpValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (dpValue * scale + 0.5f); diff --git a/app/src/main/java/com/haibin/calendarviewproject/single/SingleWeekView.java b/app/src/main/java/com/haibin/calendarviewproject/single/SingleWeekView.java index c0dedae0..b7dcc204 100644 --- a/app/src/main/java/com/haibin/calendarviewproject/single/SingleWeekView.java +++ b/app/src/main/java/com/haibin/calendarviewproject/single/SingleWeekView.java @@ -123,7 +123,6 @@ protected void onDrawText(Canvas canvas, Calendar calendar, int x, boolean hasSc * @param dpValue dp * @return px */ - @SuppressWarnings("all") private static int dipToPx(Context context, float dpValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (dpValue * scale + 0.5f); diff --git a/app/src/main/java/com/haibin/calendarviewproject/solay/SolarActivity.java b/app/src/main/java/com/haibin/calendarviewproject/solay/SolarActivity.java index 60702ae7..3cef2783 100644 --- a/app/src/main/java/com/haibin/calendarviewproject/solay/SolarActivity.java +++ b/app/src/main/java/com/haibin/calendarviewproject/solay/SolarActivity.java @@ -62,12 +62,12 @@ protected void initView() { if (Build.VERSION.SDK_INT >= 21) { getWindow().setStatusBarColor(getResources().getColor(R.color.solar_background)); } - mTextMonthDay = (TextView) findViewById(R.id.tv_month_day); - mTextYear = (TextView) findViewById(R.id.tv_year); - mTextLunar = (TextView) findViewById(R.id.tv_lunar); - mRelativeTool = (RelativeLayout) findViewById(R.id.rl_tool); - mCalendarView = (CalendarView) findViewById(R.id.calendarView); - mTextCurrentDay = (TextView) findViewById(R.id.tv_current_day); + mTextMonthDay = findViewById(R.id.tv_month_day); + mTextYear = findViewById(R.id.tv_year); + mTextLunar = findViewById(R.id.tv_lunar); + mRelativeTool = findViewById(R.id.rl_tool); + mCalendarView = findViewById(R.id.calendarView); + mTextCurrentDay = findViewById(R.id.tv_current_day); mTextMonthDay.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -87,7 +87,7 @@ public void onClick(View v) { mCalendarView.scrollToCurrent(); } }); - mCalendarLayout = (CalendarLayout) findViewById(R.id.calendarLayout); + mCalendarLayout = findViewById(R.id.calendarLayout); mCalendarView.setOnCalendarSelectListener(this); mCalendarView.setOnYearChangeListener(this); mTextYear.setText(String.valueOf(mCalendarView.getCurYear())); @@ -125,7 +125,7 @@ protected void initData() { mCalendarView.setSchemeDate(map); - mRecyclerView = (GroupRecyclerView) findViewById(R.id.recyclerView); + mRecyclerView = findViewById(R.id.recyclerView); mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); mRecyclerView.addItemDecoration(new GroupItemDecoration()); mRecyclerView.setAdapter(new ArticleAdapter(this)); @@ -170,6 +170,7 @@ public void onCalendarOutOfRange(Calendar calendar) { } + @SuppressLint("SetTextI18n") @Override public void onCalendarSelect(Calendar calendar, boolean isClick) { mTextLunar.setVisibility(View.VISIBLE); diff --git a/build.gradle b/build.gradle index 4df4a198..03631a2c 100644 --- a/build.gradle +++ b/build.gradle @@ -8,12 +8,8 @@ buildscript { dependencies { //noinspection GradleDependency classpath 'com.android.tools.build:gradle:3.4.1' - //noinspection GradleDependency classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7' - //noinspection GradleDependency classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5' - // NOTE: Do not place your application dependencies here; they belong - // in the individual module build.gradle files } } diff --git a/calendarview/build.gradle b/calendarview/build.gradle index 8dc81bc3..17c6a27f 100644 --- a/calendarview/build.gradle +++ b/calendarview/build.gradle @@ -7,8 +7,8 @@ android { minSdkVersion 14 //noinspection OldTargetApi targetSdkVersion 28 - versionCode 364 - versionName "3.6.4" + versionCode 365 + versionName "3.6.5" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } diff --git a/calendarview/src/main/java/com/haibin/calendarview/BaseRecyclerAdapter.java b/calendarview/src/main/java/com/haibin/calendarview/BaseRecyclerAdapter.java index f934b117..eb3902b4 100644 --- a/calendarview/src/main/java/com/haibin/calendarview/BaseRecyclerAdapter.java +++ b/calendarview/src/main/java/com/haibin/calendarview/BaseRecyclerAdapter.java @@ -20,6 +20,7 @@ import android.view.View; import android.view.ViewGroup; +import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import java.util.ArrayList; @@ -51,8 +52,10 @@ public void onClick(int position, long itemId) { } + @SuppressWarnings("ConstantConditions") + @NonNull @Override - public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { final RecyclerView.ViewHolder holder = onCreateDefaultViewHolder(parent, viewType); if (holder != null) { holder.itemView.setTag(holder); @@ -62,7 +65,7 @@ public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType } @Override - public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { + public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { onBindViewHolder(holder, mItems.get(position), position); } diff --git a/calendarview/src/main/java/com/haibin/calendarview/BaseView.java b/calendarview/src/main/java/com/haibin/calendarview/BaseView.java index 4f95c11f..e570cac8 100644 --- a/calendarview/src/main/java/com/haibin/calendarview/BaseView.java +++ b/calendarview/src/main/java/com/haibin/calendarview/BaseView.java @@ -15,7 +15,7 @@ */ package com.haibin.calendarview; -import android.annotation.SuppressLint; + import android.content.Context; import android.graphics.Color; import android.graphics.Paint; @@ -266,6 +266,7 @@ final void updateStyle(){ this.mSelectedPaint.setColor(mDelegate.getSelectedThemeColor()); } + @SuppressWarnings("IntegerDivisionInFloatingPointContext") void updateItemHeight() { this.mItemHeight = mDelegate.getCalendarItemHeight(); Paint.FontMetrics metrics = mCurMonthTextPaint.getFontMetrics(); @@ -294,6 +295,9 @@ final void addSchemesFromMap() { for (Calendar a : mItems) { if (mDelegate.mSchemeDatesMap.containsKey(a.toString())) { Calendar d = mDelegate.mSchemeDatesMap.get(a.toString()); + if(d == null){ + continue; + } a.setScheme(TextUtils.isEmpty(d.getScheme()) ? mDelegate.getSchemeText() : d.getScheme()); a.setSchemeColor(d.getSchemeColor()); a.setSchemes(d.getSchemes()); @@ -306,7 +310,6 @@ final void addSchemesFromMap() { } - @SuppressLint("ClickableViewAccessibility") @Override public boolean onTouchEvent(MotionEvent event) { if (event.getPointerCount() > 1) diff --git a/calendarview/src/main/java/com/haibin/calendarview/CalendarLayout.java b/calendarview/src/main/java/com/haibin/calendarview/CalendarLayout.java index a213bd84..061ccc42 100644 --- a/calendarview/src/main/java/com/haibin/calendarview/CalendarLayout.java +++ b/calendarview/src/main/java/com/haibin/calendarview/CalendarLayout.java @@ -37,7 +37,6 @@ import android.widget.LinearLayout; import androidx.annotation.Nullable; -import androidx.core.view.MotionEventCompat; import androidx.recyclerview.widget.RecyclerView; @@ -305,16 +304,16 @@ public boolean onTouchEvent(MotionEvent event) { mVelocityTracker.addMovement(event); switch (action) { case MotionEvent.ACTION_DOWN: - int index = MotionEventCompat.getActionIndex(event); - mActivePointerId = MotionEventCompat.getPointerId(event, index); + int index = event.getActionIndex(); + mActivePointerId = event.getPointerId(index); mLastY = downY = y; return true; - case MotionEventCompat.ACTION_POINTER_DOWN: { - final int indexx = MotionEventCompat.getActionIndex(event); - mActivePointerId = MotionEventCompat.getPointerId(event, indexx); + case MotionEvent.ACTION_POINTER_DOWN: { + final int indexx = event.getActionIndex(); + mActivePointerId = event.getPointerId( indexx); if (mActivePointerId == 0) { //核心代码:就是让下面的 dy = y- mLastY == 0,避免抖动 - mLastY = MotionEventCompat.getY(event, mActivePointerId); + mLastY = event.getY( mActivePointerId); } break; } @@ -375,7 +374,7 @@ public boolean onTouchEvent(MotionEvent event) { int pointerIndex = getPointerIndex(event, mActivePointerId); if (mActivePointerId == INVALID_POINTER) break; - mLastY = MotionEventCompat.getY(event, pointerIndex); + mLastY = event.getY(pointerIndex); break; case MotionEvent.ACTION_UP: @@ -430,21 +429,19 @@ public boolean dispatchTouchEvent(MotionEvent ev) { } final int action = ev.getAction(); float y = ev.getY(); - switch (action) { - case MotionEvent.ACTION_MOVE: - float dy = y - mLastY; - /* - * 如果向下滚动,有 2 种情况处理 且y在ViewPager下方 - * 1、RecyclerView 或者其它滚动的View,当mContentView滚动到顶部时,拦截事件 - * 2、非滚动控件,直接拦截事件 - */ - if (dy > 0 && mContentView.getTranslationY() == -mContentViewTranslateY) { - if (isScrollTop()) { - requestDisallowInterceptTouchEvent(false);//父View向子View拦截分发事件 - return super.dispatchTouchEvent(ev); - } + if (action == MotionEvent.ACTION_MOVE) { + float dy = y - mLastY; + /* + * 如果向下滚动,有 2 种情况处理 且y在ViewPager下方 + * 1、RecyclerView 或者其它滚动的View,当mContentView滚动到顶部时,拦截事件 + * 2、非滚动控件,直接拦截事件 + */ + if (dy > 0 && mContentView.getTranslationY() == -mContentViewTranslateY) { + if (isScrollTop()) { + requestDisallowInterceptTouchEvent(false);//父View向子View拦截分发事件 + return super.dispatchTouchEvent(ev); } - break; + } } return super.dispatchTouchEvent(ev); } @@ -476,8 +473,8 @@ public boolean onInterceptTouchEvent(MotionEvent ev) { float y = ev.getY(); switch (action) { case MotionEvent.ACTION_DOWN: - int index = MotionEventCompat.getActionIndex(ev); - mActivePointerId = MotionEventCompat.getPointerId(ev, index); + int index = ev.getActionIndex(); + mActivePointerId = ev.getPointerId(index); mLastY = downY = y; break; case MotionEvent.ACTION_MOVE: @@ -518,7 +515,7 @@ public boolean onInterceptTouchEvent(MotionEvent ev) { private int getPointerIndex(MotionEvent ev, int id) { - int activePointerIndex = MotionEventCompat.findPointerIndex(ev, id); + int activePointerIndex = ev.findPointerIndex(id); if (activePointerIndex == -1) { mActivePointerId = INVALID_POINTER; } @@ -587,13 +584,13 @@ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { @Override protected void onFinishInflate() { super.onFinishInflate(); - mMonthView = (MonthViewPager) findViewById(R.id.vp_month); - mWeekPager = (WeekViewPager) findViewById(R.id.vp_week); + mMonthView = findViewById(R.id.vp_month); + mWeekPager = findViewById(R.id.vp_week); if (getChildCount() > 0) { mCalendarView = (CalendarView) getChildAt(0); } - mContentView = (ViewGroup) findViewById(mContentViewId); - mYearView = (YearViewPager) findViewById(R.id.selectLayout); + mContentView = findViewById(mContentViewId); + mYearView = findViewById(R.id.selectLayout); if (mContentView != null) { mContentView.setOverScrollMode(View.OVER_SCROLL_NEVER); } @@ -723,7 +720,6 @@ public void onAnimationEnd(Animator animation) { return true; } - public boolean shrink() { return shrink(240); } @@ -841,8 +837,10 @@ private void hideWeek(boolean isNotify) { */ private void showWeek() { onShowWeekView(); - mWeekPager.getAdapter().notifyDataSetChanged(); - mWeekPager.setVisibility(VISIBLE); + if(mWeekPager != null && mWeekPager.getAdapter()!= null){ + mWeekPager.getAdapter().notifyDataSetChanged(); + mWeekPager.setVisibility(VISIBLE); + } mMonthView.setVisibility(INVISIBLE); } diff --git a/calendarview/src/main/java/com/haibin/calendarview/CalendarView.java b/calendarview/src/main/java/com/haibin/calendarview/CalendarView.java index b15bd227..cbc2d074 100644 --- a/calendarview/src/main/java/com/haibin/calendarview/CalendarView.java +++ b/calendarview/src/main/java/com/haibin/calendarview/CalendarView.java @@ -97,8 +97,8 @@ public CalendarView(@NonNull Context context, @Nullable AttributeSet attrs) { */ private void init(Context context) { LayoutInflater.from(context).inflate(R.layout.cv_layout_calendar_view, this, true); - FrameLayout frameContent = (FrameLayout) findViewById(R.id.frameContent); - this.mWeekPager = (WeekViewPager) findViewById(R.id.vp_week); + FrameLayout frameContent = findViewById(R.id.frameContent); + this.mWeekPager = findViewById(R.id.vp_week); this.mWeekPager.setup(mDelegate); try { @@ -121,7 +121,7 @@ private void init(Context context) { 0); this.mWeekLine.setLayoutParams(lineParams); - this.mMonthPager = (MonthViewPager) findViewById(R.id.vp_month); + this.mMonthPager = findViewById(R.id.vp_month); this.mMonthPager.mWeekPager = mWeekPager; this.mMonthPager.mWeekBar = mWeekBar; LayoutParams params = (LayoutParams) this.mMonthPager.getLayoutParams(); @@ -129,7 +129,7 @@ private void init(Context context) { mWeekPager.setLayoutParams(params); - mYearViewPager = (YearViewPager) findViewById(R.id.selectLayout); + mYearViewPager = findViewById(R.id.selectLayout); mYearViewPager.setBackgroundColor(mDelegate.getYearViewBackground()); mYearViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override @@ -244,7 +244,6 @@ public void onMonthSelected(int year, int month) { * @param maxYearMonth 最大月份对应月份 * @param maxYearDay 最大月份对应天 */ - @SuppressWarnings("all") public void setRange(int minYear, int minYearMonth, int minYearDay, int maxYear, int maxYearMonth, int maxYearDay) { if (CalendarUtil.compareTo(minYear, minYearMonth, minYearDay, @@ -480,7 +479,6 @@ public void scrollToNext() { * * @param smoothScroll smoothScroll */ - @SuppressWarnings("all") public void scrollToNext(boolean smoothScroll) { if (isYearSelectLayoutVisible()) { mYearViewPager.setCurrentItem(mYearViewPager.getCurrentItem() + 1, smoothScroll); @@ -504,7 +502,6 @@ public void scrollToPre() { * * @param smoothScroll smoothScroll */ - @SuppressWarnings("all") public void scrollToPre(boolean smoothScroll) { if (isYearSelectLayoutVisible()) { mYearViewPager.setCurrentItem(mYearViewPager.getCurrentItem() - 1, smoothScroll); @@ -547,7 +544,6 @@ public void scrollToCalendar(int year, int month, int day) { * @param day day * @param smoothScroll smoothScroll */ - @SuppressWarnings("all") public void scrollToCalendar(int year, int month, int day, boolean smoothScroll) { Calendar calendar = new Calendar(); @@ -588,7 +584,6 @@ public void scrollToYear(int year) { * @param year 快速滚动的年份 * @param smoothScroll smoothScroll */ - @SuppressWarnings("all") public void scrollToYear(int year, boolean smoothScroll) { if (mYearViewPager.getVisibility() != VISIBLE) { return; @@ -687,6 +682,7 @@ public final void putMultiSelect(Calendar... calendars) { * * @param calendars calendars */ + @SuppressWarnings("RedundantCollectionOperation") public final void removeMultiSelect(Calendar... calendars) { if (calendars == null || calendars.length == 0) { return; @@ -786,7 +782,7 @@ public final void setWeekBar(Class cls) { return; } mDelegate.setWeekBarClass(cls); - FrameLayout frameContent = (FrameLayout) findViewById(R.id.frameContent); + FrameLayout frameContent = findViewById(R.id.frameContent); frameContent.removeView(mWeekBar); try { @@ -1248,9 +1244,7 @@ public final void addSchemeDate(Calendar calendar) { if (mDelegate.mSchemeDatesMap == null) { mDelegate.mSchemeDatesMap = new HashMap<>(); } - if (mDelegate.mSchemeDatesMap.containsKey(calendar.toString())) { - mDelegate.mSchemeDatesMap.remove(calendar.toString()); - } + mDelegate.mSchemeDatesMap.remove(calendar.toString()); mDelegate.mSchemeDatesMap.put(calendar.toString(), calendar); this.mDelegate.updateSelectCalendarScheme(); this.mYearViewPager.update(); @@ -1290,9 +1284,7 @@ public final void removeSchemeDate(Calendar calendar) { if (mDelegate.mSchemeDatesMap == null || mDelegate.mSchemeDatesMap.size() == 0) { return; } - if (mDelegate.mSchemeDatesMap.containsKey(calendar.toString())) { - mDelegate.mSchemeDatesMap.remove(calendar.toString()); - } + mDelegate.mSchemeDatesMap.remove(calendar.toString()); if (mDelegate.mSelectedCalendar.equals(calendar)) { mDelegate.clearSelectedScheme(); } diff --git a/calendarview/src/main/java/com/haibin/calendarview/CalendarViewDelegate.java b/calendarview/src/main/java/com/haibin/calendarview/CalendarViewDelegate.java index a298dfcc..ed3a8868 100644 --- a/calendarview/src/main/java/com/haibin/calendarview/CalendarViewDelegate.java +++ b/calendarview/src/main/java/com/haibin/calendarview/CalendarViewDelegate.java @@ -1007,6 +1007,9 @@ final void addSchemesFromMap(List mItems) { for (Calendar a : mItems) { if (mSchemeDatesMap.containsKey(a.toString())) { Calendar d = mSchemeDatesMap.get(a.toString()); + if(d == null){ + continue; + } a.setScheme(TextUtils.isEmpty(d.getScheme()) ? getSchemeText() : d.getScheme()); a.setSchemeColor(d.getSchemeColor()); a.setSchemes(d.getSchemes()); @@ -1031,10 +1034,12 @@ final void addSchemes(Map mSchemeDates) { this.mSchemeDatesMap = new HashMap<>(); } for (String key : mSchemeDates.keySet()) { - if (this.mSchemeDatesMap.containsKey(key)) { - this.mSchemeDatesMap.remove(key); + this.mSchemeDatesMap.remove(key); + Calendar calendar = mSchemeDates.get(key); + if(calendar == null){ + continue; } - this.mSchemeDatesMap.put(key, mSchemeDates.get(key)); + this.mSchemeDatesMap.put(key,calendar); } } diff --git a/calendarview/src/main/java/com/haibin/calendarview/DefaultMonthView.java b/calendarview/src/main/java/com/haibin/calendarview/DefaultMonthView.java index ffb0145f..cb06080c 100644 --- a/calendarview/src/main/java/com/haibin/calendarview/DefaultMonthView.java +++ b/calendarview/src/main/java/com/haibin/calendarview/DefaultMonthView.java @@ -88,6 +88,7 @@ private float getTextWidth(String text) { return mTextPaint.measureText(text); } + @SuppressWarnings("IntegerDivisionInFloatingPointContext") @Override protected void onDrawText(Canvas canvas, Calendar calendar, int x, int y, boolean hasScheme, boolean isSelected) { int cx = x + mItemWidth / 2; diff --git a/calendarview/src/main/java/com/haibin/calendarview/DefaultWeekView.java b/calendarview/src/main/java/com/haibin/calendarview/DefaultWeekView.java index 74eea320..41c13dfb 100644 --- a/calendarview/src/main/java/com/haibin/calendarview/DefaultWeekView.java +++ b/calendarview/src/main/java/com/haibin/calendarview/DefaultWeekView.java @@ -89,6 +89,7 @@ private float getTextWidth(String text) { } + @SuppressWarnings("IntegerDivisionInFloatingPointContext") @Override protected void onDrawText(Canvas canvas, Calendar calendar, int x, boolean hasScheme, boolean isSelected) { int cx = x + mItemWidth / 2; diff --git a/calendarview/src/main/java/com/haibin/calendarview/DefaultYearView.java b/calendarview/src/main/java/com/haibin/calendarview/DefaultYearView.java index 7f0df25c..2396baac 100644 --- a/calendarview/src/main/java/com/haibin/calendarview/DefaultYearView.java +++ b/calendarview/src/main/java/com/haibin/calendarview/DefaultYearView.java @@ -32,6 +32,7 @@ public DefaultYearView(Context context) { mTextPadding = CalendarUtil.dipToPx(context, 3); } + @SuppressWarnings("IntegerDivisionInFloatingPointContext") @Override protected void onDrawMonth(Canvas canvas, int year, int month, int x, int y, int width, int height) { @@ -45,6 +46,7 @@ protected void onDrawMonth(Canvas canvas, int year, int month, int x, int y, int mMonthTextPaint); } + @SuppressWarnings("IntegerDivisionInFloatingPointContext") @Override protected void onDrawWeek(Canvas canvas, int week, int x, int y, int width, int height) { String text = getContext().getResources().getStringArray(R.array.year_view_week_string_array)[week]; diff --git a/calendarview/src/main/java/com/haibin/calendarview/MonthView.java b/calendarview/src/main/java/com/haibin/calendarview/MonthView.java index f6f29b74..437ec0a3 100644 --- a/calendarview/src/main/java/com/haibin/calendarview/MonthView.java +++ b/calendarview/src/main/java/com/haibin/calendarview/MonthView.java @@ -96,7 +96,6 @@ private void draw(Canvas canvas, Calendar calendar, int i, int j, int d) { } - @SuppressWarnings("deprecation") @Override public void onClick(View v) { if (!isClick) { @@ -152,7 +151,6 @@ public void onClick(View v) { } } - @SuppressWarnings("deprecation") @Override public boolean onLongClick(View v) { if (mDelegate.mCalendarLongClickListener == null) diff --git a/calendarview/src/main/java/com/haibin/calendarview/MonthViewPager.java b/calendarview/src/main/java/com/haibin/calendarview/MonthViewPager.java index 042581eb..867b389d 100644 --- a/calendarview/src/main/java/com/haibin/calendarview/MonthViewPager.java +++ b/calendarview/src/main/java/com/haibin/calendarview/MonthViewPager.java @@ -22,6 +22,7 @@ import android.view.View; import android.view.ViewGroup; +import androidx.annotation.NonNull; import androidx.viewpager.widget.PagerAdapter; import androidx.viewpager.widget.ViewPager; @@ -159,7 +160,7 @@ public void onPageSelected(int position) { } } - BaseMonthView view = (BaseMonthView) findViewWithTag(position); + BaseMonthView view = findViewWithTag(position); if (view != null) { int index = view.getSelectedIndex(mDelegate.mIndexCalendar); if (mDelegate.getSelectMode() == CalendarViewDelegate.SELECT_MODE_DEFAULT) { @@ -239,7 +240,7 @@ void notifyDataSetChanged() { mMonthCount = 12 * (mDelegate.getMaxYear() - mDelegate.getMinYear()) - mDelegate.getMinYearMonth() + 1 + mDelegate.getMaxYearMonth(); - getAdapter().notifyDataSetChanged(); + notifyAdapterDataSetChanged(); } /** @@ -247,7 +248,7 @@ void notifyDataSetChanged() { */ void updateMonthViewClass() { isUpdateMonthView = true; - getAdapter().notifyDataSetChanged(); + notifyAdapterDataSetChanged(); isUpdateMonthView = false; } @@ -266,7 +267,7 @@ final void updateRange() { int y = calendar.getYear() - mDelegate.getMinYear(); int position = 12 * y + calendar.getMonth() - mDelegate.getMinYearMonth(); setCurrentItem(position, false); - BaseMonthView view = (BaseMonthView) findViewWithTag(position); + BaseMonthView view = findViewWithTag(position); if (view != null) { view.setSelectedCalendar(mDelegate.mIndexCalendar); view.invalidate(); @@ -316,7 +317,7 @@ void scrollToCalendar(int year, int month, int day, boolean smoothScroll) { } setCurrentItem(position, smoothScroll); - BaseMonthView view = (BaseMonthView) findViewWithTag(position); + BaseMonthView view = findViewWithTag(position); if (view != null) { view.setSelectedCalendar(mDelegate.mIndexCalendar); view.invalidate(); @@ -353,7 +354,7 @@ void scrollToCurrent(boolean smoothScroll) { setCurrentItem(position, smoothScroll); - BaseMonthView view = (BaseMonthView) findViewWithTag(position); + BaseMonthView view = findViewWithTag(position); if (view != null) { view.setSelectedCalendar(mDelegate.getCurrentDay()); view.invalidate(); @@ -373,7 +374,7 @@ void scrollToCurrent(boolean smoothScroll) { * @return 获取当前月份数据 */ List getCurrentMonthCalendars() { - BaseMonthView view = (BaseMonthView) findViewWithTag(getCurrentItem()); + BaseMonthView view = findViewWithTag(getCurrentItem()); if (view == null) { return null; } @@ -384,7 +385,7 @@ List getCurrentMonthCalendars() { * 更新为默认选择模式 */ void updateDefaultSelect() { - BaseMonthView view = (BaseMonthView) findViewWithTag(getCurrentItem()); + BaseMonthView view = findViewWithTag(getCurrentItem()); if (view != null) { int index = view.getSelectedIndex(mDelegate.mSelectedCalendar); view.mCurrentItem = index; @@ -557,6 +558,13 @@ final void clearMultiSelect() { } } + private void notifyAdapterDataSetChanged(){ + if(getAdapter() == null){ + return; + } + getAdapter().notifyDataSetChanged(); + } + @SuppressLint("ClickableViewAccessibility") @Override public boolean onTouchEvent(MotionEvent ev) { @@ -593,17 +601,18 @@ public int getCount() { } @Override - public int getItemPosition(Object object) { + public int getItemPosition(@NonNull Object object) { return isUpdateMonthView ? POSITION_NONE : super.getItemPosition(object); } @Override - public boolean isViewFromObject(View view, Object object) { + public boolean isViewFromObject(View view,@NonNull Object object) { return view.equals(object); } + @NonNull @Override - public Object instantiateItem(ViewGroup container, int position) { + public Object instantiateItem(@NonNull ViewGroup container, int position) { int year = (position + mDelegate.getMinYearMonth() - 1) / 12 + mDelegate.getMinYear(); int month = (position + mDelegate.getMinYearMonth() - 1) % 12 + 1; BaseMonthView view; @@ -612,7 +621,7 @@ public Object instantiateItem(ViewGroup container, int position) { view = (BaseMonthView) constructor.newInstance(getContext()); } catch (Exception e) { e.printStackTrace(); - return null; + return new DefaultMonthView(getContext()); } view.mMonthViewPager = MonthViewPager.this; view.mParentLayout = mParentLayout; @@ -625,11 +634,8 @@ public Object instantiateItem(ViewGroup container, int position) { } @Override - public void destroyItem(ViewGroup container, int position, Object object) { + public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) { BaseView view = (BaseView) object; - if (view == null) { - return; - } view.onDestroy(); container.removeView(view); } diff --git a/calendarview/src/main/java/com/haibin/calendarview/WeekViewPager.java b/calendarview/src/main/java/com/haibin/calendarview/WeekViewPager.java index afcde87c..c87cc75a 100644 --- a/calendarview/src/main/java/com/haibin/calendarview/WeekViewPager.java +++ b/calendarview/src/main/java/com/haibin/calendarview/WeekViewPager.java @@ -22,6 +22,7 @@ import android.view.View; import android.view.ViewGroup; +import androidx.annotation.NonNull; import androidx.viewpager.widget.PagerAdapter; import androidx.viewpager.widget.ViewPager; @@ -89,7 +90,7 @@ public void onPageSelected(int position) { isUsingScrollToCalendar = false; return; } - BaseWeekView view = (BaseWeekView) findViewWithTag(position); + BaseWeekView view = findViewWithTag(position); if (view != null) { view.performClickCalendar(mDelegate.getSelectMode() != CalendarViewDelegate.SELECT_MODE_DEFAULT ? mDelegate.mIndexCalendar : mDelegate.mSelectedCalendar, !isUsingScrollToCalendar); @@ -132,7 +133,7 @@ void notifyDataSetChanged() { mDelegate.getMaxYearMonth(), mDelegate.getMaxYearDay(), mDelegate.getWeekStart()); - getAdapter().notifyDataSetChanged(); + notifyAdapterDataSetChanged(); } /** @@ -140,7 +141,7 @@ void notifyDataSetChanged() { */ void updateWeekViewClass() { isUpdateWeekView = true; - getAdapter().notifyDataSetChanged(); + notifyAdapterDataSetChanged(); isUpdateWeekView = false; } @@ -213,7 +214,7 @@ void scrollToCurrent(boolean smoothScroll) { isUsingScrollToCalendar = false; } setCurrentItem(position, smoothScroll); - BaseWeekView view = (BaseWeekView) findViewWithTag(position); + BaseWeekView view = findViewWithTag(position); if (view != null) { view.performClickCalendar(mDelegate.getCurrentDay(), false); view.setSelectedCalendar(mDelegate.getCurrentDay()); @@ -243,7 +244,7 @@ void updateSelected(Calendar calendar, boolean smoothScroll) { int curItem = getCurrentItem(); isUsingScrollToCalendar = curItem != position; setCurrentItem(position, smoothScroll); - BaseWeekView view = (BaseWeekView) findViewWithTag(position); + BaseWeekView view = findViewWithTag(position); if (view != null) { view.setSelectedCalendar(calendar); view.invalidate(); @@ -268,7 +269,7 @@ void updateSingleSelect() { * 更新为默认选择模式 */ void updateDefaultSelect() { - BaseWeekView view = (BaseWeekView) findViewWithTag(getCurrentItem()); + BaseWeekView view = findViewWithTag(getCurrentItem()); if (view != null) { view.setSelectedCalendar(mDelegate.mSelectedCalendar); view.invalidate(); @@ -331,6 +332,9 @@ void updateShowMode() { * 更新周起始 */ void updateWeekStart() { + if(getAdapter() == null){ + return; + } int count = getAdapter().getCount(); mWeekCount = CalendarUtil.getWeekCountBetweenBothCalendar( mDelegate.getMinYear(), @@ -393,6 +397,13 @@ final void clearMultiSelect() { } } + private void notifyAdapterDataSetChanged(){ + if(getAdapter() == null){ + return; + } + getAdapter().notifyDataSetChanged(); + } + @SuppressLint("ClickableViewAccessibility") @Override public boolean onTouchEvent(MotionEvent ev) { @@ -424,17 +435,18 @@ public int getCount() { } @Override - public int getItemPosition(Object object) { + public int getItemPosition(@NonNull Object object) { return isUpdateWeekView ? POSITION_NONE : super.getItemPosition(object); } @Override - public boolean isViewFromObject(View view, Object object) { + public boolean isViewFromObject(@NonNull View view, @NonNull Object object) { return view.equals(object); } + @NonNull @Override - public Object instantiateItem(ViewGroup container, int position) { + public Object instantiateItem(@NonNull ViewGroup container, int position) { Calendar calendar = CalendarUtil.getFirstCalendarStartWithMinCalendar(mDelegate.getMinYear(), mDelegate.getMinYearMonth(), mDelegate.getMinYearDay(), @@ -446,7 +458,7 @@ public Object instantiateItem(ViewGroup container, int position) { view = (BaseWeekView) constructor.newInstance(getContext()); } catch (Exception e) { e.printStackTrace(); - return null; + return new DefaultWeekView(getContext()); } view.mParentLayout = mParentLayout; view.setup(mDelegate); @@ -458,14 +470,10 @@ public Object instantiateItem(ViewGroup container, int position) { } @Override - public void destroyItem(ViewGroup container, int position, Object object) { + public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) { BaseWeekView view = (BaseWeekView) object; - if (view == null) { - return; - } view.onDestroy(); container.removeView(view); } - } } diff --git a/calendarview/src/main/java/com/haibin/calendarview/YearRecyclerView.java b/calendarview/src/main/java/com/haibin/calendarview/YearRecyclerView.java index 76ae12af..ccc0fd7e 100644 --- a/calendarview/src/main/java/com/haibin/calendarview/YearRecyclerView.java +++ b/calendarview/src/main/java/com/haibin/calendarview/YearRecyclerView.java @@ -120,6 +120,13 @@ final void setOnMonthSelectedListener(OnMonthSelectedListener listener) { } + void notifyAdapterDataSetChanged(){ + if(getAdapter() == null){ + return; + } + getAdapter().notifyDataSetChanged(); + } + @Override protected void onMeasure(int widthSpec, int heightSpec) { super.onMeasure(widthSpec, heightSpec); diff --git a/calendarview/src/main/java/com/haibin/calendarview/YearView.java b/calendarview/src/main/java/com/haibin/calendarview/YearView.java index 01498ebb..9658467c 100644 --- a/calendarview/src/main/java/com/haibin/calendarview/YearView.java +++ b/calendarview/src/main/java/com/haibin/calendarview/YearView.java @@ -293,6 +293,7 @@ final void init(int year, int month) { * @param width width * @param height height */ + @SuppressWarnings("IntegerDivisionInFloatingPointContext") final void measureSize(int width, int height) { Rect rect = new Rect(); @@ -330,6 +331,9 @@ private void addSchemesFromMap() { for (Calendar a : mItems) { if (mDelegate.mSchemeDatesMap.containsKey(a.toString())) { Calendar d = mDelegate.mSchemeDatesMap.get(a.toString()); + if(d == null){ + continue; + } a.setScheme(TextUtils.isEmpty(d.getScheme()) ? mDelegate.getSchemeText() : d.getScheme()); a.setSchemeColor(d.getSchemeColor()); a.setSchemes(d.getSchemes()); diff --git a/calendarview/src/main/java/com/haibin/calendarview/YearViewPager.java b/calendarview/src/main/java/com/haibin/calendarview/YearViewPager.java index 872151d7..1691ff49 100644 --- a/calendarview/src/main/java/com/haibin/calendarview/YearViewPager.java +++ b/calendarview/src/main/java/com/haibin/calendarview/YearViewPager.java @@ -24,6 +24,7 @@ import android.view.ViewGroup; import android.view.WindowManager; +import androidx.annotation.NonNull; import androidx.viewpager.widget.PagerAdapter; import androidx.viewpager.widget.ViewPager; @@ -57,17 +58,18 @@ public int getCount() { } @Override - public int getItemPosition(Object object) { + public int getItemPosition(@NonNull Object object) { return isUpdateYearView ? POSITION_NONE : super.getItemPosition(object); } @Override - public boolean isViewFromObject(View view, Object object) { + public boolean isViewFromObject(@NonNull View view, @NonNull Object object) { return view == object; } + @NonNull @Override - public Object instantiateItem(ViewGroup container, int position) { + public Object instantiateItem(@NonNull ViewGroup container, int position) { YearRecyclerView view = new YearRecyclerView(getContext()); container.addView(view); view.setup(mDelegate); @@ -77,7 +79,7 @@ public Object instantiateItem(ViewGroup container, int position) { } @Override - public void destroyItem(ViewGroup container, int position, Object object) { + public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) { container.removeView((View) object); } }); @@ -103,7 +105,10 @@ public void setCurrentItem(int item, boolean smoothScroll) { */ void notifyDataSetChanged() { this.mYearCount = mDelegate.getMaxYear() - mDelegate.getMinYear() + 1; - getAdapter().notifyDataSetChanged(); + if(getAdapter() != null){ + getAdapter().notifyDataSetChanged(); + } + } /** @@ -131,7 +136,7 @@ final void updateRange() { final void update() { for (int i = 0; i < getChildCount(); i++) { YearRecyclerView view = (YearRecyclerView) getChildAt(i); - view.getAdapter().notifyDataSetChanged(); + view.notifyAdapterDataSetChanged(); } } @@ -143,7 +148,7 @@ final void updateWeekStart() { for (int i = 0; i < getChildCount(); i++) { YearRecyclerView view = (YearRecyclerView) getChildAt(i); view.updateWeekStart(); - view.getAdapter().notifyDataSetChanged(); + view.notifyAdapterDataSetChanged(); } } @@ -161,6 +166,7 @@ final void setOnMonthSelectedListener(YearRecyclerView.OnMonthSelectedListener l this.mListener = listener; } + @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { heightMeasureSpec = MeasureSpec.makeMeasureSpec(getHeight(getContext(), this), MeasureSpec.EXACTLY); diff --git a/gradle.properties b/gradle.properties index 27a9b6be..d0ef697c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -18,8 +18,8 @@ org.gradle.jvmargs=-Xmx1536m POM_BINTRAY_NAME=com.haibin:calendarview POM_DESCRIPTION=A very good CalendarView for Android. POM_ARTIFACT_ID=calendarview -VERSION_NAME=3.6.4 -VERSION_CODE=3.6.4 +VERSION_NAME=3.6.5 +VERSION_CODE=3.6.5 POM_BINTRAY_PRPO=maven POM_PACKAGING=aar POM_NAME=calendarview diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar deleted file mode 100644 index 13372aef..00000000 Binary files a/gradle/wrapper/gradle-wrapper.jar and /dev/null differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 8be2d9d2..9b6616cb 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,4 +1,4 @@ -#Tue Jul 02 14:05:10 CST 2019 +#Fri Jun 23 08:50:38 CEST 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME