├── .gitignore ├── README.md ├── Screenshot_01.png ├── Screenshot_02.png ├── app ├── .DS_Store ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── .DS_Store │ ├── androidTest │ └── java │ │ └── calendar │ │ └── lemon │ │ └── calendar │ │ └── ApplicationTest.java │ ├── main │ ├── .DS_Store │ ├── AndroidManifest.xml │ ├── java │ │ ├── .DS_Store │ │ └── com │ │ │ ├── .DS_Store │ │ │ └── gsh │ │ │ ├── .DS_Store │ │ │ └── calendar │ │ │ ├── MainActivity.java │ │ │ ├── MensColorDetailActivity.java │ │ │ ├── adapter │ │ │ └── CalendarAdapter.java │ │ │ ├── data │ │ │ ├── CalendarOneScreenDataMonth.java │ │ │ ├── CalendarOneScreenDataWeek.java │ │ │ ├── DateData.java │ │ │ ├── DayData.java │ │ │ └── TestData.java │ │ │ ├── util │ │ │ ├── DateUtil.java │ │ │ └── Utils.java │ │ │ └── widget │ │ │ ├── CalendarCard.java │ │ │ ├── CalendarConstant.java │ │ │ ├── CalendarViewPager.java │ │ │ ├── CollapseScrollView.java │ │ │ └── InnerScrollView.java │ └── res │ │ ├── .DS_Store │ │ ├── color │ │ ├── selector_title_date_color.xml │ │ └── selector_week_color.xml │ │ ├── drawable-xhdpi │ │ ├── .DS_Store │ │ ├── calendar_button_amount1_normal.png │ │ ├── calendar_button_amount1_select.png │ │ ├── calendar_button_amount2_normal.png │ │ ├── calendar_button_amount2_select.png │ │ ├── calendar_button_amount3_normal.png │ │ ├── calendar_button_amount3_select.png │ │ ├── calendar_button_amount4_normal.png │ │ ├── calendar_button_amount4_select.png │ │ ├── calendar_button_amount5_normal.png │ │ ├── calendar_button_amount5_select.png │ │ ├── calendar_button_pain1_normal.png │ │ ├── calendar_button_pain1_select.png │ │ ├── calendar_button_pain2_normal.png │ │ ├── calendar_button_pain2_select.png │ │ ├── calendar_button_pain3_normal.png │ │ ├── calendar_button_pain3_select.png │ │ ├── calender_bg_fertile.png │ │ ├── calender_bg_period.png │ │ ├── calender_button_amount1_normal.png │ │ ├── calender_button_amount1_select.png │ │ ├── calender_button_amount2_normal.png │ │ ├── calender_button_amount2_select.png │ │ ├── calender_button_amount3_normal.png │ │ ├── calender_button_amount3_select.png │ │ ├── calender_button_amount4_normal.png │ │ ├── calender_button_amount4_select.png │ │ ├── calender_button_amount5_normal.png │ │ ├── calender_button_amount5_select.png │ │ ├── calender_button_color1_normal.png │ │ ├── calender_button_color1_select.png │ │ ├── calender_button_color2_normal.png │ │ ├── calender_button_color2_select.png │ │ ├── calender_button_color3_normal.png │ │ ├── calender_button_color3_select.png │ │ ├── calender_button_color4_normal.png │ │ ├── calender_button_color4_select.png │ │ ├── calender_button_color5_normal.png │ │ ├── calender_button_color5_select.png │ │ ├── calender_button_down_black.png │ │ ├── calender_button_down_white.png │ │ ├── calender_button_help_black.png │ │ ├── calender_button_help_white.png │ │ ├── calender_button_menses1_normal.png │ │ ├── calender_button_menses1_select.png │ │ ├── calender_button_menses2_normal.png │ │ ├── calender_button_menses2_select.png │ │ ├── calender_button_menses3_normal.png │ │ ├── calender_button_menses3_select.png │ │ ├── calender_button_next.png │ │ ├── calender_button_pain1_normal.png │ │ ├── calender_button_pain1_select.png │ │ ├── calender_button_pain2_normal.png │ │ ├── calender_button_pain2_select.png │ │ ├── calender_button_pain3_normal.png │ │ ├── calender_button_pain3_select.png │ │ ├── calender_button_today_black.png │ │ ├── calender_button_today_white.png │ │ ├── calender_help_icon_sanjiao.png │ │ ├── public_button_back.png │ │ ├── public_button_back_white.png │ │ └── public_photo_yingying.png │ │ ├── drawable-xxhdpi │ │ ├── .DS_Store │ │ ├── calendar_button_amount1_normal.png │ │ ├── calendar_button_amount1_select.png │ │ ├── calendar_button_amount2_normal.png │ │ ├── calendar_button_amount2_select.png │ │ ├── calendar_button_amount3_normal.png │ │ ├── calendar_button_amount3_select.png │ │ ├── calendar_button_amount4_normal.png │ │ ├── calendar_button_amount4_select.png │ │ ├── calendar_button_amount5_normal.png │ │ ├── calendar_button_amount5_select.png │ │ ├── calendar_button_pain1_normal.png │ │ ├── calendar_button_pain1_select.png │ │ ├── calendar_button_pain2_normal.png │ │ ├── calendar_button_pain2_select.png │ │ ├── calendar_button_pain3_normal.png │ │ ├── calendar_button_pain3_select.png │ │ ├── calender_bg_fertile.png │ │ ├── calender_bg_period.png │ │ ├── calender_button_amount1_normal.png │ │ ├── calender_button_amount1_select.png │ │ ├── calender_button_amount2_normal.png │ │ ├── calender_button_amount2_select.png │ │ ├── calender_button_amount3_normal.png │ │ ├── calender_button_amount3_select.png │ │ ├── calender_button_amount4_normal.png │ │ ├── calender_button_amount4_select.png │ │ ├── calender_button_amount5_normal.png │ │ ├── calender_button_amount5_select.png │ │ ├── calender_button_color1_normal.png │ │ ├── calender_button_color1_select.png │ │ ├── calender_button_color2_normal.png │ │ ├── calender_button_color2_select.png │ │ ├── calender_button_color3_normal.png │ │ ├── calender_button_color3_select.png │ │ ├── calender_button_color4_normal.png │ │ ├── calender_button_color4_select.png │ │ ├── calender_button_color5_normal.png │ │ ├── calender_button_color5_select.png │ │ ├── calender_button_down_black.png │ │ ├── calender_button_down_white.png │ │ ├── calender_button_help_black.png │ │ ├── calender_button_help_white.png │ │ ├── calender_button_menses1_normal.png │ │ ├── calender_button_menses1_select.png │ │ ├── calender_button_menses2_normal.png │ │ ├── calender_button_menses2_select.png │ │ ├── calender_button_menses3_normal.png │ │ ├── calender_button_menses3_select.png │ │ ├── calender_button_next.png │ │ ├── calender_button_pain1_normal.png │ │ ├── calender_button_pain1_select.png │ │ ├── calender_button_pain2_normal.png │ │ ├── calender_button_pain2_select.png │ │ ├── calender_button_pain3_normal.png │ │ ├── calender_button_pain3_select.png │ │ ├── calender_button_today_black.png │ │ ├── calender_button_today_white.png │ │ ├── calender_help_icon_sanjiao.png │ │ ├── public_button_back.png │ │ ├── public_button_back_white.png │ │ └── public_photo_yingying.png │ │ ├── drawable-xxxhdpi │ │ ├── .DS_Store │ │ ├── calendar_button_amount1_normal.png │ │ ├── calendar_button_amount1_select.png │ │ ├── calendar_button_amount2_normal.png │ │ ├── calendar_button_amount2_select.png │ │ ├── calendar_button_amount3_normal.png │ │ ├── calendar_button_amount3_select.png │ │ ├── calendar_button_amount4_normal.png │ │ ├── calendar_button_amount4_select.png │ │ ├── calendar_button_amount5_normal.png │ │ ├── calendar_button_amount5_select.png │ │ ├── calendar_button_pain1_normal.png │ │ ├── calendar_button_pain1_select.png │ │ ├── calendar_button_pain2_normal.png │ │ ├── calendar_button_pain2_select.png │ │ ├── calendar_button_pain3_normal.png │ │ ├── calendar_button_pain3_select.png │ │ ├── calender_bg_fertile.png │ │ ├── calender_bg_period.png │ │ ├── calender_button_amount1_normal.png │ │ ├── calender_button_amount1_select.png │ │ ├── calender_button_amount2_normal.png │ │ ├── calender_button_amount2_select.png │ │ ├── calender_button_amount3_normal.png │ │ ├── calender_button_amount3_select.png │ │ ├── calender_button_amount4_normal.png │ │ ├── calender_button_amount4_select.png │ │ ├── calender_button_amount5_normal.png │ │ ├── calender_button_amount5_select.png │ │ ├── calender_button_color1_normal.png │ │ ├── calender_button_color1_select.png │ │ ├── calender_button_color2_normal.png │ │ ├── calender_button_color2_select.png │ │ ├── calender_button_color3_normal.png │ │ ├── calender_button_color3_select.png │ │ ├── calender_button_color4_normal.png │ │ ├── calender_button_color4_select.png │ │ ├── calender_button_color5_normal.png │ │ ├── calender_button_color5_select.png │ │ ├── calender_button_down_black.png │ │ ├── calender_button_down_white.png │ │ ├── calender_button_help_black.png │ │ ├── calender_button_help_white.png │ │ ├── calender_button_menses1_normal.png │ │ ├── calender_button_menses1_select.png │ │ ├── calender_button_menses2_normal.png │ │ ├── calender_button_menses2_select.png │ │ ├── calender_button_menses3_normal.png │ │ ├── calender_button_menses3_select.png │ │ ├── calender_button_next.png │ │ ├── calender_button_pain1_normal.png │ │ ├── calender_button_pain1_select.png │ │ ├── calender_button_pain2_normal.png │ │ ├── calender_button_pain2_select.png │ │ ├── calender_button_pain3_normal.png │ │ ├── calender_button_pain3_select.png │ │ ├── calender_button_today_black.png │ │ ├── calender_button_today_white.png │ │ ├── calender_help_icon_sanjiao.png │ │ ├── public_button_back.png │ │ ├── public_button_back_white.png │ │ └── public_photo_yingying.png │ │ ├── drawable │ │ ├── selector_back.xml │ │ ├── selector_down.xml │ │ ├── selector_help.xml │ │ ├── selector_help_icon_sanjiao.xml │ │ ├── selector_today.xml │ │ ├── shape_border_bg.xml │ │ ├── shape_circle_easy.xml │ │ ├── shape_circle_easy_detail.xml │ │ ├── shape_circle_mens.xml │ │ ├── shape_circle_mens0.xml │ │ ├── shape_circle_mens0_detail.xml │ │ ├── shape_circle_mens_detail.xml │ │ ├── shape_circle_ovu.xml │ │ └── shape_circle_ovu_detail.xml │ │ ├── layout │ │ ├── activity_main.xml │ │ ├── content_main.xml │ │ └── include_border_layout.xml │ │ ├── menu │ │ └── menu_main.xml │ │ ├── mipmap-hdpi │ │ └── ic_launcher.png │ │ ├── mipmap-mdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxxhdpi │ │ └── ic_launcher.png │ │ ├── values-v21 │ │ └── styles.xml │ │ ├── values-w820dp │ │ └── dimens.xml │ │ └── values │ │ ├── attrs.xml │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── calendar │ └── lemon │ └── calendar │ ├── ExampleUnitTest.java │ └── NewDateDifference.java ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── javatest ├── .gitignore ├── build.gradle └── src │ └── main │ └── java │ └── calendar │ └── example │ ├── MyClass.java │ └── NewDateDifference.java ├── local.properties ├── pickerview ├── .DS_Store ├── build.gradle ├── proguard-rules.pro └── src │ ├── .DS_Store │ ├── androidTest │ └── java │ │ └── calendar │ │ └── bigkoo │ │ └── pickerview │ │ └── ApplicationTest.java │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── calendar │ │ └── bigkoo │ │ └── pickerview │ │ ├── Constant.java │ │ ├── CustomPickerView.java │ │ ├── HeightPickerView.java │ │ ├── OptionsPickerView.java │ │ ├── RaiingPickerLog.java │ │ ├── TimePickerView.java │ │ ├── WeightPickerView.java │ │ ├── YMDPickerView.java │ │ ├── adapter │ │ ├── ArrayWheelAdapter.java │ │ ├── NumericWheelAdapter.java │ │ └── WheelAdapter.java │ │ ├── dialog │ │ └── PickerBaseDialog.java │ │ ├── lib │ │ ├── InertiaTimerTask.java │ │ ├── LoopViewGestureListener.java │ │ ├── MessageHandler.java │ │ ├── OnItemSelectedRunnable.java │ │ ├── SmoothScrollTimerTask.java │ │ └── WheelView.java │ │ ├── listener │ │ ├── OnDismissListener.java │ │ └── OnItemSelectedListener.java │ │ ├── utils │ │ ├── PickerViewAnimateUtil.java │ │ └── PickerViewUtils.java │ │ └── view │ │ ├── BasePickerView.java │ │ ├── SwitchButton.java │ │ ├── WheelOptions.java │ │ └── WheelTime.java │ └── res │ ├── anim │ ├── slide_in_bottom.xml │ └── slide_out_bottom.xml │ ├── drawable │ ├── selector_pickerview_btn.xml │ ├── shape_layout.xml │ ├── shape_left_tv.xml │ ├── shape_left_tv_un.xml │ ├── shape_right_tv.xml │ └── shape_right_tv_un.xml │ ├── layout │ ├── include_pickerview_topbar.xml │ ├── layout_basepickerview.xml │ ├── pickerview_custom.xml │ ├── pickerview_height.xml │ ├── pickerview_options.xml │ ├── pickerview_time.xml │ ├── pickerview_weight.xml │ ├── pickerview_ymd.xml │ └── switch_button.xml │ ├── values-zh-rCN │ └── strings.xml │ └── values │ ├── attrs.xml │ ├── colors.xml │ ├── dimens.xml │ ├── integers.xml │ ├── strings.xml │ └── styles.xml └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | # Built application files 2 | *.apk 3 | *.ap_ 4 | 5 | # Files for the ART/Dalvik VM 6 | *.dex 7 | 8 | # Java class files 9 | *.class 10 | 11 | # Generated files 12 | bin/ 13 | gen/ 14 | out/ 15 | 16 | # Gradle files 17 | .gradle/ 18 | build/ 19 | 20 | # Local configuration file (sdk path, etc) 21 | local.properties 22 | 23 | # Proguard folder generated by Eclipse 24 | proguard/ 25 | 26 | # Log Files 27 | *.log 28 | 29 | # Android Studio Navigation editor temp files 30 | .navigation/ 31 | 32 | # Android Studio captures folder 33 | captures/ 34 | 35 | # Intellij 36 | *.iml 37 | .idea/ 38 | #.idea/workspace.xml 39 | #.idea/libraries 40 | 41 | # Keystore files 42 | *.jks 43 | 44 | *.DS_Store 45 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # calendarDemo 2 | 日历demo , 模仿小米 3 | 4 | ## 月视图 5 | ![image](https://github.com/shaohuaguo/calendarDemo/blob/master/Screenshot_01.png) 6 | 7 | 8 | ## 周视图 9 | ![image](https://github.com/shaohuaguo/calendarDemo/blob/master/Screenshot_02.png) 10 | 11 | -------------------------------------------------------------------------------- /Screenshot_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/Screenshot_01.png -------------------------------------------------------------------------------- /Screenshot_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/Screenshot_02.png -------------------------------------------------------------------------------- /app/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/.DS_Store -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 24 5 | buildToolsVersion "24.0.1" 6 | defaultConfig { 7 | applicationId "com.gsh.calendar" 8 | minSdkVersion 18 9 | targetSdkVersion 24 10 | versionCode 1 11 | versionName "1.0" 12 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 13 | } 14 | buildTypes { 15 | release { 16 | minifyEnabled false 17 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 18 | } 19 | } 20 | } 21 | 22 | dependencies { 23 | compile fileTree(dir: 'libs', include: ['*.jar']) 24 | androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 25 | exclude group: 'com.android.support', module: 'support-annotations' 26 | }) 27 | compile 'com.android.support:appcompat-v7:24.2.0' 28 | compile 'com.android.support:design:24.2.0' 29 | testCompile 'junit:junit:4.12' 30 | compile project(':pickerview') 31 | } 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | //apply plugin: 'com.android.application' 40 | // 41 | //android { 42 | // compileSdkVersion 23 43 | // buildToolsVersion "23.0.1" 44 | // 45 | // defaultConfig { 46 | // applicationId "com.gsh.raiing" 47 | // minSdkVersion 19 48 | // targetSdkVersion 23 49 | // versionCode 1 50 | // versionName "1.0" 51 | // } 52 | // buildTypes { 53 | // release { 54 | // minifyEnabled false 55 | // proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 56 | // } 57 | // } 58 | //} 59 | // 60 | //dependencies { 61 | // compile fileTree(include: ['*.jar'], dir: 'libs') 62 | // testCompile 'junit:junit:4.12' 63 | // compile 'com.android.support:appcompat-v7:23.1.1' 64 | // compile 'com.android.support:design:23.1.1' 65 | // compile project(':pickerview') 66 | //} 67 | -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /Users/damon/Library/Android/sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /app/src/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/.DS_Store -------------------------------------------------------------------------------- /app/src/androidTest/java/calendar/lemon/calendar/ApplicationTest.java: -------------------------------------------------------------------------------- 1 | package com.gsh.calendar; 2 | 3 | import android.app.Application; 4 | import android.test.ApplicationTestCase; 5 | 6 | import java.util.Calendar; 7 | import java.util.Date; 8 | import java.util.TimeZone; 9 | 10 | /** 11 | * Testing Fundamentals 12 | */ 13 | public class ApplicationTest extends ApplicationTestCase { 14 | public ApplicationTest() { 15 | super(Application.class); 16 | } 17 | 18 | public void test0(){ 19 | 20 | System.out.println("language-->>"+getContext().getResources().getConfiguration().locale.getCountry()); 21 | System.out.println("timeZone name-->>"+ TimeZone.getDefault().getDisplayName()); 22 | System.out.println("timeZone offset-->>"+ TimeZone.getDefault().getRawOffset()); 23 | String[] insert1 = new String[]{"3","11","2015" }; 24 | String[] insert2 = new String[]{"20","3","2016" }; 25 | 26 | 27 | Calendar cal = Calendar.getInstance(); 28 | 29 | cal.set(Calendar.DAY_OF_MONTH, Integer.parseInt(insert1[0])); 30 | cal.set(Calendar.MONTH, Integer.parseInt(insert1[1])); 31 | cal.set(Calendar.YEAR, Integer.parseInt(insert1[2])); 32 | Date firstDate = cal.getTime(); 33 | 34 | cal.set(Calendar.DAY_OF_MONTH, Integer.parseInt(insert2[0])); 35 | cal.set(Calendar.MONTH, Integer.parseInt(insert2[1])); 36 | cal.set(Calendar.YEAR, Integer.parseInt(insert2[2])); 37 | Date secondDate = cal.getTime(); 38 | 39 | 40 | long diff = secondDate.getTime() - firstDate.getTime(); 41 | 42 | System.out.println("Days0: " + (diff / 1000 / 60 / 60 / 24-60*60*1000L)); 43 | System.out.println("Days1: " +getDiffDay(insert1,insert2)); 44 | } 45 | public static int getDiffDay(String[] insert1, String[] insert2) { 46 | Calendar cal = Calendar.getInstance(); 47 | 48 | cal.set(Calendar.DAY_OF_MONTH, Integer.parseInt(insert1[0])); 49 | cal.set(Calendar.MONTH, Integer.parseInt(insert1[1])); 50 | cal.set(Calendar.YEAR, Integer.parseInt(insert1[2])); 51 | cal.set(Calendar.HOUR_OF_DAY, 0); 52 | cal.set(Calendar.MINUTE, 0); 53 | cal.set(Calendar.SECOND,0); 54 | cal.set(Calendar.MILLISECOND, 0); 55 | 56 | int unix1 = (int) (cal.getTimeInMillis() / 1000L); 57 | 58 | Calendar cal2 = Calendar.getInstance(); 59 | 60 | cal2.set(Calendar.DAY_OF_MONTH, Integer.parseInt(insert2[0])); 61 | cal2.set(Calendar.MONTH, Integer.parseInt(insert2[1])); 62 | cal2.set(Calendar.YEAR, Integer.parseInt(insert2[2])); 63 | cal2.set(Calendar.HOUR_OF_DAY, 0); 64 | cal2.set(Calendar.MINUTE, 0); 65 | cal2.set(Calendar.SECOND,0); 66 | cal2.set(Calendar.MILLISECOND, 0); 67 | int unix2 = (int) (cal2.getTimeInMillis() / 1000L); 68 | 69 | int result = 0; 70 | for (int i = 0; i < 1000; i++) { 71 | cal2.add(Calendar.DATE, unix1 > unix2 ? 1 : -1); 72 | if (cal2.getTimeInMillis() / 1000L == unix1) { 73 | result = i + 1; 74 | break; 75 | } 76 | } 77 | return result; 78 | } 79 | } -------------------------------------------------------------------------------- /app/src/main/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/.DS_Store -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 11 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /app/src/main/java/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/java/.DS_Store -------------------------------------------------------------------------------- /app/src/main/java/com/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/java/com/.DS_Store -------------------------------------------------------------------------------- /app/src/main/java/com/gsh/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/java/com/gsh/.DS_Store -------------------------------------------------------------------------------- /app/src/main/java/com/gsh/calendar/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.gsh.calendar; 2 | 3 | import android.os.Bundle; 4 | import android.support.annotation.UiThread; 5 | import android.support.v7.app.AppCompatActivity; 6 | import android.util.Log; 7 | import android.view.MotionEvent; 8 | import android.view.View; 9 | import android.widget.ImageView; 10 | import android.widget.RelativeLayout; 11 | import android.widget.TextView; 12 | 13 | import calendar.bigkoo.pickerview.YMDPickerView; 14 | import com.gsh.calendar.util.DateUtil; 15 | import com.gsh.calendar.util.Utils; 16 | import com.gsh.calendar.widget.CollapseScrollView; 17 | 18 | import java.util.Calendar; 19 | 20 | public class MainActivity extends AppCompatActivity implements View.OnClickListener { 21 | private static final String TAG = "MainActivity-->>"; 22 | 23 | private CollapseScrollView collapseScrollView; 24 | 25 | /** 26 | * 帮助内容左上角的小箭头 27 | */ 28 | private RelativeLayout calendarTitleArrowUp; 29 | 30 | /** 31 | * 帮助内容(问号点开后显示) 32 | */ 33 | private TextView calendarHelpContent; 34 | 35 | /** 36 | * 今天按钮 37 | */ 38 | private ImageView calendarTitleToday; 39 | 40 | /** 41 | * 标题日期 比如: 2015年10月 42 | */ 43 | private TextView calendarTitleDate; 44 | 45 | //pager允许滑动的最小时间: 1443974400 ==2015/10/05 00:00 46 | private int leftUnix = 1443974400; 47 | //pager允许滑动的最大时间:1467648000 ==2016/7/05 00:00 48 | private int rightUnix = 0; 49 | 50 | 51 | @Override 52 | protected void onCreate(Bundle savedInstanceState) { 53 | super.onCreate(savedInstanceState); 54 | setContentView(R.layout.activity_main); 55 | initLayout(); 56 | initData(); 57 | } 58 | 59 | private void initLayout() { 60 | collapseScrollView = (CollapseScrollView) findViewById(R.id.collapse_scrollview_layout); 61 | 62 | findViewById(R.id.calendar_title_content).setOnClickListener(this); 63 | findViewById(R.id.calendar_title_help).setOnClickListener(this); 64 | calendarTitleToday = (ImageView) findViewById(R.id.calendar_title_today); 65 | calendarTitleToday.setOnClickListener(this); 66 | findViewById(R.id.title_back).setOnClickListener(this); 67 | calendarTitleArrowUp = (RelativeLayout) findViewById(R.id.calendar_title_arrow_up); 68 | calendarHelpContent = (TextView) findViewById(R.id.calendar_help_content); 69 | calendarTitleDate = (TextView) findViewById(R.id.calendar_title_date); 70 | } 71 | 72 | private void initData() { 73 | setTestData(); 74 | //初始化"今天"按钮的显示状态 75 | setToDayIconState(collapseScrollView.cellSelectedIsToday()); 76 | setDateTitle(collapseScrollView.getSelectedUnix()); 77 | Utils.setTitleColor(this, collapseScrollView.getSelectedDayType()); 78 | } 79 | 80 | 81 | private void setTestData() { 82 | //Damontodo 测试 83 | Calendar calendar = Calendar.getInstance(); 84 | calendar.add(Calendar.MONTH,20); 85 | rightUnix = (int) (calendar.getTimeInMillis()/1000L); 86 | Log.d(TAG, "设置测试数据-->>setTestData"); 87 | collapseScrollView.setPagerBoundary(leftUnix, rightUnix); 88 | 89 | } 90 | 91 | /** 92 | * 设置标题日期的内容 93 | * 94 | * @param selectedUnix 选中日期的unix 95 | */ 96 | @UiThread 97 | public void setDateTitle(long selectedUnix) { 98 | calendarTitleDate.setText(DateUtil.formatTime0(selectedUnix, this)); 99 | } 100 | 101 | /** 102 | * @param isShow true:显示"今天"按钮, false: 隐藏 103 | */ 104 | @UiThread 105 | public void setToDayIconState(boolean isShow) { 106 | calendarTitleToday.setVisibility(isShow ? View.INVISIBLE : View.VISIBLE); 107 | } 108 | 109 | /** 110 | * Called when a view has been clicked. 111 | * 112 | * @param v The view that was clicked. 113 | */ 114 | @Override 115 | public void onClick(View v) { 116 | switch (v.getId()) { 117 | case R.id.title_back: 118 | Log.d(TAG, "单击了日历标题的 返回按钮"); 119 | finish(); 120 | break; 121 | case R.id.calendar_title_content: 122 | Log.d(TAG, "单击了日历标题的 内容按钮"); 123 | showYMPicker(); 124 | break; 125 | case R.id.calendar_title_today: 126 | Log.d(TAG, "单击了日历标题的 今天按钮"); 127 | collapseScrollView.moveToToday(); 128 | break; 129 | case R.id.calendar_title_help: 130 | Log.d(TAG, "单击了日历标题的 问号按钮"); 131 | toggleHelpLayout(true); 132 | break; 133 | 134 | default: 135 | //don't forget default 136 | break; 137 | } 138 | } 139 | 140 | @Override 141 | public boolean dispatchTouchEvent(MotionEvent ev) { 142 | if (helpLayoutIsShow()) { 143 | if (ev.getAction() == MotionEvent.ACTION_UP) { 144 | toggleHelpLayout(false); 145 | } 146 | return false; 147 | } 148 | return super.dispatchTouchEvent(ev); 149 | } 150 | 151 | /** 152 | * @return true: 帮助布局已显示 false: 帮助布局隐藏 153 | */ 154 | private boolean helpLayoutIsShow() { 155 | return calendarTitleArrowUp.getVisibility() == View.VISIBLE; 156 | } 157 | 158 | /** 159 | * @param isShow true:显示帮助布局, false: 不显示 160 | */ 161 | private void toggleHelpLayout(boolean isShow) { 162 | calendarTitleArrowUp.setVisibility(isShow ? View.VISIBLE : View.GONE); 163 | calendarHelpContent.setVisibility(isShow ? View.VISIBLE : View.GONE); 164 | } 165 | 166 | private void showYMPicker() { 167 | final long selectTime = collapseScrollView.getSelectedUnix(); 168 | String yearMonth = getString(R.string.year_moth); 169 | YMDPickerView ymdPickerView = new YMDPickerView(this, YMDPickerView.Type.YEAR_MONTH, yearMonth, selectTime); 170 | ymdPickerView.setOnYMDSelectListener(new YMDPickerView.OnYMDSelectListener() { 171 | @Override 172 | public void onYMDSelect(Calendar calendar, int year, int month, int day) { 173 | } 174 | 175 | @Override 176 | public void onYMDSelect(Calendar calendar, int year, int month) { 177 | //点击确定时,调用 178 | // long unix = (calendar.getTimeInMillis() / 1000L); 179 | // Log.d(TAG, "选择的是,year-->>" + year + ", month-->>" + month+", unix-->>"+unix+", selectTime-->>"+selectTime); 180 | collapseScrollView.moveToYearMonth(year, month); 181 | } 182 | }); 183 | ymdPickerView.setMinTime(leftUnix); 184 | ymdPickerView.setMaxTime(rightUnix); 185 | ymdPickerView.show(); 186 | } 187 | } 188 | -------------------------------------------------------------------------------- /app/src/main/java/com/gsh/calendar/MensColorDetailActivity.java: -------------------------------------------------------------------------------- 1 | package com.gsh.calendar; 2 | 3 | import android.app.Activity; 4 | import android.os.Bundle; 5 | 6 | /** 7 | * Created by damon on 1/19/16. 8 | * Activity 9 | */ 10 | public class MensColorDetailActivity extends Activity { 11 | 12 | private final String TAG = "MensColorDetailActivity"; 13 | 14 | @Override 15 | protected void onCreate(Bundle savedInstanceState) { 16 | super.onCreate(savedInstanceState); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /app/src/main/java/com/gsh/calendar/adapter/CalendarAdapter.java: -------------------------------------------------------------------------------- 1 | package com.gsh.calendar.adapter; 2 | 3 | 4 | import android.support.v4.view.PagerAdapter; 5 | import android.view.View; 6 | import android.view.ViewGroup; 7 | 8 | /** 9 | * Created by damon on 1/5/16. 10 | * 日历视图的适配器 11 | */ 12 | public class CalendarAdapter extends PagerAdapter { 13 | private final String TAG = "CalendarViewAdapter"; 14 | public v[] views; 15 | 16 | private String type; 17 | 18 | public String getType() { 19 | return type; 20 | } 21 | 22 | public void setType(String type) { 23 | this.type = type; 24 | } 25 | 26 | public CalendarAdapter(v[] views) { 27 | super(); 28 | this.views = views; 29 | } 30 | 31 | @Override 32 | public Object instantiateItem(ViewGroup container, int position) { 33 | View view = views[position]; 34 | int childCount = container.getChildCount(); 35 | if (view != null) { 36 | container.addView(view); 37 | // Log.d(TAG, "type-->>" + type + ", 日历CalendarAdapter-->>添加--子View>>" + position + ", childCount-->>" + childCount + ", view.getId-->>" + view.getId()); 38 | } 39 | return view; 40 | } 41 | 42 | @Override 43 | public int getCount() { 44 | return views.length; 45 | } 46 | 47 | @Override 48 | public boolean isViewFromObject(View view, Object object) { 49 | return view == object; 50 | } 51 | 52 | @Override 53 | public void destroyItem(ViewGroup container, int position, Object object) { 54 | View view = views[position]; 55 | if (view != null) { 56 | // Log.d(TAG, "type-->>" + type + ", 日历CalendarAdapter-->>移除子View-->>" + position + ", childCount-->>" + container.getChildCount() + ", view.getId-->>" + view.getId()); 57 | container.removeView(view); 58 | } 59 | } 60 | 61 | @Override 62 | public void notifyDataSetChanged() { 63 | super.notifyDataSetChanged(); 64 | } 65 | 66 | @Override 67 | public int getItemPosition(Object object) { 68 | return super.getItemPosition(object); 69 | } 70 | } -------------------------------------------------------------------------------- /app/src/main/java/com/gsh/calendar/data/CalendarOneScreenDataMonth.java: -------------------------------------------------------------------------------- 1 | package com.gsh.calendar.data; 2 | 3 | import android.support.annotation.IntRange; 4 | import android.support.annotation.NonNull; 5 | 6 | import com.gsh.calendar.widget.CalendarConstant; 7 | 8 | import java.io.Serializable; 9 | import java.util.HashMap; 10 | import java.util.Map; 11 | 12 | /** 13 | * Created by damon on 1/8/16. 14 | * 日历月视图 一屏幕的数据 15 | */ 16 | public class CalendarOneScreenDataMonth implements Serializable { 17 | 18 | private int year; 19 | 20 | @CalendarConstant.Month 21 | private int month; 22 | 23 | /** 24 | * 选中的天的位置 25 | */ 26 | @IntRange(from = 1, to = 42) 27 | private int selectedPosition; 28 | 29 | /** 30 | * 只有在CalendarConstant.CALENDAR_START --经期最后一天所在的月份 的范围内才是有效的 31 | */ 32 | @CalendarConstant.PagerValidState 33 | private int invalidState; 34 | 35 | /** 36 | * key: 为约定好的7列6行 37 | * 只提供get方法, 不需要判断为空 38 | */ 39 | @NonNull 40 | Map mapDay = new HashMap<>(); 41 | 42 | public int getYear() { 43 | return year; 44 | } 45 | 46 | public void setYear(int year) { 47 | this.year = year; 48 | } 49 | 50 | public int getMonth() { 51 | return month; 52 | } 53 | 54 | public void setMonth(int month) { 55 | this.month = month; 56 | } 57 | 58 | @NonNull 59 | public Map getMapDay() { 60 | return mapDay; 61 | } 62 | 63 | public int getSelectedPosition() { 64 | return selectedPosition; 65 | } 66 | 67 | public void setSelectedPosition(int selectedPosition) { 68 | this.selectedPosition = selectedPosition; 69 | } 70 | 71 | public int getInvalidState() { 72 | return invalidState; 73 | } 74 | 75 | public void setInvalidState(int invalidState) { 76 | this.invalidState = invalidState; 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /app/src/main/java/com/gsh/calendar/data/CalendarOneScreenDataWeek.java: -------------------------------------------------------------------------------- 1 | package com.gsh.calendar.data; 2 | 3 | import android.support.annotation.IntRange; 4 | import android.support.annotation.NonNull; 5 | 6 | import com.gsh.calendar.widget.CalendarConstant; 7 | 8 | import java.io.Serializable; 9 | import java.util.HashMap; 10 | import java.util.Map; 11 | 12 | /** 13 | * Created by damon on 1/8/16. 14 | * 日历周视图 一屏幕的数据 15 | */ 16 | public class CalendarOneScreenDataWeek implements Serializable { 17 | 18 | private int year; 19 | 20 | /** 21 | * 一年当中的第几周 22 | */ 23 | private int weekOfYear; 24 | 25 | /** 26 | * 选中的天的位置 27 | */ 28 | @IntRange(from = 1, to = 7) 29 | private int selectedPosition; 30 | /** 31 | * 只有在CalendarConstant.CALENDAR_START --经期最后一天所在的月份 的范围内才是有效的 32 | */ 33 | @CalendarConstant.PagerValidState 34 | private int invalidState; 35 | 36 | /** 37 | * key: 为约定好的7列1行 38 | * 只提供get方法, 不需要判断为空 39 | */ 40 | @NonNull 41 | Map mapDay = new HashMap<>(); 42 | 43 | public CalendarOneScreenDataWeek() { 44 | } 45 | 46 | public int getYear() { 47 | return year; 48 | } 49 | 50 | public void setYear(int year) { 51 | this.year = year; 52 | } 53 | 54 | public int getWeekOfYear() { 55 | return weekOfYear; 56 | } 57 | 58 | public void setWeekOfYear(int weekOfYear) { 59 | this.weekOfYear = weekOfYear; 60 | } 61 | 62 | @NonNull 63 | public Map getMapDay() { 64 | return mapDay; 65 | } 66 | 67 | public int getSelectedPosition() { 68 | return selectedPosition; 69 | } 70 | 71 | public void setSelectedPosition(int selectedPosition) { 72 | this.selectedPosition = selectedPosition; 73 | } 74 | 75 | public int getInvalidState() { 76 | return invalidState; 77 | } 78 | 79 | public void setInvalidState(int invalidState) { 80 | this.invalidState = invalidState; 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /app/src/main/java/com/gsh/calendar/data/DateData.java: -------------------------------------------------------------------------------- 1 | package com.gsh.calendar.data; 2 | 3 | import com.gsh.calendar.widget.CalendarConstant; 4 | 5 | import java.io.Serializable; 6 | import java.util.Date; 7 | 8 | /** 9 | * Created by damon on 1/7/16. 10 | */ 11 | public class DateData implements Serializable { 12 | 13 | private int year; 14 | @CalendarConstant.Month 15 | private int month; 16 | private int day; 17 | @CalendarConstant.Week 18 | private int week; 19 | 20 | /** 21 | * 该时间点的unix时间戳(作用了只是为了方便获取) 22 | * 对准到00:00点的unix时间戳 23 | */ 24 | private long unix; 25 | 26 | public int getYear() { 27 | return year; 28 | } 29 | 30 | public void setYear(int year) { 31 | this.year = year; 32 | } 33 | 34 | public int getMonth() { 35 | return month; 36 | } 37 | 38 | public void setMonth(int month) { 39 | this.month = month; 40 | } 41 | 42 | public int getDay() { 43 | return day; 44 | } 45 | 46 | public void setDay(int day) { 47 | this.day = day; 48 | } 49 | 50 | public long getUnix() { 51 | return unix; 52 | } 53 | 54 | public void setUnix(long unix) { 55 | this.unix = unix; 56 | } 57 | 58 | 59 | public int getWeek() { 60 | return week; 61 | } 62 | 63 | public void setWeek(int week) { 64 | this.week = week; 65 | } 66 | 67 | @Override 68 | public String toString() { 69 | return "DateData{" + 70 | "year=" + year + 71 | ", month=" + month + 72 | ", day=" + day + 73 | ", week=" + week + 74 | ", unix=" + unix + 75 | ", unix格式化=" + new Date(unix * 1000L) + 76 | '}'; 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /app/src/main/java/com/gsh/calendar/data/DayData.java: -------------------------------------------------------------------------------- 1 | package com.gsh.calendar.data; 2 | 3 | import com.gsh.calendar.widget.CalendarConstant; 4 | 5 | import java.io.Serializable; 6 | 7 | /** 8 | * Created by damon on 1/7/16. 9 | * 日单元格的数据 10 | */ 11 | public class DayData extends DateData implements Serializable { 12 | 13 | 14 | /** 15 | * text的Top的文本 16 | */ 17 | @CalendarConstant.TopType 18 | private int topType; 19 | 20 | /** 21 | * text的Bottom是否有圆点 22 | */ 23 | private boolean hasCircleBottom; 24 | 25 | /** 26 | * 日历中 "日" 的类型 27 | */ 28 | @CalendarConstant.DayType 29 | private int dayType; 30 | 31 | /** 32 | * 日历中 "日" 是否可以点击 33 | * true: 可点击 34 | * false: 不可点击,且字体颜色为灰色 35 | */ 36 | private boolean isClickable; 37 | 38 | public boolean isHasCircleBottom() { 39 | return hasCircleBottom; 40 | } 41 | 42 | public void setHasCircleBottom(boolean hasCircleBottom) { 43 | this.hasCircleBottom = hasCircleBottom; 44 | } 45 | 46 | public int getTopType() { 47 | return topType; 48 | } 49 | 50 | public void setTopType(int topType) { 51 | this.topType = topType; 52 | } 53 | @CalendarConstant.DayType 54 | public int getDayType() { 55 | return dayType; 56 | } 57 | 58 | public void setDayType(int dayType) { 59 | this.dayType = dayType; 60 | } 61 | 62 | public boolean isClickable() { 63 | return isClickable; 64 | } 65 | 66 | public void setClickable(boolean clickable) { 67 | isClickable = clickable; 68 | } 69 | 70 | @Override 71 | public String toString() { 72 | return "DayData{" + 73 | "topType=" + topType + 74 | ", hasCircleBottom=" + hasCircleBottom + 75 | ", dayType=" + dayType + 76 | ", isClickable=" + isClickable + 77 | "} " + super.toString(); 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /app/src/main/java/com/gsh/calendar/util/Utils.java: -------------------------------------------------------------------------------- 1 | package com.gsh.calendar.util; 2 | 3 | import android.content.Context; 4 | import android.graphics.drawable.Drawable; 5 | import android.support.annotation.UiThread; 6 | import android.view.MotionEvent; 7 | 8 | import com.gsh.calendar.MainActivity; 9 | import com.gsh.calendar.R; 10 | import com.gsh.calendar.widget.CalendarConstant; 11 | 12 | /** 13 | * Created by damon on 1/5/16. 14 | */ 15 | public class Utils { 16 | public static int pxValue2dipValue(Context context, float pxValue) { 17 | float scale = context.getResources().getDisplayMetrics().density; 18 | return (int) (pxValue / scale + 0.5f); 19 | } 20 | 21 | public static int dipValue2PxValue(Context context, float dipValue) { 22 | float scale = context.getResources().getDisplayMetrics().density; 23 | return (int) (dipValue * scale + 0.5f); 24 | } 25 | 26 | /** 27 | * 将触摸的Action转换成String 28 | * 29 | * @param action 30 | * @return 31 | */ 32 | public static String actionToString(int action) { 33 | switch (action) { 34 | case MotionEvent.ACTION_DOWN: 35 | return "ACTION_DOWN"; 36 | case MotionEvent.ACTION_UP: 37 | return "ACTION_UP"; 38 | case MotionEvent.ACTION_CANCEL: 39 | return "ACTION_CANCEL"; 40 | case MotionEvent.ACTION_OUTSIDE: 41 | return "ACTION_OUTSIDE"; 42 | case MotionEvent.ACTION_MOVE: 43 | return "ACTION_MOVE"; 44 | case MotionEvent.ACTION_HOVER_MOVE: 45 | return "ACTION_HOVER_MOVE"; 46 | case MotionEvent.ACTION_SCROLL: 47 | return "ACTION_SCROLL"; 48 | case MotionEvent.ACTION_HOVER_ENTER: 49 | return "ACTION_HOVER_ENTER"; 50 | case MotionEvent.ACTION_HOVER_EXIT: 51 | return "ACTION_HOVER_EXIT"; 52 | } 53 | int index = (action & MotionEvent.ACTION_POINTER_INDEX_MASK) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT; 54 | switch (action & MotionEvent.ACTION_MASK) { 55 | case MotionEvent.ACTION_POINTER_DOWN: 56 | return "ACTION_POINTER_DOWN(" + index + ")"; 57 | case MotionEvent.ACTION_POINTER_UP: 58 | return "ACTION_POINTER_UP(" + index + ")"; 59 | default: 60 | return Integer.toString(action); 61 | } 62 | } 63 | 64 | /** 65 | * 更新title的相关颜色 66 | * 67 | * @param mainActivity mainActivity 68 | * @param dayType 选中天的类型 69 | */ 70 | @UiThread 71 | public static void setTitleColor(MainActivity mainActivity, @CalendarConstant.DayType int dayType) { 72 | 73 | boolean isSelected = true; 74 | int bgColor = 0; 75 | int bgBorderColor = 0; 76 | Drawable bgDrawable = null; 77 | switch (dayType) { 78 | case CalendarConstant.DAY_TYPE_SAFE: 79 | isSelected = false; 80 | bgDrawable = mainActivity.getResources().getDrawable(R.drawable.shape_border_bg); 81 | bgColor = mainActivity.getResources().getColor(R.color.color_c3); 82 | break; 83 | case CalendarConstant.DAY_TYPE_MENS_START: 84 | case CalendarConstant.DAY_TYPE_MENS_END: 85 | case CalendarConstant.DAY_TYPE_MENS_ING: 86 | case CalendarConstant.DAY_TYPE_MENS_ONLYONE: 87 | bgColor = mainActivity.getResources().getColor(R.color.color_mens); 88 | bgBorderColor = mainActivity.getResources().getColor(R.color.color_mens); 89 | 90 | break; 91 | case CalendarConstant.DAY_TYPE_EASY_START: 92 | case CalendarConstant.DAY_TYPE_EASY_END: 93 | case CalendarConstant.DAY_TYPE_EASY_ING: 94 | case CalendarConstant.DAY_TYPE_EASY_ONLYONE0: 95 | bgColor = mainActivity.getResources().getColor(R.color.color_easy); 96 | bgBorderColor = mainActivity.getResources().getColor(R.color.color_easy); 97 | break; 98 | case CalendarConstant.DAY_TYPE_EASY_ONLYONE1: 99 | case CalendarConstant.DAY_TYPE_OVULATE: 100 | bgColor = mainActivity.getResources().getColor(R.color.color_ovulation); 101 | bgBorderColor = mainActivity.getResources().getColor(R.color.color_ovulation); 102 | break; 103 | } 104 | //返回键 105 | mainActivity.findViewById(R.id.title_back).setSelected(isSelected); 106 | //日历内容 107 | mainActivity.findViewById(R.id.calendar_title_date).setSelected(isSelected); 108 | //向下箭头("日历内容"右侧) 109 | mainActivity.findViewById(R.id.calendar_title_down).setSelected(isSelected); 110 | //今天按钮 111 | mainActivity.findViewById(R.id.calendar_title_today).setSelected(isSelected); 112 | //帮助按钮 113 | mainActivity.findViewById(R.id.calendar_title_help).setSelected(isSelected); 114 | 115 | mainActivity.findViewById(R.id.sunday).setSelected(isSelected); 116 | mainActivity.findViewById(R.id.monday).setSelected(isSelected); 117 | mainActivity.findViewById(R.id.tuesday).setSelected(isSelected); 118 | mainActivity.findViewById(R.id.wednesday).setSelected(isSelected); 119 | mainActivity.findViewById(R.id.thursday).setSelected(isSelected); 120 | mainActivity.findViewById(R.id.friday).setSelected(isSelected); 121 | mainActivity.findViewById(R.id.saturday).setSelected(isSelected); 122 | 123 | //title布局颜色 124 | mainActivity.findViewById(R.id.calendar_title_rl).setBackgroundColor(bgColor); 125 | //week布局颜色 126 | mainActivity.findViewById(R.id.calendar_week_ll).setBackgroundColor(bgColor); 127 | if (bgDrawable != null) { 128 | //安全期 129 | mainActivity.findViewById(R.id.week_border).setBackground(bgDrawable); 130 | } else { 131 | //非安全期 132 | mainActivity.findViewById(R.id.week_border).setBackgroundColor(bgBorderColor); 133 | } 134 | } 135 | 136 | } 137 | -------------------------------------------------------------------------------- /app/src/main/java/com/gsh/calendar/widget/CalendarConstant.java: -------------------------------------------------------------------------------- 1 | package com.gsh.calendar.widget; 2 | 3 | import android.support.annotation.IntDef; 4 | 5 | import java.lang.annotation.Retention; 6 | import java.lang.annotation.RetentionPolicy; 7 | import java.util.Calendar; 8 | 9 | /** 10 | * Created by damon on 1/8/16. 11 | */ 12 | public class CalendarConstant { 13 | 14 | /** 15 | * 日历(月视图)的开始时间点: 2010/01/01 00:00 ==1262275200 16 | */ 17 | public static final int CALENDAR_START_MONTH = 1262275200; 18 | 19 | /** 20 | * 日历(周视图)的开始时间点: 2009/12/27 00:00 ==1261843200 21 | */ 22 | public static final int CALENDAR_START_WEEK = 1261843200; 23 | 24 | //测试 2015/10/01 00:00 25 | // public static final int CALENDAR_START = 1443628800; 26 | 27 | /** 28 | * TOTAL_COL: 7列 29 | **/ 30 | public static final int TOTAL_COL = Calendar.SATURDAY; 31 | 32 | /** 33 | * TOTAL_ROW_MONTH: 6行 34 | **/ 35 | public static final int TOTAL_ROW_MONTH = 6; 36 | /** 37 | * 周视图行数 38 | */ 39 | public static final int TOTAL_ROW_WEEK = 1; 40 | 41 | 42 | /** 43 | * 安全期 44 | */ 45 | public static final int DAY_TYPE_SAFE = 100; 46 | /** 47 | * 月经开始 48 | */ 49 | public static final int DAY_TYPE_MENS_START = 101; 50 | 51 | /** 52 | * 月经进行中... 53 | */ 54 | public static final int DAY_TYPE_MENS_ING = 102; 55 | /** 56 | * 月经结束 57 | */ 58 | public static final int DAY_TYPE_MENS_END = 103; 59 | 60 | /** 61 | * 月经只有一天 62 | */ 63 | public static final int DAY_TYPE_MENS_ONLYONE = 104; 64 | 65 | /** 66 | * 易孕开始 67 | */ 68 | public static final int DAY_TYPE_EASY_START = 105; 69 | 70 | /** 71 | * 易孕中的非排卵期.... 72 | */ 73 | public static final int DAY_TYPE_EASY_ING = 106; 74 | 75 | /** 76 | * 易孕结束 77 | */ 78 | public static final int DAY_TYPE_EASY_END = 107; 79 | 80 | /** 81 | * 排卵期 82 | */ 83 | public static final int DAY_TYPE_OVULATE = 108; 84 | 85 | /** 86 | * 易孕期只有一天(且不是排卵日) 87 | */ 88 | public static final int DAY_TYPE_EASY_ONLYONE0 = 109; 89 | /** 90 | * 易孕期只有一天(且是排卵日) 91 | */ 92 | public static final int DAY_TYPE_EASY_ONLYONE1 = 110; 93 | 94 | @IntDef({DAY_TYPE_SAFE, DAY_TYPE_MENS_START, DAY_TYPE_MENS_ING, DAY_TYPE_MENS_END, DAY_TYPE_MENS_ONLYONE, DAY_TYPE_EASY_START, DAY_TYPE_EASY_ING, DAY_TYPE_EASY_END, DAY_TYPE_OVULATE, DAY_TYPE_EASY_ONLYONE0, DAY_TYPE_EASY_ONLYONE1}) 95 | @Retention(RetentionPolicy.SOURCE) 96 | public @interface DayType { 97 | } 98 | 99 | /** 100 | * "日"上方文字 "今天" 101 | */ 102 | public static final int TOP_TYPE_TODAY = 0; 103 | /** 104 | * "日"上方文字 月份 比如:"3月" 105 | */ 106 | public static final int TOP_TYPE_FIRST_DAY = 1; 107 | /** 108 | * "日"上方文字 没有 109 | */ 110 | public static final int TOP_TYPE_NONE = -1; 111 | 112 | @IntDef({TOP_TYPE_TODAY, TOP_TYPE_FIRST_DAY}) 113 | @Retention(RetentionPolicy.SOURCE) 114 | public @interface TopType { 115 | } 116 | 117 | /** 118 | * 日历 当前页有效 119 | */ 120 | public static final int PAGER_VALID = 0; 121 | /** 122 | * 日历 当前页无效, 左边越界了 123 | */ 124 | public static final int PAGER_INVALID_LEFT = 1; 125 | /** 126 | * 日历 当前页无效, 右边越界了 127 | */ 128 | public static final int PAGER_INVALID_RIGHT = 2; 129 | 130 | @IntDef({PAGER_VALID, PAGER_INVALID_LEFT, PAGER_INVALID_RIGHT}) 131 | @Retention(RetentionPolicy.SOURCE) 132 | public @interface PagerValidState { 133 | } 134 | 135 | /** 136 | * 月份枚举 137 | */ 138 | @IntDef({Calendar.JANUARY, Calendar.FEBRUARY, Calendar.MARCH, Calendar.APRIL, Calendar.MAY, Calendar.JUNE, Calendar.JULY, Calendar.AUGUST, Calendar.SEPTEMBER, Calendar.OCTOBER, Calendar.NOVEMBER, Calendar.DECEMBER}) 139 | @Retention(RetentionPolicy.SOURCE) 140 | public @interface Month { 141 | } 142 | 143 | /** 144 | * 星期枚举 145 | */ 146 | @IntDef({Calendar.MONDAY, Calendar.TUESDAY, Calendar.WEDNESDAY, Calendar.THURSDAY, Calendar.FRIDAY, Calendar.SATURDAY, Calendar.SUNDAY}) 147 | @Retention(RetentionPolicy.SOURCE) 148 | public @interface Week { 149 | } 150 | 151 | /** 152 | * cell的背景颜色的top和Bottom的偏移 153 | */ 154 | public static final float BACKGROUND_DELTA0 = 0.2F; 155 | /** 156 | * cell 绘制圆弧相对cell背景颜色圆心的偏移 157 | */ 158 | public static final float BACKGROUND_DELTA1 = 0.1F; 159 | 160 | 161 | /** 162 | * 左侧圆弧的起始位置 163 | */ 164 | public static final float START_ANGLE_LEFT = 90F; 165 | /** 166 | * 右侧圆弧的起始位置 167 | */ 168 | public static final float START_ANGLE_RIGHT = 270F; 169 | /** 170 | * 圆弧sweep的度数 171 | */ 172 | public static final float SWEEP_ANGLE = 180F; 173 | /** 174 | * 绘制事件的圆点 175 | */ 176 | public static final float EVENT_SIGN_RADIUS = 8F; 177 | 178 | /** 179 | * 该数组正好和日历中的显示一样的 180 | * 注意: 列对应的Calendar.SUNDAY--Calendar.SATURDAY(第一列没有用) 181 | */ 182 | public final static int[][] CELL_ARRAY_MONTH = new int[][]{ 183 | {0, 1, 2, 3, 4, 5, 6, 7}, 184 | {0, 8, 9, 10, 11, 12, 13, 14}, 185 | {0, 15, 16, 17, 18, 19, 20, 21}, 186 | {0, 22, 23, 24, 25, 26, 27, 28}, 187 | {0, 29, 30, 31, 32, 33, 34, 35}, 188 | {0, 36, 37, 38, 39, 40, 41, 42} 189 | }; 190 | /** 191 | * 该数组正好和日历中的显示一样的 192 | * 注意: 列对应的Calendar.SUNDAY--Calendar.SATURDAY(第一列没有用) 193 | */ 194 | public final static int[][] CELL_ARRAY_WEEK = new int[][]{ 195 | {0, 1, 2, 3, 4, 5, 6, 7} 196 | }; 197 | 198 | /** 199 | * 通过位置获得行数 200 | * 201 | * @param position 位置 比如:28; 202 | * @return 203 | */ 204 | public static int getRowFromPosition(int position, boolean isMonth) { 205 | int row = 0; 206 | if (isMonth) { 207 | for (int i = 0; i < 6; i++) { 208 | for (int j = 0; j < 8; j++) { 209 | if (CELL_ARRAY_MONTH[i][j] == position) { 210 | return i; 211 | } 212 | } 213 | } 214 | } else { 215 | return 0; 216 | } 217 | return row; 218 | } 219 | } 220 | -------------------------------------------------------------------------------- /app/src/main/java/com/gsh/calendar/widget/CalendarViewPager.java: -------------------------------------------------------------------------------- 1 | package com.gsh.calendar.widget; 2 | 3 | import android.content.Context; 4 | import android.graphics.Canvas; 5 | import android.support.v4.view.ViewPager; 6 | import android.util.AttributeSet; 7 | 8 | /** 9 | * Created by damon on 1/6/16. 10 | */ 11 | public class CalendarViewPager extends ViewPager { 12 | private final String TAG = "CalendarViewPager"; 13 | 14 | public CalendarViewPager(Context context) { 15 | super(context); 16 | init(); 17 | } 18 | 19 | public CalendarViewPager(Context context, AttributeSet attrs) { 20 | super(context, attrs); 21 | init(); 22 | } 23 | 24 | private void init() { 25 | } 26 | 27 | @Override 28 | protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 29 | super.onMeasure(widthMeasureSpec, heightMeasureSpec); 30 | // Log.d(TAG, "onMeasure-->>"); 31 | } 32 | 33 | @Override 34 | protected void onLayout(boolean changed, int l, int t, int r, int b) { 35 | super.onLayout(changed, l, t, r, b); 36 | // Log.d(TAG, "onLayout-->>"); 37 | } 38 | 39 | @Override 40 | protected void onDraw(Canvas canvas) { 41 | super.onDraw(canvas); 42 | } 43 | 44 | } 45 | -------------------------------------------------------------------------------- /app/src/main/java/com/gsh/calendar/widget/InnerScrollView.java: -------------------------------------------------------------------------------- 1 | package com.gsh.calendar.widget; 2 | 3 | import android.content.Context; 4 | import android.util.AttributeSet; 5 | import android.view.MotionEvent; 6 | import android.widget.ScrollView; 7 | 8 | public class InnerScrollView extends ScrollView { 9 | private final String TAG = "InnerScrollView"; 10 | 11 | /** 12 | * 判断是否需要拦截 13 | */ 14 | public boolean isIntercept = false; 15 | 16 | public InnerScrollView(Context context, AttributeSet attrs) { 17 | super(context, attrs); 18 | } 19 | 20 | @Override 21 | public boolean onInterceptTouchEvent(MotionEvent ev) { 22 | // Log.d(TAG, "onInterceptTouchEvent-->>MotionEvent-->>" + Utils.actionToString(ev.getAction()) + ", isIntercept-->>" + isIntercept); 23 | return super.onInterceptTouchEvent(ev); 24 | } 25 | 26 | @Override 27 | public boolean onTouchEvent(MotionEvent ev) { 28 | // Log.d(TAG, "onTouchEvent-->>MotionEvent-->>" + Utils.actionToString(ev.getAction()) + ", isIntercept-->>" + isIntercept + ", getScrollY-->>" + getScrollY()); 29 | boolean isFuck = isIntercept; 30 | if (ev.getAction() == MotionEvent.ACTION_UP) { 31 | isIntercept = false; 32 | } 33 | if (isFuck) { 34 | return super.onTouchEvent(ev); 35 | } else { 36 | return false; 37 | } 38 | } 39 | 40 | @Override 41 | public boolean dispatchTouchEvent(MotionEvent ev) { 42 | // Log.d(TAG, "dispatchTouchEvent-->>MotionEvent-->>" + Utils.actionToString(ev.getAction()) + ", isIntercept-->>" + isIntercept); 43 | super.dispatchTouchEvent(ev); 44 | return true; 45 | } 46 | 47 | @Override 48 | protected void onLayout(boolean changed, int l, int t, int r, int b) { 49 | super.onLayout(changed, l, t, r, b); 50 | // Log.d(TAG, "onLayout-->>getWidth-->>" + getWidth() + ", height-->>" + getHeight()); 51 | } 52 | } -------------------------------------------------------------------------------- /app/src/main/res/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/.DS_Store -------------------------------------------------------------------------------- /app/src/main/res/color/selector_title_date_color.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/color/selector_week_color.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/.DS_Store -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calendar_button_amount1_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calendar_button_amount1_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calendar_button_amount1_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calendar_button_amount1_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calendar_button_amount2_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calendar_button_amount2_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calendar_button_amount2_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calendar_button_amount2_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calendar_button_amount3_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calendar_button_amount3_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calendar_button_amount3_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calendar_button_amount3_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calendar_button_amount4_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calendar_button_amount4_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calendar_button_amount4_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calendar_button_amount4_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calendar_button_amount5_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calendar_button_amount5_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calendar_button_amount5_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calendar_button_amount5_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calendar_button_pain1_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calendar_button_pain1_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calendar_button_pain1_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calendar_button_pain1_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calendar_button_pain2_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calendar_button_pain2_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calendar_button_pain2_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calendar_button_pain2_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calendar_button_pain3_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calendar_button_pain3_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calendar_button_pain3_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calendar_button_pain3_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calender_bg_fertile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calender_bg_fertile.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calender_bg_period.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calender_bg_period.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calender_button_amount1_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calender_button_amount1_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calender_button_amount1_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calender_button_amount1_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calender_button_amount2_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calender_button_amount2_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calender_button_amount2_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calender_button_amount2_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calender_button_amount3_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calender_button_amount3_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calender_button_amount3_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calender_button_amount3_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calender_button_amount4_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calender_button_amount4_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calender_button_amount4_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calender_button_amount4_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calender_button_amount5_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calender_button_amount5_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calender_button_amount5_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calender_button_amount5_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calender_button_color1_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calender_button_color1_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calender_button_color1_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calender_button_color1_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calender_button_color2_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calender_button_color2_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calender_button_color2_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calender_button_color2_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calender_button_color3_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calender_button_color3_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calender_button_color3_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calender_button_color3_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calender_button_color4_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calender_button_color4_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calender_button_color4_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calender_button_color4_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calender_button_color5_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calender_button_color5_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calender_button_color5_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calender_button_color5_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calender_button_down_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calender_button_down_black.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calender_button_down_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calender_button_down_white.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calender_button_help_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calender_button_help_black.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calender_button_help_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calender_button_help_white.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calender_button_menses1_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calender_button_menses1_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calender_button_menses1_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calender_button_menses1_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calender_button_menses2_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calender_button_menses2_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calender_button_menses2_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calender_button_menses2_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calender_button_menses3_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calender_button_menses3_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calender_button_menses3_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calender_button_menses3_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calender_button_next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calender_button_next.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calender_button_pain1_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calender_button_pain1_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calender_button_pain1_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calender_button_pain1_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calender_button_pain2_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calender_button_pain2_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calender_button_pain2_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calender_button_pain2_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calender_button_pain3_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calender_button_pain3_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calender_button_pain3_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calender_button_pain3_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calender_button_today_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calender_button_today_black.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calender_button_today_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calender_button_today_white.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/calender_help_icon_sanjiao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/calender_help_icon_sanjiao.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/public_button_back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/public_button_back.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/public_button_back_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/public_button_back_white.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/public_photo_yingying.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xhdpi/public_photo_yingying.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/.DS_Store -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calendar_button_amount1_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calendar_button_amount1_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calendar_button_amount1_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calendar_button_amount1_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calendar_button_amount2_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calendar_button_amount2_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calendar_button_amount2_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calendar_button_amount2_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calendar_button_amount3_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calendar_button_amount3_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calendar_button_amount3_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calendar_button_amount3_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calendar_button_amount4_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calendar_button_amount4_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calendar_button_amount4_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calendar_button_amount4_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calendar_button_amount5_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calendar_button_amount5_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calendar_button_amount5_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calendar_button_amount5_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calendar_button_pain1_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calendar_button_pain1_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calendar_button_pain1_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calendar_button_pain1_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calendar_button_pain2_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calendar_button_pain2_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calendar_button_pain2_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calendar_button_pain2_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calendar_button_pain3_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calendar_button_pain3_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calendar_button_pain3_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calendar_button_pain3_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calender_bg_fertile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calender_bg_fertile.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calender_bg_period.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calender_bg_period.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calender_button_amount1_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calender_button_amount1_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calender_button_amount1_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calender_button_amount1_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calender_button_amount2_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calender_button_amount2_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calender_button_amount2_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calender_button_amount2_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calender_button_amount3_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calender_button_amount3_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calender_button_amount3_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calender_button_amount3_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calender_button_amount4_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calender_button_amount4_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calender_button_amount4_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calender_button_amount4_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calender_button_amount5_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calender_button_amount5_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calender_button_amount5_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calender_button_amount5_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calender_button_color1_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calender_button_color1_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calender_button_color1_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calender_button_color1_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calender_button_color2_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calender_button_color2_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calender_button_color2_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calender_button_color2_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calender_button_color3_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calender_button_color3_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calender_button_color3_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calender_button_color3_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calender_button_color4_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calender_button_color4_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calender_button_color4_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calender_button_color4_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calender_button_color5_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calender_button_color5_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calender_button_color5_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calender_button_color5_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calender_button_down_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calender_button_down_black.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calender_button_down_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calender_button_down_white.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calender_button_help_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calender_button_help_black.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calender_button_help_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calender_button_help_white.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calender_button_menses1_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calender_button_menses1_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calender_button_menses1_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calender_button_menses1_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calender_button_menses2_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calender_button_menses2_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calender_button_menses2_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calender_button_menses2_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calender_button_menses3_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calender_button_menses3_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calender_button_menses3_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calender_button_menses3_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calender_button_next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calender_button_next.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calender_button_pain1_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calender_button_pain1_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calender_button_pain1_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calender_button_pain1_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calender_button_pain2_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calender_button_pain2_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calender_button_pain2_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calender_button_pain2_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calender_button_pain3_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calender_button_pain3_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calender_button_pain3_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calender_button_pain3_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calender_button_today_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calender_button_today_black.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calender_button_today_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calender_button_today_white.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/calender_help_icon_sanjiao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/calender_help_icon_sanjiao.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/public_button_back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/public_button_back.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/public_button_back_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/public_button_back_white.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/public_photo_yingying.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxhdpi/public_photo_yingying.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/.DS_Store -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calendar_button_amount1_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calendar_button_amount1_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calendar_button_amount1_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calendar_button_amount1_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calendar_button_amount2_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calendar_button_amount2_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calendar_button_amount2_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calendar_button_amount2_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calendar_button_amount3_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calendar_button_amount3_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calendar_button_amount3_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calendar_button_amount3_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calendar_button_amount4_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calendar_button_amount4_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calendar_button_amount4_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calendar_button_amount4_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calendar_button_amount5_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calendar_button_amount5_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calendar_button_amount5_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calendar_button_amount5_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calendar_button_pain1_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calendar_button_pain1_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calendar_button_pain1_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calendar_button_pain1_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calendar_button_pain2_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calendar_button_pain2_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calendar_button_pain2_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calendar_button_pain2_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calendar_button_pain3_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calendar_button_pain3_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calendar_button_pain3_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calendar_button_pain3_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calender_bg_fertile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calender_bg_fertile.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calender_bg_period.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calender_bg_period.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calender_button_amount1_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calender_button_amount1_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calender_button_amount1_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calender_button_amount1_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calender_button_amount2_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calender_button_amount2_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calender_button_amount2_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calender_button_amount2_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calender_button_amount3_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calender_button_amount3_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calender_button_amount3_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calender_button_amount3_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calender_button_amount4_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calender_button_amount4_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calender_button_amount4_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calender_button_amount4_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calender_button_amount5_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calender_button_amount5_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calender_button_amount5_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calender_button_amount5_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calender_button_color1_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calender_button_color1_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calender_button_color1_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calender_button_color1_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calender_button_color2_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calender_button_color2_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calender_button_color2_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calender_button_color2_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calender_button_color3_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calender_button_color3_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calender_button_color3_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calender_button_color3_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calender_button_color4_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calender_button_color4_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calender_button_color4_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calender_button_color4_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calender_button_color5_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calender_button_color5_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calender_button_color5_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calender_button_color5_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calender_button_down_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calender_button_down_black.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calender_button_down_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calender_button_down_white.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calender_button_help_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calender_button_help_black.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calender_button_help_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calender_button_help_white.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calender_button_menses1_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calender_button_menses1_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calender_button_menses1_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calender_button_menses1_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calender_button_menses2_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calender_button_menses2_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calender_button_menses2_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calender_button_menses2_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calender_button_menses3_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calender_button_menses3_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calender_button_menses3_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calender_button_menses3_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calender_button_next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calender_button_next.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calender_button_pain1_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calender_button_pain1_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calender_button_pain1_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calender_button_pain1_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calender_button_pain2_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calender_button_pain2_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calender_button_pain2_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calender_button_pain2_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calender_button_pain3_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calender_button_pain3_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calender_button_pain3_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calender_button_pain3_select.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calender_button_today_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calender_button_today_black.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calender_button_today_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calender_button_today_white.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/calender_help_icon_sanjiao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/calender_help_icon_sanjiao.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/public_button_back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/public_button_back.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/public_button_back_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/public_button_back_white.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/public_photo_yingying.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/drawable-xxxhdpi/public_photo_yingying.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/selector_back.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/selector_down.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/selector_help.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/selector_help_icon_sanjiao.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/selector_today.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_border_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_circle_easy.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_circle_easy_detail.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_circle_mens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_circle_mens0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_circle_mens0_detail.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_circle_mens_detail.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_circle_ovu.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_circle_ovu_detail.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/layout/include_border_layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_main.xml: -------------------------------------------------------------------------------- 1 | 5 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/values-v21/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/values-w820dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 64dp 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/values/attrs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3F51B5 4 | #303F9F 5 | #FF4081 6 | 7 | 8 | #7F000000 9 | 10 | 11 | #7F000000 12 | 13 | #7F000000 14 | 15 | #4CC0C0C0 16 | #FF7D48 17 | 18 | #FFFFFF 19 | #F4F4F4 20 | 21 | #7FD8D8D8 22 | 23 | #99FD9DC2 24 | 25 | 26 | #FD9DC2 27 | 28 | #FF7D48 29 | 30 | #E64618 31 | 32 | #99FD9DC2 33 | 34 | #FFC5AD 35 | 36 | #FDF2E6 37 | 38 | #FFC5AD 39 | 40 | 41 | -------------------------------------------------------------------------------- /app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16dp 4 | 16dp 5 | 16dp 6 | 7 | 50dp 8 | 9 | 22dp 10 | 11 | 12 | 13 | 14 | 15 | 16 | 8dp 17 | 12dp 18 | 16dp 19 | 20dp 20 | 24dp 21 | 32dp 22 | 4dp 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Lemon_Shaohua 3 | 今天 4 | Settings 5 | 1月 6 | 2月 7 | 3月 8 | 4月 9 | 5月 10 | 6月 11 | 7月 12 | 8月 13 | 9月 14 | 10月 15 | 11月 16 | 12月 17 | "日" 18 | "一" 19 | "二" 20 | "三" 21 | "四" 22 | "五" 23 | "六" 24 | "年" 25 | "小张" 26 | "小李" 27 | "小王" 28 | "小赵" 29 | "刚从厨房出来去楼下买菜,一男的问我用的什么香水,身上那么香?我说“王守义十三香!”" 30 | 31 | "年月" 32 | 33 | 34 | -------------------------------------------------------------------------------- /app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 15 | 16 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/test/java/calendar/lemon/calendar/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.gsh.calendar; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * To work on unit tests, switch the Test Artifact in the Build Variants view. 9 | */ 10 | public class ExampleUnitTest { 11 | @Test 12 | public void addition_isCorrect() throws Exception { 13 | assertEquals(4, 2 + 2); 14 | } 15 | } -------------------------------------------------------------------------------- /app/src/test/java/calendar/lemon/calendar/NewDateDifference.java: -------------------------------------------------------------------------------- 1 | package com.gsh.calendar; 2 | 3 | import java.util.Calendar; 4 | import java.util.Date; 5 | 6 | public class NewDateDifference { 7 | 8 | public static void main(String[] args) { 9 | 10 | test0(); 11 | } 12 | 13 | public static void test0() { 14 | 15 | // System.out.println("language-->>" + getContext().getResources().getConfiguration().locale.getCountry()); 16 | // System.out.println("timeZone name-->>" + TimeZone.getDefault().getDisplayName()); 17 | // System.out.println("timeZone offset-->>" + TimeZone.getDefault().getRawOffset()); 18 | String[] insert1 = new String[]{"3", "11", "2015"}; 19 | String[] insert2 = new String[]{"20", "3", "2016"}; 20 | 21 | 22 | Calendar cal = Calendar.getInstance(); 23 | 24 | cal.set(Calendar.DAY_OF_MONTH, Integer.parseInt(insert1[0])); 25 | cal.set(Calendar.MONTH, Integer.parseInt(insert1[1])); 26 | cal.set(Calendar.YEAR, Integer.parseInt(insert1[2])); 27 | Date firstDate = cal.getTime(); 28 | 29 | cal.set(Calendar.DAY_OF_MONTH, Integer.parseInt(insert2[0])); 30 | cal.set(Calendar.MONTH, Integer.parseInt(insert2[1])); 31 | cal.set(Calendar.YEAR, Integer.parseInt(insert2[2])); 32 | Date secondDate = cal.getTime(); 33 | 34 | 35 | long diff = secondDate.getTime() - firstDate.getTime(); 36 | 37 | System.out.println("Days0: " + diff / 1000 / 60 / 60 / 24); 38 | System.out.println("Days1: " + getDiffDay(insert1, insert2)); 39 | } 40 | 41 | public static int getDiffDay(String[] insert1, String[] insert2) { 42 | Calendar cal = Calendar.getInstance(); 43 | 44 | cal.set(Calendar.DAY_OF_MONTH, Integer.parseInt(insert1[0])); 45 | cal.set(Calendar.MONTH, Integer.parseInt(insert1[1])); 46 | cal.set(Calendar.YEAR, Integer.parseInt(insert1[2])); 47 | cal.set(Calendar.HOUR_OF_DAY, 0); 48 | cal.set(Calendar.MINUTE, 0); 49 | cal.set(Calendar.SECOND, 0); 50 | cal.set(Calendar.MILLISECOND, 0); 51 | 52 | int unix1 = (int) (cal.getTimeInMillis() / 1000L); 53 | 54 | Calendar cal2 = Calendar.getInstance(); 55 | 56 | cal2.set(Calendar.DAY_OF_MONTH, Integer.parseInt(insert2[0])); 57 | cal2.set(Calendar.MONTH, Integer.parseInt(insert2[1])); 58 | cal2.set(Calendar.YEAR, Integer.parseInt(insert2[2])); 59 | cal2.set(Calendar.HOUR_OF_DAY, 0); 60 | cal2.set(Calendar.MINUTE, 0); 61 | cal2.set(Calendar.SECOND, 0); 62 | cal2.set(Calendar.MILLISECOND, 0); 63 | int unix2 = (int) (cal2.getTimeInMillis() / 1000L); 64 | 65 | int result = 0; 66 | for (int i = 0; i < 1000; i++) { 67 | cal2.add(Calendar.DATE, unix1 > unix2 ? 1 : -1); 68 | if (cal2.getTimeInMillis() / 1000L == unix1) { 69 | result = i + 1; 70 | break; 71 | } 72 | } 73 | return result; 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | repositories { 5 | jcenter() 6 | } 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:2.2.2' 9 | 10 | // NOTE: Do not place your application dependencies here; they belong 11 | // in the individual module build.gradle files 12 | } 13 | } 14 | 15 | allprojects { 16 | repositories { 17 | jcenter() 18 | } 19 | } 20 | 21 | task clean(type: Delete) { 22 | delete rootProject.buildDir 23 | } 24 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the daemon process. 11 | # The setting is particularly useful for tweaking memory settings. 12 | # Default value: -Xmx10248m -XX:MaxPermSize=256m 13 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 14 | 15 | # When configured, Gradle will run in incubating parallel mode. 16 | # This option should only be used with decoupled projects. More details, visit 17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 18 | # org.gradle.parallel=true -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Mon Dec 28 10:00:20 PST 2015 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip 7 | -------------------------------------------------------------------------------- /gradlew: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | ############################################################################## 4 | ## 5 | ## Gradle start up script for UN*X 6 | ## 7 | ############################################################################## 8 | 9 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 10 | DEFAULT_JVM_OPTS="" 11 | 12 | APP_NAME="Gradle" 13 | APP_BASE_NAME=`basename "$0"` 14 | 15 | # Use the maximum available, or set MAX_FD != -1 to use that value. 16 | MAX_FD="maximum" 17 | 18 | warn ( ) { 19 | echo "$*" 20 | } 21 | 22 | die ( ) { 23 | echo 24 | echo "$*" 25 | echo 26 | exit 1 27 | } 28 | 29 | # OS specific support (must be 'true' or 'false'). 30 | cygwin=false 31 | msys=false 32 | darwin=false 33 | case "`uname`" in 34 | CYGWIN* ) 35 | cygwin=true 36 | ;; 37 | Darwin* ) 38 | darwin=true 39 | ;; 40 | MINGW* ) 41 | msys=true 42 | ;; 43 | esac 44 | 45 | # Attempt to set APP_HOME 46 | # Resolve links: $0 may be a link 47 | PRG="$0" 48 | # Need this for relative symlinks. 49 | while [ -h "$PRG" ] ; do 50 | ls=`ls -ld "$PRG"` 51 | link=`expr "$ls" : '.*-> \(.*\)$'` 52 | if expr "$link" : '/.*' > /dev/null; then 53 | PRG="$link" 54 | else 55 | PRG=`dirname "$PRG"`"/$link" 56 | fi 57 | done 58 | SAVED="`pwd`" 59 | cd "`dirname \"$PRG\"`/" >/dev/null 60 | APP_HOME="`pwd -P`" 61 | cd "$SAVED" >/dev/null 62 | 63 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 64 | 65 | # Determine the Java command to use to start the JVM. 66 | if [ -n "$JAVA_HOME" ] ; then 67 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 68 | # IBM's JDK on AIX uses strange locations for the executables 69 | JAVACMD="$JAVA_HOME/jre/sh/java" 70 | else 71 | JAVACMD="$JAVA_HOME/bin/java" 72 | fi 73 | if [ ! -x "$JAVACMD" ] ; then 74 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 75 | 76 | Please set the JAVA_HOME variable in your environment to match the 77 | location of your Java installation." 78 | fi 79 | else 80 | JAVACMD="java" 81 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 82 | 83 | Please set the JAVA_HOME variable in your environment to match the 84 | location of your Java installation." 85 | fi 86 | 87 | # Increase the maximum file descriptors if we can. 88 | if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then 89 | MAX_FD_LIMIT=`ulimit -H -n` 90 | if [ $? -eq 0 ] ; then 91 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then 92 | MAX_FD="$MAX_FD_LIMIT" 93 | fi 94 | ulimit -n $MAX_FD 95 | if [ $? -ne 0 ] ; then 96 | warn "Could not set maximum file descriptor limit: $MAX_FD" 97 | fi 98 | else 99 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" 100 | fi 101 | fi 102 | 103 | # For Darwin, add options to specify how the application appears in the dock 104 | if $darwin; then 105 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" 106 | fi 107 | 108 | # For Cygwin, switch paths to Windows format before running java 109 | if $cygwin ; then 110 | APP_HOME=`cygpath --path --mixed "$APP_HOME"` 111 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` 112 | JAVACMD=`cygpath --unix "$JAVACMD"` 113 | 114 | # We build the pattern for arguments to be converted via cygpath 115 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` 116 | SEP="" 117 | for dir in $ROOTDIRSRAW ; do 118 | ROOTDIRS="$ROOTDIRS$SEP$dir" 119 | SEP="|" 120 | done 121 | OURCYGPATTERN="(^($ROOTDIRS))" 122 | # Add a user-defined pattern to the cygpath arguments 123 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then 124 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" 125 | fi 126 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 127 | i=0 128 | for arg in "$@" ; do 129 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` 130 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option 131 | 132 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition 133 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` 134 | else 135 | eval `echo args$i`="\"$arg\"" 136 | fi 137 | i=$((i+1)) 138 | done 139 | case $i in 140 | (0) set -- ;; 141 | (1) set -- "$args0" ;; 142 | (2) set -- "$args0" "$args1" ;; 143 | (3) set -- "$args0" "$args1" "$args2" ;; 144 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;; 145 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; 146 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; 147 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; 148 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; 149 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; 150 | esac 151 | fi 152 | 153 | # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules 154 | function splitJvmOpts() { 155 | JVM_OPTS=("$@") 156 | } 157 | eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS 158 | JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" 159 | 160 | exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" 161 | -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- 1 | @if "%DEBUG%" == "" @echo off 2 | @rem ########################################################################## 3 | @rem 4 | @rem Gradle startup script for Windows 5 | @rem 6 | @rem ########################################################################## 7 | 8 | @rem Set local scope for the variables with windows NT shell 9 | if "%OS%"=="Windows_NT" setlocal 10 | 11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 12 | set DEFAULT_JVM_OPTS= 13 | 14 | set DIRNAME=%~dp0 15 | if "%DIRNAME%" == "" set DIRNAME=. 16 | set APP_BASE_NAME=%~n0 17 | set APP_HOME=%DIRNAME% 18 | 19 | @rem Find java.exe 20 | if defined JAVA_HOME goto findJavaFromJavaHome 21 | 22 | set JAVA_EXE=java.exe 23 | %JAVA_EXE% -version >NUL 2>&1 24 | if "%ERRORLEVEL%" == "0" goto init 25 | 26 | echo. 27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 28 | echo. 29 | echo Please set the JAVA_HOME variable in your environment to match the 30 | echo location of your Java installation. 31 | 32 | goto fail 33 | 34 | :findJavaFromJavaHome 35 | set JAVA_HOME=%JAVA_HOME:"=% 36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 37 | 38 | if exist "%JAVA_EXE%" goto init 39 | 40 | echo. 41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 42 | echo. 43 | echo Please set the JAVA_HOME variable in your environment to match the 44 | echo location of your Java installation. 45 | 46 | goto fail 47 | 48 | :init 49 | @rem Get command-line arguments, handling Windowz variants 50 | 51 | if not "%OS%" == "Windows_NT" goto win9xME_args 52 | if "%@eval[2+2]" == "4" goto 4NT_args 53 | 54 | :win9xME_args 55 | @rem Slurp the command line arguments. 56 | set CMD_LINE_ARGS= 57 | set _SKIP=2 58 | 59 | :win9xME_args_slurp 60 | if "x%~1" == "x" goto execute 61 | 62 | set CMD_LINE_ARGS=%* 63 | goto execute 64 | 65 | :4NT_args 66 | @rem Get arguments from the 4NT Shell from JP Software 67 | set CMD_LINE_ARGS=%$ 68 | 69 | :execute 70 | @rem Setup the command line 71 | 72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 73 | 74 | @rem Execute Gradle 75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 76 | 77 | :end 78 | @rem End local scope for the variables with windows NT shell 79 | if "%ERRORLEVEL%"=="0" goto mainEnd 80 | 81 | :fail 82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 83 | rem the _cmd.exe /c_ return code! 84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 85 | exit /b 1 86 | 87 | :mainEnd 88 | if "%OS%"=="Windows_NT" endlocal 89 | 90 | :omega 91 | -------------------------------------------------------------------------------- /javatest/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /javatest/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'java' 2 | 3 | dependencies { 4 | compile fileTree(dir: 'libs', include: ['*.jar']) 5 | } -------------------------------------------------------------------------------- /javatest/src/main/java/calendar/example/MyClass.java: -------------------------------------------------------------------------------- 1 | package calendar.example; 2 | 3 | public class MyClass { 4 | } 5 | -------------------------------------------------------------------------------- /javatest/src/main/java/calendar/example/NewDateDifference.java: -------------------------------------------------------------------------------- 1 | package calendar.example; 2 | 3 | import java.util.Calendar; 4 | import java.util.Date; 5 | 6 | public class NewDateDifference { 7 | public static void main(String[] args) { 8 | 9 | // test0(); 10 | test1(); 11 | } 12 | 13 | public static void test1() { 14 | Calendar cal = Calendar.getInstance(); 15 | int weekIndex = cal.get(Calendar.WEEK_OF_YEAR); 16 | System.out.println("第几周?-->>" + weekIndex); 17 | 18 | cal.set(Calendar.WEEK_OF_YEAR, weekIndex); 19 | 20 | System.out.println("day?-->>" + cal.get(Calendar.DAY_OF_MONTH)); 21 | int firstOfWeek = cal.getFirstDayOfWeek(); 22 | System.out.println("firstOfWeek?-->>" + firstOfWeek); 23 | //2015/08/11 11:11;11 24 | // int unix = 1439262671; 25 | // cal.setTimeInMillis(unix*1000L); 26 | 27 | cal.set(Calendar.WEEK_OF_YEAR,33); 28 | weekIndex = cal.get(Calendar.WEEK_OF_YEAR); 29 | System.out.println("第几周2?-->>" + weekIndex); 30 | System.out.println("day2?-->>" + cal.get(Calendar.DAY_OF_MONTH)); 31 | firstOfWeek = cal.getFirstDayOfWeek(); 32 | System.out.println("firstOfWeek2?-->>" + firstOfWeek); 33 | } 34 | 35 | public static void test0() { 36 | 37 | // System.out.println("language-->>" + getContext().getResources().getConfiguration().locale.getCountry()); 38 | // System.out.println("timeZone name-->>" + TimeZone.getDefault().getDisplayName()); 39 | // System.out.println("timeZone offset-->>" + TimeZone.getDefault().getRawOffset()); 40 | String[] insert1 = new String[]{"3", "11", "2015"}; 41 | String[] insert2 = new String[]{"20", "3", "2016"}; 42 | 43 | 44 | Calendar cal = Calendar.getInstance(); 45 | 46 | cal.set(Calendar.DAY_OF_MONTH, Integer.parseInt(insert1[0])); 47 | cal.set(Calendar.MONTH, Integer.parseInt(insert1[1])); 48 | cal.set(Calendar.YEAR, Integer.parseInt(insert1[2])); 49 | Date firstDate = cal.getTime(); 50 | 51 | cal.set(Calendar.DAY_OF_MONTH, Integer.parseInt(insert2[0])); 52 | cal.set(Calendar.MONTH, Integer.parseInt(insert2[1])); 53 | cal.set(Calendar.YEAR, Integer.parseInt(insert2[2])); 54 | Date secondDate = cal.getTime(); 55 | 56 | 57 | long diff = secondDate.getTime() - firstDate.getTime(); 58 | 59 | System.out.println("Days0: " + diff / 1000 / 60 / 60 / 24); 60 | System.out.println("Days1: " + getDiffDay(insert1, insert2)); 61 | } 62 | 63 | public static int getDiffDay(String[] insert1, String[] insert2) { 64 | Calendar cal = Calendar.getInstance(); 65 | 66 | cal.set(Calendar.DAY_OF_MONTH, Integer.parseInt(insert1[0])); 67 | cal.set(Calendar.MONTH, Integer.parseInt(insert1[1])); 68 | cal.set(Calendar.YEAR, Integer.parseInt(insert1[2])); 69 | cal.set(Calendar.HOUR_OF_DAY, 0); 70 | cal.set(Calendar.MINUTE, 0); 71 | cal.set(Calendar.SECOND, 0); 72 | cal.set(Calendar.MILLISECOND, 0); 73 | 74 | int unix1 = (int) (cal.getTimeInMillis() / 1000L); 75 | 76 | Calendar cal2 = Calendar.getInstance(); 77 | 78 | cal2.set(Calendar.DAY_OF_MONTH, Integer.parseInt(insert2[0])); 79 | cal2.set(Calendar.MONTH, Integer.parseInt(insert2[1])); 80 | cal2.set(Calendar.YEAR, Integer.parseInt(insert2[2])); 81 | cal2.set(Calendar.HOUR_OF_DAY, 0); 82 | cal2.set(Calendar.MINUTE, 0); 83 | cal2.set(Calendar.SECOND, 0); 84 | cal2.set(Calendar.MILLISECOND, 0); 85 | int unix2 = (int) (cal2.getTimeInMillis() / 1000L); 86 | 87 | int result = 0; 88 | for (int i = 0; i < 1000; i++) { 89 | cal2.add(Calendar.DATE, unix1 > unix2 ? 1 : -1); 90 | if (cal2.getTimeInMillis() / 1000L == unix1) { 91 | result = i + 1; 92 | break; 93 | } 94 | } 95 | return result; 96 | } 97 | } -------------------------------------------------------------------------------- /local.properties: -------------------------------------------------------------------------------- 1 | ## This file is automatically generated by Android Studio. 2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED! 3 | # 4 | # This file must *NOT* be checked into Version Control Systems, 5 | # as it contains information specific to your local configuration. 6 | # 7 | # Location of the SDK. This is only used by Gradle. 8 | # For customization when using a Version Control System, please read the 9 | # header note. 10 | #Tue Sep 06 15:42:37 CST 2016 11 | ndk.dir=/Users/damon/Library/Android/sdk/ndk-bundle 12 | sdk.dir=/Users/damon/Library/Android/sdk 13 | -------------------------------------------------------------------------------- /pickerview/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/pickerview/.DS_Store -------------------------------------------------------------------------------- /pickerview/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | android { 4 | compileSdkVersion 24 5 | buildToolsVersion "24.0.1" 6 | 7 | defaultConfig { 8 | minSdkVersion 18 9 | targetSdkVersion 24 10 | versionCode 1 11 | versionName "1.0" 12 | 13 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 14 | 15 | } 16 | buildTypes { 17 | release { 18 | minifyEnabled false 19 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 20 | } 21 | } 22 | } 23 | 24 | dependencies { 25 | compile fileTree(dir: 'libs', include: ['*.jar']) 26 | androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 27 | exclude group: 'com.android.support', module: 'support-annotations' 28 | }) 29 | compile 'com.android.support:appcompat-v7:24.2.0' 30 | testCompile 'junit:junit:4.12' 31 | } 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | //apply plugin: 'com.android.library' 41 | ////apply plugin: 'com.github.dcendents.android-maven' 42 | ////apply plugin: 'com.jfrog.bintray' 43 | // 44 | //version = "2.0.7" 45 | // 46 | //android { 47 | // compileSdkVersion 23 48 | // buildToolsVersion "23.0.1" 49 | // 50 | // defaultConfig { 51 | // minSdkVersion 9 52 | // targetSdkVersion 21 53 | // versionCode 1 54 | // versionName "1.0" 55 | // } 56 | // buildTypes { 57 | // release { 58 | // minifyEnabled false 59 | // proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 60 | // } 61 | // } 62 | //} 63 | // 64 | //dependencies { 65 | // compile fileTree(dir: 'libs', include: ['*.jar']) 66 | //} 67 | // 68 | ////def siteUrl = 'https://github.com/saiwu-bigkoo/Android-PickerView' // #CONFIG# // project homepage 69 | ////def gitUrl = 'https://github.com/saiwu-bigkoo/Android-PickerView.git' // #CONFIG# // project git 70 | //group = "com.bigkoo" 71 | // 72 | ////install { 73 | //// repositories.mavenInstaller { 74 | //// // This generates POM.xml with proper parameters 75 | //// pom { 76 | //// project { 77 | //// packaging 'aar' 78 | //// name 'PickerView For Android' // #CONFIG# // project title 79 | //// url siteUrl 80 | //// // Set your license 81 | //// licenses { 82 | //// license { 83 | //// name 'The Apache Software License, Version 2.0' 84 | //// url 'http://www.apache.org/licenses/LICENSE-2.0.txt' 85 | //// } 86 | //// } 87 | //// developers { 88 | //// developer { 89 | //// id 'sai' // #CONFIG# // your user id (you can write your nickname) 90 | //// name 'sai.wu' // #CONFIG# // your user name 91 | //// email 'sai.wu@bigkoo.com' // #CONFIG# // your email 92 | //// } 93 | //// } 94 | //// scm { 95 | //// connection gitUrl 96 | //// developerConnection gitUrl 97 | //// url siteUrl 98 | //// } 99 | //// } 100 | //// } 101 | //// } 102 | ////} 103 | // 104 | //task sourcesJar(type: Jar) { 105 | // from android.sourceSets.main.java.srcDirs 106 | // classifier = 'sources' 107 | //} 108 | // 109 | //task javadoc(type: Javadoc) { 110 | // source = android.sourceSets.main.java.srcDirs 111 | // classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) 112 | //} 113 | // 114 | //task javadocJar(type: Jar, dependsOn: javadoc) { 115 | // classifier = 'javadoc' 116 | // from javadoc.destinationDir 117 | //} 118 | // 119 | //artifacts { 120 | // archives javadocJar 121 | // archives sourcesJar 122 | //} 123 | // 124 | //Properties properties = new Properties() 125 | //properties.load(project.rootProject.file('local.properties').newDataInputStream()) 126 | ////bintray { 127 | //// user = properties.getProperty("bintray.user") 128 | //// key = properties.getProperty("bintray.apikey") 129 | //// configurations = ['archives'] 130 | //// pkg { 131 | //// repo = "maven" 132 | //// name = "PickerView" // #CONFIG# project name in jcenter 133 | //// websiteUrl = siteUrl 134 | //// vcsUrl = gitUrl 135 | //// licenses = ["Apache-2.0"] 136 | //// publish = true 137 | //// } 138 | ////} -------------------------------------------------------------------------------- /pickerview/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /Users/Sai/Documents/software/sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /pickerview/src/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shaohuaguo/calendarDemo/4f09dee4a7a0fa6bc0298283ee9b8c0b2185f6b7/pickerview/src/.DS_Store -------------------------------------------------------------------------------- /pickerview/src/androidTest/java/calendar/bigkoo/pickerview/ApplicationTest.java: -------------------------------------------------------------------------------- 1 | package calendar.bigkoo.pickerview; 2 | 3 | import android.app.Application; 4 | import android.test.ApplicationTestCase; 5 | 6 | /** 7 | * Testing Fundamentals 8 | */ 9 | public class ApplicationTest extends ApplicationTestCase { 10 | public ApplicationTest() { 11 | super(Application.class); 12 | } 13 | } -------------------------------------------------------------------------------- /pickerview/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /pickerview/src/main/java/calendar/bigkoo/pickerview/Constant.java: -------------------------------------------------------------------------------- 1 | package calendar.bigkoo.pickerview; 2 | 3 | /** 4 | * Created by longfei.zhang on 2016/1/12. 5 | */ 6 | public class Constant { 7 | 8 | public static boolean DEBUG = true; 9 | /**默认字体大小*/ 10 | public static final int TEXT_SIZE = 24; 11 | /** 12 | * 选择单位switchbtn的左侧 13 | */ 14 | public static final int SWITCH_LEFT = 0; 15 | /** 16 | * 选择单位switchbtn的右侧 17 | */ 18 | public static final int SWITCH_RIGHT = 1; 19 | 20 | /*************身高****************/ 21 | /**身高cm最大值*/ 22 | public static final int HEIGHT_CM_MAX = 271; 23 | /**身高cm最小值*/ 24 | public static final int HEIGHT_CM_MIN = 121; 25 | /**身高英尺最大值*/ 26 | public static final int HEIGHT_FT_MAX = 8; 27 | /**身高英尺最小值*/ 28 | public static final int HEIGHT_FT_MIN = 4; 29 | /**默认身高160cm*/ 30 | public static final int HEIGHT_DEFAULT = 160; 31 | public static final String HEIGHT_CM = "cm"; 32 | public static final String HEIGHT_FT = "ft"; 33 | public static final String HEIGHT_IN = "in"; 34 | /*************身高****************/ 35 | 36 | /*************体重****************/ 37 | /**体重KG最大值*/ 38 | public static final int WEIGHT_KG_MAX = 226; 39 | /**体重KG最小值*/ 40 | public static final int WEIGHT_KG_MIN = 20; 41 | /**体重lbs最大值*/ 42 | public static final int WEIGHT_LBS_MAX = 500; 43 | /**体重lbs最小值*/ 44 | public static final int WEIGHT_LBS_MIN = 50; 45 | /**体重默认50*1000g,克为单位*/ 46 | public static final int WEIGHT_DEFAULT = 50*1000; 47 | public static final String HEIGHT_KG = "kg"; 48 | public static final String HEIGHT_LBS = "lbs"; 49 | 50 | /*************体重****************/ 51 | 52 | 53 | } 54 | -------------------------------------------------------------------------------- /pickerview/src/main/java/calendar/bigkoo/pickerview/CustomPickerView.java: -------------------------------------------------------------------------------- 1 | package calendar.bigkoo.pickerview; 2 | 3 | import android.content.Context; 4 | import android.text.TextUtils; 5 | import android.view.LayoutInflater; 6 | import android.view.View; 7 | import android.widget.TextView; 8 | 9 | import com.bigkoo.pickerview.R; 10 | 11 | import calendar.bigkoo.pickerview.adapter.ArrayWheelAdapter; 12 | import calendar.bigkoo.pickerview.lib.WheelView; 13 | import calendar.bigkoo.pickerview.view.BasePickerView; 14 | import calendar.bigkoo.pickerview.view.SwitchButton; 15 | 16 | import java.util.ArrayList; 17 | 18 | /** 19 | * 单个两个滚动选择 20 | * Created by longfei.zhang on 2016/1/13. 21 | */ 22 | public class CustomPickerView extends BasePickerView implements View.OnClickListener{ 23 | 24 | private static final String TAG = "SingleDoublePickerView"; 25 | private Context mContext; 26 | private ArrayWheelAdapter mAdapter1; 27 | private ArrayWheelAdapter mAdapter2; 28 | private WheelView mWv1; 29 | private WheelView mWv2; 30 | private SwitchButton mSb; 31 | private View mConfirmBtn, mCancelBtn; 32 | private TextView mTitleTv; 33 | private String mTitle; 34 | private boolean isShowSb = false; 35 | 36 | private OnCustomSelectListener mListener; 37 | /** 38 | * 默认单行1,两行2 39 | */ 40 | private int mRowNum = 1; 41 | public CustomPickerView(Context context, String title, ArrayList data){ 42 | super(context); 43 | this.mContext = context; 44 | if(TextUtils.isEmpty(title)){ 45 | return; 46 | } 47 | if(data == null || !(data.size()>0)){ 48 | return; 49 | } 50 | 51 | this.mTitle = title; 52 | mAdapter1 = new ArrayWheelAdapter(data); 53 | mRowNum = 1; 54 | init1(); 55 | } 56 | public CustomPickerView(Context context, String title, ArrayList data1, ArrayList data2){ 57 | super(context); 58 | this.mContext = context; 59 | if(TextUtils.isEmpty(title)){ 60 | return; 61 | } 62 | if(data1 == null || !(data1.size()>0)){ 63 | return; 64 | } 65 | if(data2 == null || !(data2.size()>0)){ 66 | return; 67 | } 68 | this.mTitle = title; 69 | 70 | mAdapter1 = new ArrayWheelAdapter(data1); 71 | mAdapter2 = new ArrayWheelAdapter(data2); 72 | mRowNum = 2; 73 | init1(); 74 | } 75 | private void init1(){ 76 | LayoutInflater.from(mContext).inflate(R.layout.pickerview_custom, contentContainer); 77 | mWv1 = (WheelView)findViewById(R.id.picker_singledouble_wv1); 78 | mWv2 = (WheelView)findViewById(R.id.picker_singledouble_wv2); 79 | mSb = (SwitchButton)findViewById(R.id.topbar_switch_btn); 80 | // -----确定和取消按钮 81 | mConfirmBtn = findViewById(R.id.topbar_confirm_btn); 82 | mCancelBtn = findViewById(R.id.topbar_cancel_btn); 83 | mConfirmBtn.setOnClickListener(this); 84 | mCancelBtn.setOnClickListener(this); 85 | //顶部标题 86 | mTitleTv = (TextView) findViewById(R.id.topbar_title_tv); 87 | mTitleTv.setText(mTitle); 88 | if(!isShowSb){ 89 | mSb.setVisibility(View.INVISIBLE); 90 | } 91 | 92 | mWv1.setAdapter(mAdapter1); 93 | mWv1.setTextSize(Constant.TEXT_SIZE); 94 | mWv1.setCyclic(false); 95 | if(mRowNum == 2){ 96 | mWv2.setAdapter(mAdapter2); 97 | mWv2.setTextSize(Constant.TEXT_SIZE); 98 | mWv2.setCyclic(false); 99 | }else if(mRowNum == 1){ 100 | mWv2.setVisibility(View.GONE); 101 | } 102 | } 103 | 104 | /** 105 | * @param object 要选择的值 106 | */ 107 | public void setSelectItem(Object object){ 108 | if(object == null){ 109 | RaiingPickerLog.d(TAG, "设置的值不能为空"); 110 | return; 111 | } 112 | int position = mAdapter1.indexOf(object); 113 | mWv1.setCurrentItem(position); 114 | } 115 | 116 | /** 117 | * @param position 设定选择的位置 118 | */ 119 | public void setSelectItem(int position){ 120 | if(position < 0){ 121 | RaiingPickerLog.d(TAG, "选择的位置不能为负"); 122 | return; 123 | } 124 | mWv1.setCurrentItem(position); 125 | } 126 | 127 | /** 128 | * @param object1 第一列要选择的值 129 | * @param object2 第二列要选择的值 130 | */ 131 | public void setSelectItem(Object object1, Object object2){ 132 | if(object1 == null || object2 == null){ 133 | RaiingPickerLog.d(TAG, "设置的值不能为空"); 134 | return; 135 | } 136 | int position1 = mAdapter1.indexOf(object1); 137 | int position2 = mAdapter2.indexOf(object2); 138 | mWv1.setCurrentItem(position1); 139 | mWv2.setCurrentItem(position2); 140 | } 141 | 142 | /** 143 | * @param position1 第一列设定选择的位置 144 | * @param position2 第二列设定选择的位置 145 | */ 146 | public void setSelectItem(int position1, int position2){ 147 | if(position1 < 0|| position2 < 0){ 148 | RaiingPickerLog.d(TAG, "选择的位置不能为负"); 149 | return; 150 | } 151 | mWv1.setCurrentItem(position1); 152 | mWv2.setCurrentItem(position2); 153 | } 154 | @Override 155 | public void onClick(View view) { 156 | if(view.getId()==R.id.topbar_cancel_btn) 157 | { 158 | dismiss(); 159 | } else if(view.getId()==R.id.topbar_confirm_btn) { 160 | if(mListener!=null){ 161 | switch (mRowNum){ 162 | case 1: 163 | int position = mWv1.getCurrentItem(); 164 | RaiingPickerLog.d(TAG, "选择的position:" + position); 165 | mListener.onSingleSelect(mAdapter1.getItem(position), position); 166 | break; 167 | case 2: 168 | 169 | int postion1 = mWv1.getCurrentItem(); 170 | int postion2 = mWv2.getCurrentItem(); 171 | RaiingPickerLog.d(TAG, "选择的position:" + postion1 + ", " + postion2); 172 | mListener.onDoubleSelect(mAdapter1.getItem(postion1), postion1, 173 | mAdapter2.getItem(postion2), postion2); 174 | break; 175 | default: 176 | break; 177 | } 178 | } 179 | dismiss(); 180 | } 181 | } 182 | 183 | 184 | public void setOnSelectListener(OnCustomSelectListener mListener) { 185 | this.mListener = mListener; 186 | } 187 | 188 | public interface OnCustomSelectListener { 189 | void onSingleSelect(Object object, int position); 190 | void onDoubleSelect(Object object1, int position1, Object object2, int position2); 191 | } 192 | } 193 | -------------------------------------------------------------------------------- /pickerview/src/main/java/calendar/bigkoo/pickerview/OptionsPickerView.java: -------------------------------------------------------------------------------- 1 | package calendar.bigkoo.pickerview; 2 | 3 | import android.content.Context; 4 | import android.view.LayoutInflater; 5 | import android.view.View; 6 | import android.widget.TextView; 7 | 8 | import com.bigkoo.pickerview.R; 9 | 10 | import calendar.bigkoo.pickerview.view.BasePickerView; 11 | import calendar.bigkoo.pickerview.view.WheelOptions; 12 | 13 | import java.util.ArrayList; 14 | 15 | /** 16 | * Created by Sai on 15/11/22. 17 | */ 18 | public class OptionsPickerView extends BasePickerView implements View.OnClickListener { 19 | WheelOptions wheelOptions; 20 | private View btnSubmit, btnCancel; 21 | private TextView tvTitle; 22 | private OnOptionsSelectListener optionsSelectListener; 23 | private static final String TAG_SUBMIT = "submit"; 24 | private static final String TAG_CANCEL = "cancel"; 25 | public OptionsPickerView(Context context) { 26 | super(context); 27 | LayoutInflater.from(context).inflate(R.layout.pickerview_options, contentContainer); 28 | // -----确定和取消按钮 29 | btnSubmit = findViewById(R.id.topbar_confirm_btn); 30 | btnSubmit.setTag(TAG_SUBMIT); 31 | btnCancel = findViewById(R.id.topbar_cancel_btn); 32 | btnCancel.setTag(TAG_CANCEL); 33 | btnSubmit.setOnClickListener(this); 34 | btnCancel.setOnClickListener(this); 35 | //顶部标题 36 | tvTitle = (TextView) findViewById(R.id.topbar_title_tv); 37 | // ----转轮 38 | final View optionspicker = findViewById(R.id.optionspicker); 39 | wheelOptions = new WheelOptions(optionspicker); 40 | } 41 | public void setPicker(ArrayList optionsItems) { 42 | wheelOptions.setPicker(optionsItems, null, null, false); 43 | } 44 | 45 | public void setPicker(ArrayList options1Items, 46 | ArrayList> options2Items, boolean linkage) { 47 | wheelOptions.setPicker(options1Items, options2Items, null, linkage); 48 | } 49 | 50 | public void setPicker(ArrayList options1Items, 51 | ArrayList> options2Items, 52 | ArrayList>> options3Items, 53 | boolean linkage) { 54 | wheelOptions.setPicker(options1Items, options2Items, options3Items, 55 | linkage); 56 | } 57 | /** 58 | * 设置选中的item位置 59 | * @param option1 60 | */ 61 | public void setSelectOptions(int option1){ 62 | wheelOptions.setCurrentItems(option1, 0, 0); 63 | } 64 | /** 65 | * 设置选中的item位置 66 | * @param option1 67 | * @param option2 68 | */ 69 | public void setSelectOptions(int option1, int option2){ 70 | wheelOptions.setCurrentItems(option1, option2, 0); 71 | } 72 | /** 73 | * 设置选中的item位置 74 | * @param option1 75 | * @param option2 76 | * @param option3 77 | */ 78 | public void setSelectOptions(int option1, int option2, int option3){ 79 | wheelOptions.setCurrentItems(option1, option2, option3); 80 | } 81 | /** 82 | * 设置选项的单位 83 | * @param label1 84 | */ 85 | public void setLabels(String label1){ 86 | wheelOptions.setLabels(label1, null, null); 87 | } 88 | /** 89 | * 设置选项的单位 90 | * @param label1 91 | * @param label2 92 | */ 93 | public void setLabels(String label1,String label2){ 94 | wheelOptions.setLabels(label1, label2, null); 95 | } 96 | /** 97 | * 设置选项的单位 98 | * @param label1 99 | * @param label2 100 | * @param label3 101 | */ 102 | public void setLabels(String label1,String label2,String label3){ 103 | wheelOptions.setLabels(label1, label2, label3); 104 | } 105 | /** 106 | * 设置是否循环滚动 107 | * @param cyclic 108 | */ 109 | public void setCyclic(boolean cyclic){ 110 | wheelOptions.setCyclic(cyclic); 111 | } 112 | public void setCyclic(boolean cyclic1,boolean cyclic2,boolean cyclic3) { 113 | wheelOptions.setCyclic(cyclic1,cyclic2,cyclic3); 114 | } 115 | 116 | 117 | @Override 118 | public void onClick(View v) 119 | { 120 | String tag=(String) v.getTag(); 121 | if(tag.equals(TAG_CANCEL)) 122 | { 123 | dismiss(); 124 | return; 125 | } 126 | else 127 | { 128 | if(optionsSelectListener!=null) 129 | { 130 | int[] optionsCurrentItems=wheelOptions.getCurrentItems(); 131 | optionsSelectListener.onOptionsSelect(optionsCurrentItems[0], optionsCurrentItems[1], optionsCurrentItems[2]); 132 | } 133 | dismiss(); 134 | return; 135 | } 136 | } 137 | 138 | public interface OnOptionsSelectListener { 139 | public void onOptionsSelect(int options1, int option2, int options3); 140 | } 141 | 142 | public void setOnoptionsSelectListener( 143 | OnOptionsSelectListener optionsSelectListener) { 144 | this.optionsSelectListener = optionsSelectListener; 145 | } 146 | 147 | public void setTitle(String title){ 148 | tvTitle.setText(title); 149 | } 150 | } 151 | -------------------------------------------------------------------------------- /pickerview/src/main/java/calendar/bigkoo/pickerview/RaiingPickerLog.java: -------------------------------------------------------------------------------- 1 | package calendar.bigkoo.pickerview; 2 | 3 | import android.util.Log; 4 | 5 | /** 6 | * Created by longfei.zhang on 2016/1/13. 7 | */ 8 | public class RaiingPickerLog { 9 | public static void d(String tag, String message){ 10 | if(Constant.DEBUG){ 11 | Log.d(tag, message); 12 | } 13 | 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /pickerview/src/main/java/calendar/bigkoo/pickerview/TimePickerView.java: -------------------------------------------------------------------------------- 1 | package calendar.bigkoo.pickerview; 2 | 3 | import android.content.Context; 4 | import android.view.LayoutInflater; 5 | import android.view.View; 6 | import android.widget.TextView; 7 | 8 | import com.bigkoo.pickerview.R; 9 | 10 | import calendar.bigkoo.pickerview.view.BasePickerView; 11 | import calendar.bigkoo.pickerview.view.WheelTime; 12 | 13 | import java.text.ParseException; 14 | import java.util.Calendar; 15 | import java.util.Date; 16 | 17 | /** 18 | * Created by Sai on 15/11/22. 19 | */ 20 | public class TimePickerView extends BasePickerView implements View.OnClickListener { 21 | public enum Type { 22 | ALL, YEAR_MONTH_DAY, HOURS_MINS, MONTH_DAY_HOUR_MIN , YEAR_MONTH 23 | }// 四种选择模式,年月日时分,年月日,时分,月日时分 24 | 25 | WheelTime wheelTime; 26 | private View btnSubmit, btnCancel; 27 | private TextView tvTitle; 28 | private static final String TAG_SUBMIT = "submit"; 29 | private static final String TAG_CANCEL = "cancel"; 30 | private OnTimeSelectListener timeSelectListener; 31 | 32 | public TimePickerView(Context context, Type type) { 33 | super(context); 34 | 35 | LayoutInflater.from(context).inflate(R.layout.pickerview_time, contentContainer); 36 | // -----确定和取消按钮 37 | btnSubmit = findViewById(R.id.topbar_confirm_btn); 38 | btnSubmit.setTag(TAG_SUBMIT); 39 | btnCancel = findViewById(R.id.topbar_cancel_btn); 40 | btnCancel.setTag(TAG_CANCEL); 41 | btnSubmit.setOnClickListener(this); 42 | btnCancel.setOnClickListener(this); 43 | //顶部标题 44 | tvTitle = (TextView) findViewById(R.id.topbar_title_tv); 45 | // ----时间转轮 46 | final View timepickerview = findViewById(R.id.timepicker); 47 | wheelTime = new WheelTime(timepickerview, type); 48 | 49 | //默认选中当前时间 50 | Calendar calendar = Calendar.getInstance(); 51 | calendar.setTimeInMillis(System.currentTimeMillis()); 52 | int year = calendar.get(Calendar.YEAR); 53 | int month = calendar.get(Calendar.MONTH); 54 | int day = calendar.get(Calendar.DAY_OF_MONTH); 55 | int hours = calendar.get(Calendar.HOUR_OF_DAY); 56 | int minute = calendar.get(Calendar.MINUTE); 57 | wheelTime.setPicker(year, month, day, hours, minute); 58 | 59 | } 60 | 61 | /** 62 | * 设置可以选择的时间范围 63 | * 64 | * @param startYear 65 | * @param endYear 66 | */ 67 | public void setRange(int startYear, int endYear) { 68 | wheelTime.setStartYear(startYear); 69 | wheelTime.setEndYear(endYear); 70 | } 71 | 72 | /** 73 | * 设置选中时间 74 | * @param date 75 | */ 76 | public void setTime(Date date) { 77 | Calendar calendar = Calendar.getInstance(); 78 | if (date == null) 79 | calendar.setTimeInMillis(System.currentTimeMillis()); 80 | else 81 | calendar.setTime(date); 82 | int year = calendar.get(Calendar.YEAR); 83 | int month = calendar.get(Calendar.MONTH); 84 | int day = calendar.get(Calendar.DAY_OF_MONTH); 85 | int hours = calendar.get(Calendar.HOUR_OF_DAY); 86 | int minute = calendar.get(Calendar.MINUTE); 87 | wheelTime.setPicker(year, month, day, hours, minute); 88 | } 89 | 90 | // /** 91 | // * 指定选中的时间,显示选择器 92 | // * 93 | // * @param date 94 | // */ 95 | // public void show(Date date) { 96 | // Calendar calendar = Calendar.getInstance(); 97 | // if (date == null) 98 | // calendar.setTimeInMillis(System.currentTimeMillis()); 99 | // else 100 | // calendar.setTime(date); 101 | // int year = calendar.get(Calendar.YEAR); 102 | // int month = calendar.get(Calendar.MONTH); 103 | // int day = calendar.get(Calendar.DAY_OF_MONTH); 104 | // int hours = calendar.get(Calendar.HOUR_OF_DAY); 105 | // int minute = calendar.get(Calendar.MINUTE); 106 | // wheelTime.setPicker(year, month, day, hours, minute); 107 | // show(); 108 | // } 109 | 110 | /** 111 | * 设置是否循环滚动 112 | * 113 | * @param cyclic 114 | */ 115 | public void setCyclic(boolean cyclic) { 116 | wheelTime.setCyclic(cyclic); 117 | } 118 | 119 | @Override 120 | public void onClick(View v) { 121 | String tag = (String) v.getTag(); 122 | if (tag.equals(TAG_CANCEL)) { 123 | dismiss(); 124 | return; 125 | } else { 126 | if (timeSelectListener != null) { 127 | try { 128 | Date date = WheelTime.dateFormat.parse(wheelTime.getTime()); 129 | timeSelectListener.onTimeSelect(date); 130 | } catch (ParseException e) { 131 | e.printStackTrace(); 132 | } 133 | } 134 | dismiss(); 135 | return; 136 | } 137 | } 138 | 139 | public interface OnTimeSelectListener { 140 | void onTimeSelect(Date date); 141 | } 142 | 143 | public void setOnTimeSelectListener(OnTimeSelectListener timeSelectListener) { 144 | this.timeSelectListener = timeSelectListener; 145 | } 146 | 147 | public void setTitle(String title){ 148 | tvTitle.setText(title); 149 | } 150 | } 151 | -------------------------------------------------------------------------------- /pickerview/src/main/java/calendar/bigkoo/pickerview/adapter/ArrayWheelAdapter.java: -------------------------------------------------------------------------------- 1 | package calendar.bigkoo.pickerview.adapter; 2 | 3 | import java.util.ArrayList; 4 | 5 | /** 6 | * The simple Array wheel adapter 7 | * @param the element type 8 | */ 9 | public class ArrayWheelAdapter implements WheelAdapter { 10 | 11 | /** The default items length */ 12 | public static final int DEFAULT_LENGTH = 4; 13 | 14 | // items 15 | private ArrayList items; 16 | // length 17 | private int length; 18 | 19 | /** 20 | * Constructor 21 | * @param items the items 22 | * @param length the max items length 23 | */ 24 | public ArrayWheelAdapter(ArrayList items, int length) { 25 | this.items = items; 26 | this.length = length; 27 | } 28 | 29 | /** 30 | * Contructor 31 | * @param items the items 32 | */ 33 | public ArrayWheelAdapter(ArrayList items) { 34 | this(items, DEFAULT_LENGTH); 35 | } 36 | 37 | @Override 38 | public Object getItem(int index) { 39 | if (index >= 0 && index < items.size()) { 40 | return items.get(index); 41 | } 42 | return ""; 43 | } 44 | 45 | @Override 46 | public int getItemsCount() { 47 | return items.size(); 48 | } 49 | 50 | @Override 51 | public int indexOf(Object o){ 52 | return items.indexOf(o); 53 | } 54 | 55 | } 56 | -------------------------------------------------------------------------------- /pickerview/src/main/java/calendar/bigkoo/pickerview/adapter/NumericWheelAdapter.java: -------------------------------------------------------------------------------- 1 | package calendar.bigkoo.pickerview.adapter; 2 | 3 | 4 | /** 5 | * Numeric Wheel adapter. 6 | */ 7 | public class NumericWheelAdapter implements WheelAdapter { 8 | 9 | /** The default min value */ 10 | public static final int DEFAULT_MAX_VALUE = 9; 11 | 12 | /** The default max value */ 13 | private static final int DEFAULT_MIN_VALUE = 0; 14 | 15 | // Values 16 | private int minValue; 17 | private int maxValue; 18 | 19 | /** 20 | * Default constructor 21 | */ 22 | public NumericWheelAdapter() { 23 | this(DEFAULT_MIN_VALUE, DEFAULT_MAX_VALUE); 24 | } 25 | 26 | /** 27 | * Constructor 28 | * @param minValue the wheel min value 29 | * @param maxValue the wheel max value 30 | */ 31 | public NumericWheelAdapter(int minValue, int maxValue) { 32 | this.minValue = minValue; 33 | this.maxValue = maxValue; 34 | } 35 | 36 | @Override 37 | public Object getItem(int index) { 38 | if (index >= 0 && index < getItemsCount()) { 39 | int value = minValue + index; 40 | return value; 41 | } 42 | return 0; 43 | } 44 | 45 | @Override 46 | public int getItemsCount() { 47 | return maxValue - minValue + 1; 48 | } 49 | 50 | @Override 51 | public int indexOf(Object o){ 52 | return (int)o - minValue; 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /pickerview/src/main/java/calendar/bigkoo/pickerview/adapter/WheelAdapter.java: -------------------------------------------------------------------------------- 1 | package calendar.bigkoo.pickerview.adapter; 2 | 3 | public interface WheelAdapter { 4 | /** 5 | * Gets items count 6 | * @return the count of wheel items 7 | */ 8 | public int getItemsCount(); 9 | 10 | /** 11 | * Gets a wheel item by index. 12 | * 13 | * @param index the item index 14 | * @return the wheel item text or null 15 | */ 16 | public T getItem(int index); 17 | 18 | /** 19 | * Gets maximum item length. It is used to determine the wheel width. 20 | * If -1 is returned there will be used the default wheel width. 21 | * 22 | * @return the maximum item length or -1 23 | */ 24 | public int indexOf(T o); 25 | } 26 | -------------------------------------------------------------------------------- /pickerview/src/main/java/calendar/bigkoo/pickerview/dialog/PickerBaseDialog.java: -------------------------------------------------------------------------------- 1 | package calendar.bigkoo.pickerview.dialog; 2 | 3 | import android.app.AlertDialog; 4 | import android.content.Context; 5 | import android.view.Gravity; 6 | import android.view.ViewGroup; 7 | import android.view.Window; 8 | import android.view.WindowManager; 9 | 10 | import com.bigkoo.pickerview.R; 11 | 12 | /** 13 | * 弹出的框 14 | * Created by longfei.zhang on 2016/1/20. 15 | */ 16 | public class PickerBaseDialog extends AlertDialog{ 17 | public PickerBaseDialog(Context context) { 18 | super(context); 19 | } 20 | 21 | public PickerBaseDialog(Context context, int theme) { 22 | super(context, theme); 23 | } 24 | 25 | @Override 26 | public void show() { 27 | super.show(); 28 | //小米手机在show之前设置有问题 29 | Window mWindow = this.getWindow(); 30 | WindowManager.LayoutParams params = mWindow.getAttributes(); 31 | params.width = ViewGroup.LayoutParams.MATCH_PARENT; 32 | mWindow.setGravity(Gravity.BOTTOM); 33 | mWindow.setAttributes(params); 34 | mWindow.setWindowAnimations(R.style.AnimBottom); 35 | 36 | 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /pickerview/src/main/java/calendar/bigkoo/pickerview/lib/InertiaTimerTask.java: -------------------------------------------------------------------------------- 1 | package calendar.bigkoo.pickerview.lib; 2 | 3 | import java.util.TimerTask; 4 | 5 | final class InertiaTimerTask extends TimerTask { 6 | 7 | float a; 8 | final float velocityY; 9 | final WheelView loopView; 10 | 11 | InertiaTimerTask(WheelView loopview, float velocityY) { 12 | super(); 13 | loopView = loopview; 14 | this.velocityY = velocityY; 15 | a = Integer.MAX_VALUE; 16 | } 17 | 18 | @Override 19 | public final void run() { 20 | if (a == Integer.MAX_VALUE) { 21 | if (Math.abs(velocityY) > 2000F) { 22 | if (velocityY > 0.0F) { 23 | a = 2000F; 24 | } else { 25 | a = -2000F; 26 | } 27 | } else { 28 | a = velocityY; 29 | } 30 | } 31 | if (Math.abs(a) >= 0.0F && Math.abs(a) <= 20F) { 32 | loopView.cancelFuture(); 33 | loopView.handler.sendEmptyMessage(MessageHandler.WHAT_SMOOTH_SCROLL); 34 | return; 35 | } 36 | int i = (int) ((a * 10F) / 1000F); 37 | loopView.totalScrollY = loopView.totalScrollY - i; 38 | if (!loopView.isLoop) { 39 | float itemHeight = loopView.itemHeight; 40 | float top = (-loopView.initPosition) * itemHeight; 41 | float bottom = (loopView.getItemsCount() - 1 - loopView.initPosition) * itemHeight; 42 | if(loopView.totalScrollY - itemHeight*0.3 < top){ 43 | top = loopView.totalScrollY + i; 44 | } 45 | else if(loopView.totalScrollY + itemHeight*0.3 > bottom){ 46 | bottom = loopView.totalScrollY + i; 47 | } 48 | 49 | if (loopView.totalScrollY <= top){ 50 | a = 40F; 51 | loopView.totalScrollY = (int)top; 52 | } else if (loopView.totalScrollY >= bottom) { 53 | loopView.totalScrollY = (int)bottom; 54 | a = -40F; 55 | } 56 | } 57 | if (a < 0.0F) { 58 | a = a + 20F; 59 | } else { 60 | a = a - 20F; 61 | } 62 | loopView.handler.sendEmptyMessage(MessageHandler.WHAT_INVALIDATE_LOOP_VIEW); 63 | } 64 | 65 | } 66 | -------------------------------------------------------------------------------- /pickerview/src/main/java/calendar/bigkoo/pickerview/lib/LoopViewGestureListener.java: -------------------------------------------------------------------------------- 1 | package calendar.bigkoo.pickerview.lib; 2 | 3 | import android.view.MotionEvent; 4 | 5 | final class LoopViewGestureListener extends android.view.GestureDetector.SimpleOnGestureListener { 6 | 7 | final WheelView loopView; 8 | 9 | LoopViewGestureListener(WheelView loopview) { 10 | loopView = loopview; 11 | } 12 | 13 | @Override 14 | public final boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 15 | loopView.scrollBy(velocityY); 16 | return true; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /pickerview/src/main/java/calendar/bigkoo/pickerview/lib/MessageHandler.java: -------------------------------------------------------------------------------- 1 | package calendar.bigkoo.pickerview.lib; 2 | 3 | import android.os.Handler; 4 | import android.os.Message; 5 | 6 | final class MessageHandler extends Handler { 7 | public static final int WHAT_INVALIDATE_LOOP_VIEW = 1000; 8 | public static final int WHAT_SMOOTH_SCROLL = 2000; 9 | public static final int WHAT_ITEM_SELECTED = 3000; 10 | 11 | final WheelView loopview; 12 | 13 | MessageHandler(WheelView loopview) { 14 | this.loopview = loopview; 15 | } 16 | 17 | @Override 18 | public final void handleMessage(Message msg) { 19 | switch (msg.what) { 20 | case WHAT_INVALIDATE_LOOP_VIEW: 21 | loopview.invalidate(); 22 | break; 23 | 24 | case WHAT_SMOOTH_SCROLL: 25 | loopview.smoothScroll(WheelView.ACTION.FLING); 26 | break; 27 | 28 | case WHAT_ITEM_SELECTED: 29 | loopview.onItemSelected(); 30 | break; 31 | } 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /pickerview/src/main/java/calendar/bigkoo/pickerview/lib/OnItemSelectedRunnable.java: -------------------------------------------------------------------------------- 1 | package calendar.bigkoo.pickerview.lib; 2 | 3 | final class OnItemSelectedRunnable implements Runnable { 4 | final WheelView loopView; 5 | 6 | OnItemSelectedRunnable(WheelView loopview) { 7 | loopView = loopview; 8 | } 9 | 10 | @Override 11 | public final void run() { 12 | loopView.onItemSelectedListener.onItemSelected(loopView.getCurrentItem()); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /pickerview/src/main/java/calendar/bigkoo/pickerview/lib/SmoothScrollTimerTask.java: -------------------------------------------------------------------------------- 1 | package calendar.bigkoo.pickerview.lib; 2 | 3 | import java.util.TimerTask; 4 | 5 | final class SmoothScrollTimerTask extends TimerTask { 6 | 7 | int realTotalOffset; 8 | int realOffset; 9 | int offset; 10 | final WheelView loopView; 11 | 12 | SmoothScrollTimerTask(WheelView loopview, int offset) { 13 | this.loopView = loopview; 14 | this.offset = offset; 15 | realTotalOffset = Integer.MAX_VALUE; 16 | realOffset = 0; 17 | } 18 | 19 | @Override 20 | public final void run() { 21 | if (realTotalOffset == Integer.MAX_VALUE) { 22 | realTotalOffset = offset; 23 | } 24 | //把要滚动的范围细分成十小份,按是小份单位来重绘 25 | realOffset = (int) ((float) realTotalOffset * 0.1F); 26 | 27 | if (realOffset == 0) { 28 | if (realTotalOffset < 0) { 29 | realOffset = -1; 30 | } else { 31 | realOffset = 1; 32 | } 33 | } 34 | 35 | if (Math.abs(realTotalOffset) <= 1) { 36 | loopView.cancelFuture(); 37 | loopView.handler.sendEmptyMessage(MessageHandler.WHAT_ITEM_SELECTED); 38 | } else { 39 | loopView.totalScrollY = loopView.totalScrollY + realOffset; 40 | 41 | //这里如果不是循环模式,则点击空白位置需要回滚,不然就会出现选到-1 item的 情况 42 | if (!loopView.isLoop) { 43 | float itemHeight = loopView.itemHeight; 44 | float top = (float) (-loopView.initPosition) * itemHeight; 45 | float bottom = (float) (loopView.getItemsCount() - 1 - loopView.initPosition) * itemHeight; 46 | if (loopView.totalScrollY <= top||loopView.totalScrollY >= bottom) { 47 | loopView.totalScrollY = loopView.totalScrollY - realOffset; 48 | loopView.cancelFuture(); 49 | loopView.handler.sendEmptyMessage(MessageHandler.WHAT_ITEM_SELECTED); 50 | return; 51 | } 52 | } 53 | loopView.handler.sendEmptyMessage(MessageHandler.WHAT_INVALIDATE_LOOP_VIEW); 54 | realTotalOffset = realTotalOffset - realOffset; 55 | } 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /pickerview/src/main/java/calendar/bigkoo/pickerview/listener/OnDismissListener.java: -------------------------------------------------------------------------------- 1 | package calendar.bigkoo.pickerview.listener; 2 | 3 | /** 4 | * Created by Sai on 15/8/9. 5 | */ 6 | public interface OnDismissListener { 7 | public void onDismiss(Object o); 8 | } 9 | -------------------------------------------------------------------------------- /pickerview/src/main/java/calendar/bigkoo/pickerview/listener/OnItemSelectedListener.java: -------------------------------------------------------------------------------- 1 | package calendar.bigkoo.pickerview.listener; 2 | 3 | 4 | public interface OnItemSelectedListener { 5 | void onItemSelected(int index); 6 | } 7 | -------------------------------------------------------------------------------- /pickerview/src/main/java/calendar/bigkoo/pickerview/utils/PickerViewAnimateUtil.java: -------------------------------------------------------------------------------- 1 | package calendar.bigkoo.pickerview.utils; 2 | 3 | import android.view.Gravity; 4 | 5 | import com.bigkoo.pickerview.R; 6 | 7 | /** 8 | * Created by Sai on 15/8/9. 9 | */ 10 | public class PickerViewAnimateUtil { 11 | private static final int INVALID = -1; 12 | /** 13 | * Get default animation resource when not defined by the user 14 | * 15 | * @param gravity the gravity of the dialog 16 | * @param isInAnimation determine if is in or out animation. true when is is 17 | * @return the id of the animation resource 18 | */ 19 | public static int getAnimationResource(int gravity, boolean isInAnimation) { 20 | switch (gravity) { 21 | case Gravity.BOTTOM: 22 | return isInAnimation ? R.anim.slide_in_bottom : R.anim.slide_out_bottom; 23 | } 24 | return INVALID; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /pickerview/src/main/java/calendar/bigkoo/pickerview/utils/PickerViewUtils.java: -------------------------------------------------------------------------------- 1 | package calendar.bigkoo.pickerview.utils; 2 | 3 | import android.util.Log; 4 | 5 | import java.text.DateFormatSymbols; 6 | import java.text.SimpleDateFormat; 7 | import java.util.ArrayList; 8 | import java.util.Date; 9 | import java.util.List; 10 | import java.util.Locale; 11 | 12 | /** 13 | * Created by longfei.zhang on 2016/1/20. 14 | */ 15 | public class PickerViewUtils { 16 | /** 17 | * 获取1-12月字符串,中文1月2月。。。 18 | * @return 1-12月字符串集合 19 | */ 20 | public static ArrayList getMonths(){ 21 | ArrayList months1 = new ArrayList<>(); 22 | DateFormatSymbols symbols = new DateFormatSymbols(Locale.getDefault()); 23 | String[] months = symbols.getShortMonths(); 24 | for (int i = 0; i < months.length; i++) { 25 | months1.add(months[i]); 26 | } 27 | return months1; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /pickerview/src/main/java/calendar/bigkoo/pickerview/view/BasePickerView.java: -------------------------------------------------------------------------------- 1 | package calendar.bigkoo.pickerview.view; 2 | 3 | import android.content.Context; 4 | import android.view.Gravity; 5 | import android.view.LayoutInflater; 6 | import android.view.MotionEvent; 7 | import android.view.View; 8 | import android.view.ViewGroup; 9 | import android.view.animation.Animation; 10 | import android.view.animation.AnimationUtils; 11 | import android.widget.FrameLayout; 12 | 13 | import calendar.bigkoo.pickerview.dialog.PickerBaseDialog; 14 | import calendar.bigkoo.pickerview.utils.PickerViewAnimateUtil; 15 | import com.bigkoo.pickerview.R; 16 | import calendar.bigkoo.pickerview.listener.OnDismissListener; 17 | 18 | /** 19 | * Created by Sai on 15/11/22. 20 | * 精仿iOSPickerViewController控件 21 | */ 22 | public class BasePickerView { 23 | private final FrameLayout.LayoutParams params = new FrameLayout.LayoutParams( 24 | ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.BOTTOM 25 | ); 26 | 27 | private Context context; 28 | protected ViewGroup contentContainer; 29 | // private ViewGroup decorView;//activity的根View 30 | private ViewGroup rootView;//附加View 的 根View 31 | 32 | private OnDismissListener onDismissListener; 33 | private boolean isDismissing; 34 | 35 | private Animation outAnim; 36 | private Animation inAnim; 37 | private int gravity = Gravity.BOTTOM; 38 | private PickerBaseDialog mDialog; 39 | /** 40 | * 是否可以点击周围消失,默认false不可以 41 | */ 42 | private boolean isCancelOutSide = false; 43 | /** 44 | * 是否可以点击返回键消失,默认false不可以 45 | */ 46 | private boolean isCancelBack = false; 47 | public BasePickerView(Context context){ 48 | this.context = context; 49 | 50 | initViews(); 51 | init(); 52 | initEvents(); 53 | } 54 | 55 | protected void initViews(){ 56 | LayoutInflater layoutInflater = LayoutInflater.from(context); 57 | // decorView = (ViewGroup) ((Activity)context).getWindow().getDecorView().findViewById(android.R.id.content); 58 | rootView = (ViewGroup) layoutInflater.inflate(R.layout.layout_basepickerview, null); 59 | rootView.setLayoutParams(new FrameLayout.LayoutParams( 60 | ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT 61 | )); 62 | contentContainer = (ViewGroup) rootView.findViewById(R.id.content_container); 63 | contentContainer.setLayoutParams(params); 64 | } 65 | 66 | protected void init() { 67 | inAnim = getInAnimation(); 68 | outAnim = getOutAnimation(); 69 | } 70 | protected void initEvents() { 71 | } 72 | /** 73 | * show的时候调用 74 | * 75 | * @param view 这个View 76 | */ 77 | private void onAttached(View view) { 78 | // decorView.addView(view); 79 | contentContainer.startAnimation(inAnim); 80 | } 81 | 82 | private void alertDialog(View view){ 83 | mDialog = new PickerBaseDialog(context); 84 | mDialog.setCanceledOnTouchOutside(isCancelOutSide); 85 | mDialog.setCancelable(isCancelBack); 86 | mDialog.show(); 87 | mDialog.setContentView(view); 88 | } 89 | /** 90 | * 添加这个View到Dialog //Activity的根视图 91 | */ 92 | public void show() { 93 | if (isShowing()) { 94 | return; 95 | } 96 | alertDialog(rootView); 97 | // onAttached(rootView); 98 | } 99 | private void setCanceledOnTouchOutside(boolean isCancel){ 100 | this.isCancelOutSide = isCancel; 101 | } 102 | private void setCancelBack(boolean isCancel){ 103 | this.isCancelBack = isCancel; 104 | } 105 | // /** 106 | // * 检测该View是不是已经添加到根视图 107 | // * 108 | // * @return 如果视图已经存在该View返回true 109 | // */ 110 | // public boolean isShowing() { 111 | // mDialog.isShowing(); 112 | // View view = decorView.findViewById(R.id.outmost_container); 113 | // return view != null; 114 | // } 115 | 116 | public boolean isShowing() { 117 | if(mDialog == null){ 118 | return false; 119 | } 120 | return mDialog.isShowing(); 121 | } 122 | public void dismiss() { 123 | if (isDismissing) { 124 | return; 125 | } 126 | 127 | if(mDialog!=null&&mDialog.isShowing()){ 128 | mDialog.dismiss(); 129 | isDismissing = true; 130 | } 131 | // //消失动画 132 | // outAnim.setAnimationListener(new Animation.AnimationListener() { 133 | // @Override 134 | // public void onAnimationStart(Animation animation) { 135 | // 136 | // } 137 | // 138 | // @Override 139 | // public void onAnimationEnd(Animation animation) { 140 | // decorView.post(new Runnable() { 141 | // @Override 142 | // public void run() { 143 | // //从activity根视图移除 144 | // decorView.removeView(rootView); 145 | // isDismissing = false; 146 | // if (onDismissListener != null) { 147 | // onDismissListener.onDismiss(BasePickerView.this); 148 | // } 149 | // } 150 | // }); 151 | // } 152 | // 153 | // @Override 154 | // public void onAnimationRepeat(Animation animation) { 155 | // 156 | // } 157 | // }); 158 | // contentContainer.startAnimation(outAnim); 159 | 160 | } 161 | public Animation getInAnimation() { 162 | int res = PickerViewAnimateUtil.getAnimationResource(this.gravity, true); 163 | return AnimationUtils.loadAnimation(context, res); 164 | } 165 | 166 | public Animation getOutAnimation() { 167 | int res = PickerViewAnimateUtil.getAnimationResource(this.gravity, false); 168 | return AnimationUtils.loadAnimation(context, res); 169 | } 170 | 171 | public BasePickerView setOnDismissListener(OnDismissListener onDismissListener) { 172 | this.onDismissListener = onDismissListener; 173 | return this; 174 | } 175 | 176 | public BasePickerView setCancelable(boolean isCancelable) { 177 | View view = rootView.findViewById(R.id.outmost_container); 178 | 179 | if (isCancelable) { 180 | view.setOnTouchListener(onCancelableTouchListener); 181 | } 182 | else{ 183 | view.setOnTouchListener(null); 184 | } 185 | return this; 186 | } 187 | /** 188 | * Called when the user touch on black overlay in order to dismiss the dialog 189 | */ 190 | private final View.OnTouchListener onCancelableTouchListener = new View.OnTouchListener() { 191 | @Override 192 | public boolean onTouch(View v, MotionEvent event) { 193 | if (event.getAction() == MotionEvent.ACTION_DOWN) { 194 | dismiss(); 195 | } 196 | return false; 197 | } 198 | }; 199 | 200 | public View findViewById(int id){ 201 | return contentContainer.findViewById(id); 202 | } 203 | } 204 | -------------------------------------------------------------------------------- /pickerview/src/main/res/anim/slide_in_bottom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 11 | -------------------------------------------------------------------------------- /pickerview/src/main/res/anim/slide_out_bottom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 11 | -------------------------------------------------------------------------------- /pickerview/src/main/res/drawable/selector_pickerview_btn.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /pickerview/src/main/res/drawable/shape_layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /pickerview/src/main/res/drawable/shape_left_tv.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /pickerview/src/main/res/drawable/shape_left_tv_un.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /pickerview/src/main/res/drawable/shape_right_tv.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | -------------------------------------------------------------------------------- /pickerview/src/main/res/drawable/shape_right_tv_un.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | -------------------------------------------------------------------------------- /pickerview/src/main/res/layout/include_pickerview_topbar.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 18 | 19 | 20 | 28 | 29 | 41 | 52 | 53 | -------------------------------------------------------------------------------- /pickerview/src/main/res/layout/layout_basepickerview.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /pickerview/src/main/res/layout/pickerview_custom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 9 | 15 | 16 | 23 | 24 | 31 | 32 | -------------------------------------------------------------------------------- /pickerview/src/main/res/layout/pickerview_height.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 9 | 15 | 21 | 27 | 28 | 34 | 40 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /pickerview/src/main/res/layout/pickerview_options.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 11 | 12 | 18 | 19 | 25 | 26 | 31 | 32 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /pickerview/src/main/res/layout/pickerview_time.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 11 | 12 | 18 | 19 | 24 | 25 | 30 | 31 | 36 | 37 | 42 | 43 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /pickerview/src/main/res/layout/pickerview_weight.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 9 | 15 | 21 | 27 | 33 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /pickerview/src/main/res/layout/pickerview_ymd.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 9 | 10 | 16 | 22 | 28 | 34 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /pickerview/src/main/res/layout/switch_button.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 17 | 25 | -------------------------------------------------------------------------------- /pickerview/src/main/res/values-zh-rCN/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /pickerview/src/main/res/values/attrs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /pickerview/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #057dff 4 | #c2daf5 5 | #f5f5f5 6 | #000000 7 | #a8a8a8 8 | #2a2a2a 9 | #d5d5d5 10 | 11 | #60000000 12 | #FFFFFF 13 | 14 | #B7B7B7 15 | 16 | 17 | -------------------------------------------------------------------------------- /pickerview/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 44dp 4 | 5 | 15dp 6 | 7 | 15dp 8 | 9 | 16dp 10 | 18dp 11 | 12 | 1dp 13 | 100dp 14 | 35dp 15 | 15dp 16 | 3dp 17 | 2dp 18 | 19 | 80dp 20 | 21 | -------------------------------------------------------------------------------- /pickerview/src/main/res/values/integers.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 300 5 | -------------------------------------------------------------------------------- /pickerview/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 取消 4 | 确定 5 | 6 | 7 | 8 | 9 | 10 | 11 | CM 12 | IN 13 | KG 14 | LB 15 | 16 | -------------------------------------------------------------------------------- /pickerview/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 11 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app', ':javatest','pickerview' 2 | --------------------------------------------------------------------------------