├── app
├── .gitignore
├── src
│ ├── main
│ │ ├── res
│ │ │ ├── mipmap-hdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-mdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ ├── ic_launcher_round.png
│ │ │ │ ├── appoint_calendar_end_bg.png
│ │ │ │ └── appoint_calendar_start_bg.png
│ │ │ ├── mipmap-xhdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ └── ic_launcher_round.png
│ │ │ ├── values
│ │ │ │ ├── strings.xml
│ │ │ │ ├── styles.xml
│ │ │ │ ├── colors.xml
│ │ │ │ ├── attrs.xml
│ │ │ │ └── dimens.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ │ ├── ic_launcher.xml
│ │ │ │ └── ic_launcher_round.xml
│ │ │ ├── drawable
│ │ │ │ ├── appoint_calendar_sat_bg.xml
│ │ │ │ ├── appoint_calendar_sun_bg.xml
│ │ │ │ ├── appoint_calendar_bg.xml
│ │ │ │ └── ic_launcher_background.xml
│ │ │ ├── layout
│ │ │ │ ├── appoint_calendarview_item.xml
│ │ │ │ ├── activity_main.xml
│ │ │ │ ├── calendar_text_day.xml
│ │ │ │ └── appoint_calendarview.xml
│ │ │ ├── drawable-v24
│ │ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── values-1024x600
│ │ │ │ └── lay_x.xml
│ │ │ ├── values-1920x1200
│ │ │ │ └── lay_x.xml
│ │ │ ├── values-400x320
│ │ │ │ └── lay_x.xml
│ │ │ └── values-480x320
│ │ │ │ └── lay_x.xml
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── df
│ │ │ │ └── dfcalendar
│ │ │ │ ├── constant
│ │ │ │ └── CommonConstant.java
│ │ │ │ ├── widget
│ │ │ │ ├── CalendarDayRelativeLayout.java
│ │ │ │ ├── CalendarDayTextView.java
│ │ │ │ └── CalendarView.java
│ │ │ │ ├── MainActivity.java
│ │ │ │ └── util
│ │ │ │ └── DateUtil.java
│ │ └── AndroidManifest.xml
│ ├── test
│ │ └── java
│ │ │ └── com
│ │ │ └── df
│ │ │ └── dfcalendar
│ │ │ └── ExampleUnitTest.java
│ └── androidTest
│ │ └── java
│ │ └── com
│ │ └── df
│ │ └── dfcalendar
│ │ └── ExampleInstrumentedTest.java
├── proguard-rules.pro
└── build.gradle
├── settings.gradle
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── .gitignore
├── .idea
├── modules.xml
├── runConfigurations.xml
├── gradle.xml
└── misc.xml
├── gradle.properties
├── gradlew.bat
├── gradlew
└── README.md
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/danfengfirst/DfCalendar/HEAD/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/danfengfirst/DfCalendar/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/danfengfirst/DfCalendar/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/danfengfirst/DfCalendar/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/danfengfirst/DfCalendar/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/danfengfirst/DfCalendar/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/danfengfirst/DfCalendar/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/danfengfirst/DfCalendar/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/danfengfirst/DfCalendar/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/danfengfirst/DfCalendar/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/danfengfirst/DfCalendar/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/appoint_calendar_end_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/danfengfirst/DfCalendar/HEAD/app/src/main/res/mipmap-mdpi/appoint_calendar_end_bg.png
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/workspace.xml
5 | /.idea/libraries
6 | .DS_Store
7 | /build
8 | /captures
9 | .externalNativeBuild
10 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/appoint_calendar_start_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/danfengfirst/DfCalendar/HEAD/app/src/main/res/mipmap-mdpi/appoint_calendar_start_bg.png
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Sun Jun 03 13:51:11 CST 2018
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-4.1-all.zip
7 |
--------------------------------------------------------------------------------
/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | DfCalendar
3 | 年
4 | 月
5 | 日
6 | 时
7 | 分
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/appoint_calendar_sat_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/appoint_calendar_sun_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/appoint_calendarview_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/appoint_calendar_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/java/com/df/dfcalendar/constant/CommonConstant.java:
--------------------------------------------------------------------------------
1 | package com.df.dfcalendar.constant;
2 |
3 | /**
4 | * Created by Danfeng on 2018/6/3.
5 | */
6 |
7 | public class CommonConstant {
8 | //time formate
9 | public static final String TFORMATE_YMDHM = "yyyy-MM-dd HH:mm";
10 | public static final String TFORMATE_YMDHMS = "yyyy-MM-dd HH:mm:ss";
11 | public static final String TFORMATE_YMD = "yyyy-MM-dd";
12 | }
13 |
--------------------------------------------------------------------------------
/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/test/java/com/df/dfcalendar/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.df.dfcalendar;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.*;
6 |
7 | /**
8 | * Example local unit test, which will execute on the development machine (host).
9 | *
10 | * @see Testing documentation
11 | */
12 | public class ExampleUnitTest {
13 | @Test
14 | public void addition_isCorrect() throws Exception {
15 | assertEquals(4, 2 + 2);
16 | }
17 | }
--------------------------------------------------------------------------------
/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
12 |
--------------------------------------------------------------------------------
/.idea/gradle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #3F51B5
4 | #303F9F
5 | #FF4081
6 | #ffffff
7 | #66ffffff
8 | #CCffffff
9 |
10 | #FF25A4CE
11 | #FF55CACE
12 | #FFFFF95B
13 | #FFC3F5F5
14 | #FF1AA5C0
15 | #FF27A5BE
16 |
17 |
--------------------------------------------------------------------------------
/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 | org.gradle.jvmargs=-Xmx1536m
13 |
14 | # When configured, Gradle will run in incubating parallel mode.
15 | # This option should only be used with decoupled projects. More details, visit
16 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
17 | # org.gradle.parallel=true
18 |
--------------------------------------------------------------------------------
/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 |
--------------------------------------------------------------------------------
/app/src/main/res/values/attrs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/app/src/androidTest/java/com/df/dfcalendar/ExampleInstrumentedTest.java:
--------------------------------------------------------------------------------
1 | package com.df.dfcalendar;
2 |
3 | import android.content.Context;
4 | import android.support.test.InstrumentationRegistry;
5 | import android.support.test.runner.AndroidJUnit4;
6 |
7 | import org.junit.Test;
8 | import org.junit.runner.RunWith;
9 |
10 | import static org.junit.Assert.*;
11 |
12 | /**
13 | * Instrumented test, which will execute on an Android device.
14 | *
15 | * @see Testing documentation
16 | */
17 | @RunWith(AndroidJUnit4.class)
18 | public class ExampleInstrumentedTest {
19 | @Test
20 | public void useAppContext() throws Exception {
21 | // Context of the app under test.
22 | Context appContext = InstrumentationRegistry.getTargetContext();
23 |
24 | assertEquals("com.df.dfcalendar", appContext.getPackageName());
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/calendar_text_day.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
21 |
22 |
--------------------------------------------------------------------------------
/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 |
3 | android {
4 | compileSdkVersion 27
5 | defaultConfig {
6 | applicationId "com.df.dfcalendar"
7 | minSdkVersion 15
8 | targetSdkVersion 27
9 | versionCode 1
10 | versionName "1.0"
11 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
12 | }
13 | buildTypes {
14 | release {
15 | minifyEnabled false
16 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
17 | }
18 | }
19 | }
20 |
21 | dependencies {
22 | implementation fileTree(dir: 'libs', include: ['*.jar'])
23 | implementation 'com.android.support:appcompat-v7:27.1.1'
24 | implementation 'com.android.support.constraint:constraint-layout:1.1.0'
25 | implementation 'com.android.support:recyclerview-v7:27.0.2'
26 | implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.35'
27 |
28 | testImplementation 'junit:junit:4.12'
29 | androidTestImplementation 'com.android.support.test:runner:1.0.2'
30 | androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/app/src/main/java/com/df/dfcalendar/widget/CalendarDayRelativeLayout.java:
--------------------------------------------------------------------------------
1 | package com.df.dfcalendar.widget;
2 |
3 | import android.content.Context;
4 | import android.graphics.Canvas;
5 | import android.graphics.Paint;
6 | import android.util.AttributeSet;
7 | import android.widget.RelativeLayout;
8 | import com.df.dfcalendar.R;
9 |
10 |
11 | /**
12 | * Created by Danfeng on 2018/5/30.
13 | */
14 |
15 | public class CalendarDayRelativeLayout extends RelativeLayout {
16 | public CalendarDayRelativeLayout(Context context) {
17 | this(context, null);
18 | }
19 |
20 | public CalendarDayRelativeLayout(Context context, AttributeSet attrs) {
21 | super(context, attrs);
22 | }
23 |
24 | public void isDurationSat(boolean isSaturday) {
25 | this.setBackground(getResources().getDrawable(R.drawable.appoint_calendar_sat_bg));
26 | }
27 |
28 | public void isDurationSun(boolean isSunday) {
29 | this.setBackground(getResources().getDrawable(R.drawable.appoint_calendar_sun_bg));
30 | }
31 | public void isETime(boolean etime) {
32 | this.setBackground(getResources().getDrawable(R.mipmap.appoint_calendar_end_bg));}
33 | public void isSTime(boolean stime) {
34 | this.setBackground(getResources().getDrawable(R.mipmap.appoint_calendar_start_bg));
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/.idea/misc.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 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/app/src/main/java/com/df/dfcalendar/MainActivity.java:
--------------------------------------------------------------------------------
1 | package com.df.dfcalendar;
2 |
3 | import android.support.v7.app.AppCompatActivity;
4 | import android.os.Bundle;
5 | import android.widget.Toast;
6 |
7 | import com.df.dfcalendar.widget.CalendarView;
8 |
9 | import java.util.Date;
10 |
11 | public class MainActivity extends AppCompatActivity {
12 | CalendarView mCalendarView;
13 | @Override
14 | protected void onCreate(Bundle savedInstanceState) {
15 | super.onCreate(savedInstanceState);
16 | setContentView(R.layout.activity_main);
17 | mCalendarView=findViewById(R.id.appoint_calendar);
18 | initCalendarView();
19 | }
20 | private void initCalendarView() {
21 | mCalendarView.setETimeSelListener(new CalendarView.CalendatEtimSelListener() {
22 | @Override
23 | public void onETimeSelect(Date date) {
24 | if (date != null) {
25 | String etimestr = (date.getYear() + 1900) + getString(R.string.year) + (date.getMonth() + 1) + getString(R.string.month) + date.getDate() + getString(R.string.day);
26 | Toast.makeText(getApplicationContext(),"结束时间"+etimestr,Toast.LENGTH_SHORT).show();
27 | }
28 | }
29 | });
30 | mCalendarView.setSTimeSelListener(new CalendarView.CalendarSTimeSelListener() {
31 | @Override
32 | public void onSTimeSelect(Date date) {
33 | if (date != null) {
34 | String stimestr = (date.getYear() + 1900) + getString(R.string.year) + (date.getMonth() + 1) + getString(R.string.month) + date.getDate() + getString(R.string.day);
35 | Toast.makeText(getApplicationContext(),"开始时间"+stimestr,Toast.LENGTH_SHORT).show();
36 | }
37 | }
38 | });
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-v24/ic_launcher_foreground.xml:
--------------------------------------------------------------------------------
1 |
7 |
12 |
13 |
19 |
22 |
25 |
26 |
27 |
28 |
34 |
35 |
--------------------------------------------------------------------------------
/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 10sp
5 | 11sp
6 | 12sp
7 | 13sp
8 | 14sp
9 | 15sp
10 | 16sp
11 | 17sp
12 | 18sp
13 | 19sp
14 | 20sp
15 | 21sp
16 | 22sp
17 | 23sp
18 | 24sp
19 | 25sp
20 | 26sp
21 | 27sp
22 | 28sp
23 | 29sp
24 | 30sp
25 | 31sp
26 | 32sp
27 | 33sp
28 | 34sp
29 | 35sp
30 | 36sp
31 | 37sp
32 | 38sp
33 | 39sp
34 | 40sp
35 | 41sp
36 | 42sp
37 | 43sp
38 | 44sp
39 | 45sp
40 | 46sp
41 | 47sp
42 | 48sp
43 | 49sp
44 | 50sp
45 | 51sp
46 | 52sp
47 | 53sp
48 | 54sp
49 | 55sp
50 | 56sp
51 | 57sp
52 | 58sp
53 | 59sp
54 | 75sp
55 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/app/src/main/java/com/df/dfcalendar/util/DateUtil.java:
--------------------------------------------------------------------------------
1 | package com.df.dfcalendar.util;
2 |
3 | import java.sql.Timestamp;
4 | import java.text.ParseException;
5 | import java.text.SimpleDateFormat;
6 | import java.util.Calendar;
7 | import java.util.Date;
8 |
9 | /**
10 | * Created by Danfeng on 2018/4/22.
11 | */
12 |
13 | public class DateUtil {
14 |
15 | //Calendar 转化 String
16 | public static String calendarToStr(Calendar calendar,String format) {
17 |
18 | // Calendar calendat = Calendar.getInstance();
19 |
20 | SimpleDateFormat sdf = new SimpleDateFormat(format);
21 |
22 | return sdf.format(calendar.getTime());
23 | }
24 |
25 |
26 | //String 转化Calendar
27 | public static Calendar strToCalendar(String str,String format) {
28 |
29 | // String str = "2012-5-27";
30 | SimpleDateFormat sdf = new SimpleDateFormat(format);
31 | Date date = null;
32 | Calendar calendar = null;
33 | try {
34 | date = sdf.parse(str);
35 | calendar = Calendar.getInstance();
36 | calendar.setTime(date);
37 | } catch (ParseException e) {
38 | e.printStackTrace();
39 | }
40 | return calendar;
41 | }
42 |
43 |
44 | // Date 转化String
45 | public static String dateTostr(Date date,String format) {
46 |
47 | SimpleDateFormat sdf = new SimpleDateFormat(format);
48 | // String dateStr = sdf.format(new Date());
49 | String dateStr = sdf.format(date);
50 | return dateStr;
51 | }
52 |
53 |
54 | // String 转化Date
55 | public static Date strToDate(String str,String format) {
56 | SimpleDateFormat sdf = new SimpleDateFormat(format);
57 | Date date = null;
58 | try {
59 | date = sdf.parse(str);
60 | } catch (ParseException e) {
61 | e.printStackTrace();
62 | }
63 | return date;
64 | }
65 |
66 |
67 | //Date 转化Calendar
68 | public static Calendar dateToCalendar(Date date) {
69 | Calendar calendar = Calendar.getInstance();
70 | calendar.setTime(date);
71 | return calendar;
72 | }
73 |
74 |
75 | //Calendar转化Date
76 | public static Date calendarToDate(Calendar calendar) {
77 | return calendar.getTime();
78 | }
79 |
80 |
81 | // String 转成 Timestamp
82 |
83 | public static Timestamp strToTimeStamp(String str) {
84 |
85 | // Timestamp ts = Timestamp.valueOf("2012-1-14 08:11:00");
86 | return Timestamp.valueOf(str);
87 | }
88 |
89 |
90 | //Date 转 TimeStamp
91 | public static Timestamp dateToTimeStamp(Date date,String format) {
92 |
93 | SimpleDateFormat df = new SimpleDateFormat(format);
94 |
95 | String time = df.format(new Date());
96 |
97 | Timestamp ts = Timestamp.valueOf(time);
98 | return ts;
99 | }
100 | }
101 |
--------------------------------------------------------------------------------
/app/src/main/java/com/df/dfcalendar/widget/CalendarDayTextView.java:
--------------------------------------------------------------------------------
1 | package com.df.dfcalendar.widget;
2 |
3 | import android.content.Context;
4 | import android.graphics.Canvas;
5 | import android.graphics.Color;
6 | import android.graphics.Paint;
7 | import android.util.AttributeSet;
8 |
9 | import com.df.dfcalendar.R;
10 |
11 |
12 | /**
13 | * Created by Danfeng on 2018/4/20.
14 | */
15 | public class CalendarDayTextView extends android.support.v7.widget.AppCompatTextView {
16 | public boolean isToday;
17 | private boolean isSTime;
18 | private boolean isETime;
19 | private Context context;
20 |
21 | public void setEmptyColor(int emptyColor) {
22 | this.emptyColor = emptyColor;
23 | }
24 |
25 | public void setFillColor(int fillColor) {
26 | this.fillColor = fillColor;
27 | }
28 |
29 | private int emptyColor = Color.parseColor("#00ff00");
30 | private int fillColor = Color.parseColor("#00ff00");
31 |
32 | private Paint mPaintSTime;
33 | private Paint mPaintETime;
34 |
35 |
36 |
37 | public CalendarDayTextView(Context context) {
38 | super(context);
39 | initview(context);
40 | }
41 |
42 | public CalendarDayTextView(Context context, AttributeSet attrs) {
43 | super(context, attrs);
44 | initview(context);
45 | }
46 |
47 | private void initview(Context context) {
48 | this.context=context;
49 |
50 | mPaintSTime = new Paint(Paint.ANTI_ALIAS_FLAG);
51 | mPaintSTime.setStyle(Paint.Style.FILL);
52 | mPaintSTime.setColor(context.getResources().getColor(R.color.date_time_bg));
53 | mPaintSTime.setStrokeWidth(2);
54 |
55 | mPaintETime = new Paint(Paint.ANTI_ALIAS_FLAG);
56 | mPaintETime.setStyle(Paint.Style.FILL);
57 | mPaintETime.setColor(context.getResources().getColor(R.color.date_time_bg));
58 | mPaintETime.setStrokeWidth(2);
59 | }
60 |
61 | @Override
62 | protected void onDraw(Canvas canvas) {
63 | //根据当前逻辑开始时间必须先绘制结束时间
64 | if (isETime) {
65 | canvas.save();
66 | //移动到当前控件的中心,以中心为圆点绘制实心圆
67 | canvas.translate(getWidth() / 2, getHeight() / 2);
68 | canvas.drawCircle(0, 0, getWidth() / 2 , mPaintETime);
69 | canvas.restore();
70 | //此处必须将圆移动回开始位置,否则文本显示会受到影响
71 | canvas.translate(0, 0);
72 | }
73 |
74 | if (isSTime) {
75 | canvas.save();
76 | //移动到当前控件的中心,以中心为圆点绘制实心圆
77 | canvas.translate(getWidth() / 2, getHeight() / 2);
78 | canvas.drawCircle(0, 0, getWidth() / 2 , mPaintSTime);
79 | canvas.restore();
80 | //此处必须将圆移动回开始位置,否则文本显示会受到影响
81 | canvas.translate(0, 0);
82 | }
83 | super.onDraw(canvas);
84 | }
85 |
86 | public void setToday(boolean today) {
87 | isToday = today;
88 | this.setTextColor(context.getResources().getColor(R.color.date_today));
89 | }
90 |
91 | public void isETime(boolean etime) {
92 | isETime = etime;
93 | this.setTextColor(context.getResources().getColor(R.color.date_time_tv));
94 | }
95 |
96 | public void isSTime(boolean stime) {
97 | isSTime = stime;
98 | this.setTextColor(context.getResources().getColor(R.color.date_time_tv));
99 | }
100 |
101 | }
--------------------------------------------------------------------------------
/app/src/main/res/layout/appoint_calendarview.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
13 |
14 |
23 |
24 |
34 |
35 |
36 |
46 |
56 |
57 |
67 |
68 |
78 |
79 |
89 |
90 |
100 |
101 |
111 |
112 |
122 |
123 |
124 |
131 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
10 |
15 |
20 |
25 |
30 |
35 |
40 |
45 |
50 |
55 |
60 |
65 |
70 |
75 |
80 |
85 |
90 |
95 |
100 |
105 |
110 |
115 |
120 |
125 |
130 |
135 |
140 |
145 |
150 |
155 |
160 |
165 |
170 |
171 |
--------------------------------------------------------------------------------
/app/src/main/java/com/df/dfcalendar/widget/CalendarView.java:
--------------------------------------------------------------------------------
1 | package com.df.dfcalendar.widget;
2 |
3 | /**
4 | * Created by Danfeng on 2018/4/20.
5 | */
6 |
7 | import android.content.Context;
8 | import android.content.res.TypedArray;
9 | import android.graphics.Color;
10 | import android.support.annotation.Nullable;
11 | import android.support.v7.widget.GridLayoutManager;
12 | import android.support.v7.widget.LinearLayoutManager;
13 | import android.support.v7.widget.PagerSnapHelper;
14 | import android.support.v7.widget.RecyclerView;
15 | import android.util.AttributeSet;
16 | import android.view.LayoutInflater;
17 | import android.view.View;
18 | import android.widget.LinearLayout;
19 | import android.widget.TextView;
20 |
21 | import com.chad.library.adapter.base.BaseQuickAdapter;
22 | import com.chad.library.adapter.base.BaseViewHolder;
23 | import com.df.dfcalendar.R;
24 | import com.df.dfcalendar.constant.CommonConstant;
25 | import com.df.dfcalendar.util.DateUtil;
26 |
27 | import java.util.ArrayList;
28 | import java.util.Calendar;
29 | import java.util.Date;
30 | import java.util.HashMap;
31 | import java.util.Iterator;
32 | import java.util.List;
33 | import java.util.Map;
34 |
35 | /**
36 | * Created by Danfeng on 2018/4/20.
37 | */
38 | public class CalendarView extends LinearLayout {
39 | private TextView title;
40 | private RecyclerView recyclerView;
41 | private LinearLayoutManager linearLayoutManager;
42 |
43 | private Calendar curDate = Calendar.getInstance();
44 | //从服务器获取的日期
45 | private Date dateFromServer;
46 |
47 | //外层主recyclerview的adapter
48 | private MainRvAdapter mainAdapter;
49 | private List months = new ArrayList<>();
50 | private Context context;
51 |
52 | //相关属性
53 | private int titleColor;
54 | private int titleSize;
55 |
56 | private int enableSelectColor;
57 | private int disableSeletColor;
58 | private int todayColor;
59 | private int todayEmptyColor;
60 | private int todayFillColor;
61 |
62 | //卡片第一个月
63 | private int firstMonth = -1;//卡片第一个月(中间)
64 | private int secondMonth = -1;//卡片第二个月(中间)
65 | private int thirdMonth = -1;//卡片第三个月(中间)
66 |
67 | private List titles = new ArrayList<>();
68 |
69 | //点击的开始时间与结束时间
70 | private Date sDateTime;
71 | private Date eDateTime;
72 | private boolean isSelectingSTime = true;
73 |
74 | private HashMap allAdapters = new HashMap<>();
75 |
76 |
77 | public CalendarView(Context context) {
78 | this(context, null);
79 | }
80 |
81 | public CalendarView(Context context, AttributeSet attrs) {
82 | this(context, attrs, 0);
83 | }
84 |
85 |
86 | public CalendarView(Context context, AttributeSet attrs, int defStyleAttr) {
87 | super(context, attrs, defStyleAttr);
88 | TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.MyCalendar);
89 | titleColor = ta.getColor(R.styleable.MyCalendar_titleColor, Color.WHITE);
90 | titleSize = (int) ta.getDimension(R.styleable.MyCalendar_titleSize, 18);
91 | enableSelectColor = ta.getColor(R.styleable.MyCalendar_dayInMonthColor, context.getResources().getColor(R.color.white));
92 | disableSeletColor = ta.getColor(R.styleable.MyCalendar_dayOutMonthcolor, context.getResources().getColor(R.color.transparent40_white));
93 | todayColor = ta.getColor(R.styleable.MyCalendar_todayColor, Color.BLUE);
94 | todayEmptyColor = ta.getColor(R.styleable.MyCalendar_todayEmptycircleColor, Color.CYAN);
95 | todayFillColor = ta.getColor(R.styleable.MyCalendar_todayFillcircleColor, Color.CYAN);
96 | ta.recycle();
97 | this.context = context;
98 | initTime(context, "");
99 | init(context);
100 | }
101 | //该方法用于设置从服务器获取的时间,如果没有从服务器获取的时间将使用手机本地时间
102 | private void initTime(Context context, String time) {
103 | if (!time.equals("")) {
104 | curDate = DateUtil.strToCalendar(time, CommonConstant.TFORMATE_YMD);
105 | dateFromServer = DateUtil.strToDate(time, CommonConstant.TFORMATE_YMD);
106 | } else {
107 | curDate = Calendar.getInstance();
108 | dateFromServer = new Date();
109 | }
110 | }
111 |
112 | private void init(Context context) {
113 | bindView(context);
114 | bindEvent();
115 | }
116 |
117 |
118 | private void bindView(Context context) {
119 | View view = LayoutInflater.from(context).inflate(R.layout.appoint_calendarview, this, false);
120 | title = (TextView) view.findViewById(R.id.calendar_title);
121 | title.setTextColor(titleColor);
122 | title.setTextSize(titleSize);
123 | recyclerView = (RecyclerView) view.findViewById(R.id.calendar_rv);
124 | linearLayoutManager = new LinearLayoutManager(this.context, LinearLayoutManager.HORIZONTAL, false);
125 | recyclerView.setLayoutManager(linearLayoutManager);
126 | PagerSnapHelper snapHelper = new PagerSnapHelper();
127 | snapHelper.attachToRecyclerView(recyclerView);
128 | addView(view);
129 | }
130 |
131 | private void bindEvent() {
132 | renderCalendar("");
133 | }
134 |
135 | public void renderCalendar(String time) {
136 | months.clear();
137 | initTime(context, time);
138 | for (int i = 0; i < 3; i++) {
139 | ArrayList cells = new ArrayList<>();
140 | if (i != 0) {
141 | curDate.add(Calendar.MONTH, 1);//后推一个月
142 | } else {
143 | curDate.add(Calendar.MONTH, 0);//当前月
144 | }
145 | Calendar calendar = (Calendar) curDate.clone();
146 | //将日历设置到当月第一天
147 | calendar.set(Calendar.DAY_OF_MONTH, 1);
148 | //获得当月第一天是星期几,如果是星期一则返回1此时1-1=0证明上个月没有多余天数
149 | int prevDays = calendar.get(Calendar.DAY_OF_WEEK) - 1;
150 | //将calendar在1号的基础上向前推prevdays天。
151 | calendar.add(Calendar.DAY_OF_MONTH, -prevDays);
152 | //最大行数是6*7也就是,1号正好是星期六时的情况
153 | int maxCellcount = 6 * 7;
154 | while (cells.size() < maxCellcount) {
155 | cells.add(calendar.getTime());
156 | //日期后移一天
157 | calendar.add(calendar.DAY_OF_MONTH, 1);
158 | }
159 | months.add(new CalendarCell(i, cells));
160 | }
161 |
162 | firstMonth = dateFromServer.getMonth();//第一个月
163 | secondMonth = months.get(1).getCells().get(20).getMonth();//第二个月
164 | thirdMonth = months.get(2).getCells().get(20).getMonth();//第三个月
165 | for (int i = 0; i < months.size(); i++) {
166 | //title格式 2018年6月3日
167 | String title = (months.get(i).getCells().get(20).getYear() + 1900) +
168 | context.getResources().getString(R.string.year) +
169 | (months.get(i).getCells().get(20).getMonth() + 1) + context.getResources().getString(R.string.month);
170 | titles.add(title);
171 | }
172 | title.setText(titles.get(0));
173 | //只限定3个月,因此模拟给3个数值即可
174 | mainAdapter = new MainRvAdapter(R.layout.appoint_calendarview_item, months);
175 | recyclerView.setAdapter(mainAdapter);
176 | //recyclerview 的滚动监听
177 | recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
178 | @Override
179 | public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
180 | title.setText(titles.get(linearLayoutManager.findLastVisibleItemPosition()));
181 | super.onScrollStateChanged(recyclerView, newState);
182 | }
183 | });
184 | }
185 |
186 | /**
187 | * 最外层水平recyclerview的adapter
188 | */
189 | private class MainRvAdapter extends BaseQuickAdapter {
190 |
191 | public MainRvAdapter(int layoutResId, @Nullable List data) {
192 | super(layoutResId, data);
193 | }
194 |
195 | @Override
196 | protected void convert(BaseViewHolder helper, final CalendarCell item) {
197 | if (((RecyclerView) helper.getView(R.id.appoint_calendarview_item_rv)).getLayoutManager() == null) {
198 | //RecyclerView不能都使用同一个LayoutManager
199 | GridLayoutManager manager = new GridLayoutManager(mContext, 7);
200 | //recyclerview嵌套高度不固定(wrap_content)时必须setAutoMeasureEnabled(true),否则测量时控件高度为0
201 | manager.setAutoMeasureEnabled(true);
202 | ((RecyclerView) helper.getView(R.id.appoint_calendarview_item_rv)).setLayoutManager(manager);
203 | }
204 | SubRvAdapter subRvAdapter = null;
205 | if (allAdapters.get(helper.getPosition()) == null) {
206 | subRvAdapter = new SubRvAdapter(R.layout.calendar_text_day, item.getCells());
207 | allAdapters.put(helper.getPosition(), subRvAdapter);
208 | ((RecyclerView) helper.getView(R.id.appoint_calendarview_item_rv)).setAdapter(subRvAdapter);
209 | } else {
210 | subRvAdapter = allAdapters.get(helper.getPosition());
211 | ((RecyclerView) helper.getView(R.id.appoint_calendarview_item_rv)).setAdapter(subRvAdapter);
212 | }
213 | //item 点击事件响应
214 | subRvAdapter.setOnItemClickListener(new OnItemClickListener() {
215 | @Override
216 | public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
217 | Date date = item.getCells().get(position);
218 | int day = date.getDate();
219 | if (date.getMonth() == secondMonth
220 | || (date.getDate() > dateFromServer.getDate() && date.getMonth() == firstMonth)
221 | || (date.getDate() <= dateFromServer.getDate() && date.getMonth() == thirdMonth)) {
222 | //可点击数据
223 | if (isSelectingSTime) {
224 | //正在选择开始时间
225 | selectSDate(item.getCells().get(position));
226 | } else {
227 | //正在选择结束时间
228 | selectEDate(item.getCells().get(position));
229 | }
230 | }
231 | //更新所有的adapter,比如今天6月,需要更新6、7、8三个月份不同adapter
232 | Iterator iterator = allAdapters.entrySet().iterator();
233 | while (iterator.hasNext()) {
234 | Map.Entry entry = (Map.Entry) iterator.next();
235 | ((SubRvAdapter) entry.getValue()).notifyDataSetChanged();
236 | }
237 | }
238 | });
239 | }
240 | }
241 |
242 | public void selectSDate(Date date) {
243 | if (sDateTime != null && eDateTime != null) {
244 | sDateTime = date;
245 |
246 | notifyDateSelectChanged();
247 | } else {
248 | sDateTime = date;
249 | notifyDateSelectChanged();
250 | }
251 | eDateTime = null;
252 | isSelectingSTime = false;
253 | }
254 |
255 | public void selectEDate(Date date) {
256 | if (sDateTime != null) {
257 | if (date.getTime() > sDateTime.getTime()) {
258 | eDateTime = date;
259 | isSelectingSTime = true;
260 | notifyDateSelectChanged();
261 | }
262 | }
263 |
264 | }
265 |
266 | /**
267 | * 通知开始时间跟结束时间均改变
268 | */
269 | public void notifyDateSelectChanged() {
270 | if (mETimeSelectListener != null && eDateTime != null) {
271 | mETimeSelectListener.onETimeSelect(eDateTime);
272 | }
273 | if (mSTimeSelectListener != null && sDateTime != null) {
274 | mSTimeSelectListener.onSTimeSelect(sDateTime);
275 | }
276 | }
277 |
278 |
279 | private class SubRvAdapter extends BaseQuickAdapter {
280 |
281 | public SubRvAdapter(int layoutResId, @Nullable List data) {
282 | super(layoutResId, data);
283 | }
284 |
285 | @Override
286 | protected void convert(BaseViewHolder helper, Date date) {
287 | helper.setIsRecyclable(false);//不让recyclerview进行复用,复用会出问题
288 | ((CalendarDayTextView) helper.getView(R.id.calendar_day_tv)).setEmptyColor(todayEmptyColor);
289 | ((CalendarDayTextView) helper.getView(R.id.calendar_day_tv)).setFillColor(todayFillColor);
290 | int day = date.getDate();
291 | //设置文本
292 | ((CalendarDayTextView) helper.getView(R.id.calendar_day_tv)).setText(String.valueOf(day));
293 | //设置颜色
294 | if (date.getMonth() == secondMonth
295 | || (date.getDate() > dateFromServer.getDate() && date.getMonth() == firstMonth)
296 | || (date.getDate() <= dateFromServer.getDate() && date.getMonth() == thirdMonth)) {
297 | //可选时间
298 | ((CalendarDayTextView) helper.getView(R.id.calendar_day_tv)).setTextColor(enableSelectColor);
299 | } else {
300 | //不可选时间
301 | ((CalendarDayTextView) helper.getView(R.id.calendar_day_tv)).setTextColor(disableSeletColor);
302 | }
303 | if (eDateTime != null && date.getTime() == eDateTime.getTime()) {
304 | //结束时间
305 | ((CalendarDayTextView) helper.getView(R.id.calendar_day_tv)).isETime(true);
306 | ((CalendarDayRelativeLayout) helper.getView(R.id.calendar_day_rl)).isETime(true);
307 | }
308 | if (sDateTime != null && date.getTime() == sDateTime.getTime()) {
309 | //开始时间
310 | if (eDateTime != null) {
311 | ((CalendarDayTextView) helper.getView(R.id.calendar_day_tv)).isSTime(true);
312 | ((CalendarDayRelativeLayout) helper.getView(R.id.calendar_day_rl)).isSTime(true);
313 | } else {
314 | ((CalendarDayTextView) helper.getView(R.id.calendar_day_tv)).isSTime(true);
315 | }
316 | }
317 | if (sDateTime != null && eDateTime != null && date.getTime() > sDateTime.getTime() && date.getTime() < eDateTime.getTime()) {
318 | if (date.getDay() == 6) {
319 | ((CalendarDayRelativeLayout) helper.getView(R.id.calendar_day_rl)).isDurationSat(true);
320 | } else if (date.getDay() == 0) {
321 | ((CalendarDayRelativeLayout) helper.getView(R.id.calendar_day_rl)).isDurationSun(true);
322 | } else {
323 | helper.getView(R.id.calendar_day_rl).setBackgroundColor(getResources().getColor(R.color.date_duration_bg));
324 | }
325 | }
326 | if (date.getDate() == dateFromServer.getDate() && date.getMonth() == firstMonth) {
327 | ((CalendarDayTextView) helper.getView(R.id.calendar_day_tv)).setToday(true);
328 | }
329 | }
330 | }
331 |
332 | private class CalendarCell {
333 | private int position;
334 | ArrayList cells;
335 |
336 | public CalendarCell(int position, ArrayList cells) {
337 | this.position = position;
338 | this.cells = cells;
339 | }
340 |
341 | public int getPosition() {
342 | return position;
343 | }
344 |
345 | public void setPosition(int position) {
346 | this.position = position;
347 | }
348 |
349 | public ArrayList getCells() {
350 | return cells;
351 | }
352 |
353 | public void setCells(ArrayList cells) {
354 | this.cells = cells;
355 | }
356 | }
357 |
358 |
359 | //开始时间的选择监听
360 | public interface CalendarSTimeSelListener {
361 | void onSTimeSelect(Date date);
362 | }
363 |
364 | private CalendarSTimeSelListener mSTimeSelectListener;
365 |
366 | public void setSTimeSelListener(CalendarSTimeSelListener li) {
367 | mSTimeSelectListener = li;
368 | }
369 |
370 | //结束时间的监听事件
371 | public interface CalendatEtimSelListener {
372 | void onETimeSelect(Date date);
373 | }
374 |
375 | private CalendatEtimSelListener mETimeSelectListener;
376 |
377 | public void setETimeSelListener(CalendatEtimSelListener li) {
378 | mETimeSelectListener = li;
379 | }
380 |
381 | }
382 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 | 前阵子app里需要用到日历,效果图如上,做日历我本来是不担心的,因为之前就有写过,比如我之前的文章
4 | https://blog.csdn.net/danfengw/article/details/72764995
5 | 就是写自定义日历的,但是看到具体的产品需求以及效果图,我就”嗯,很好……“,不是我不喜欢自定义,而是效果图里面的细节真的是有点多,好了,我们来看看细节:
6 |
7 | 1、产品需求只显示近3个月,当天时间之前的日期灰色,三个月后当前日期之后的日期也是灰色人,嗯,不明白?那我们来举个例子:今天6月3号,显示3个月,也就是6-8月,6.3号之前是灰色,6.3号是黄色,8.3号之后是灰色。
8 |
9 | 2、选择日期,第一次选择是开始日期,第二次选择是结束日期,再次选择则是开始日期(这里你可能会考虑为什么不是我第三次选择日期如果日期比结束日期晚则作为结束日期,比开始日期早则作为开始日期呢?这个逻辑我之前也尝试过,对于用户操作(1)有时候操作不方便(2)关于选择日期会有疑惑,所以才采用了这种相对容易理解的方式)。
10 |
11 | 3、选择的开始日期与结束日期分别加了圆圈背景,同时在开始日期与结束日期之间的区域,周六跟周天分别是右半圆跟左半圆背景,其他日期都是矩形背景。
12 |
13 |
14 | 好了,细节大概是说完了,如果想要理解这篇自定义view建议先去看我上面链接里的自定义日历这篇文章,循序渐进。
15 |
16 | 下面再说一下实现思路:recyclerview嵌套,一个水平方向LinearLayoutManager嵌套一个GridLayoutManager说完你大概是理解了吧?
17 |
18 | ps:定制版控件,只适合用来学习思路,如果要用到你自己的项目,还是需要修改的。
19 |
20 |
21 | # csdn 地址
22 | https://blog.csdn.net/danfengw/article/details/80556062
23 |
24 |
25 | # 代码思路
26 | 1、recyclerview嵌套,设置日期
27 |
28 | 2、继承textview自定义textview,主要用于修改开始日期与结束日期的圆形背景
29 |
30 | 3、继承relativelayout自定义relativelayout,主要用于设置被选中日期的中间时间段。
31 |
32 | ## 1、CalendarView
33 | (0)初始化布局
34 | ```
35 | private void bindView(Context context) {
36 | View view = LayoutInflater.from(context).inflate(R.layout.appoint_calendarview, this, false);
37 | title = (TextView) view.findViewById(R.id.calendar_title);
38 | title.setTextColor(titleColor);
39 | title.setTextSize(titleSize);
40 | recyclerView = (RecyclerView) view.findViewById(R.id.calendar_rv);
41 | linearLayoutManager = new LinearLayoutManager(this.context, LinearLayoutManager.HORIZONTAL, false);
42 | recyclerView.setLayoutManager(linearLayoutManager);
43 | PagerSnapHelper snapHelper = new PagerSnapHelper();
44 | snapHelper.attachToRecyclerView(recyclerView);
45 | addView(view);
46 | }
47 | ```
48 | appoint_calendarview.xml(可以将布局直接拷贝到自己项目,能更好的理解,所以我把布局给贴出来了)
49 | ```
50 |
51 |
56 |
57 |
62 |
63 |
72 |
73 |
83 |
84 |
85 |
95 |
105 |
106 |
116 |
117 |
127 |
128 |
138 |
139 |
149 |
150 |
160 |
161 |
171 |
172 |
173 |
180 |
181 | ```
182 |
183 | (1)设置时间
184 | ```
185 | //该方法用于设置从服务器获取的时间,如果没有从服务器获取的时间将使用手机本地时间
186 | private void initTime(Context context, String time) {
187 | if (!time.equals("")) {
188 | curDate = DateUtil.strToCalendar(time, CommonConstant.TFORMATE_YMD);
189 | dateFromServer = DateUtil.strToDate(time, CommonConstant.TFORMATE_YMD);
190 | } else {
191 | curDate = Calendar.getInstance();
192 | dateFromServer = new Date();
193 | }
194 | }
195 | ```
196 | (2)设置3个月时间
197 | 这部分跟上一篇的自定义日历基本一致,但添加了3个月的限制。
198 | ```
199 | public void renderCalendar(String time) {
200 | months.clear();
201 | initTime(context, time);
202 | for (int i = 0; i < 3; i++) {
203 | ArrayList cells = new ArrayList<>();
204 | if (i != 0) {
205 | curDate.add(Calendar.MONTH, 1);//后推一个月
206 | } else {
207 | curDate.add(Calendar.MONTH, 0);//当前月
208 | }
209 | Calendar calendar = (Calendar) curDate.clone();
210 | //将日历设置到当月第一天
211 | calendar.set(Calendar.DAY_OF_MONTH, 1);
212 | //获得当月第一天是星期几,如果是星期一则返回1此时1-1=0证明上个月没有多余天数
213 | int prevDays = calendar.get(Calendar.DAY_OF_WEEK) - 1;
214 | //将calendar在1号的基础上向前推prevdays天。
215 | calendar.add(Calendar.DAY_OF_MONTH, -prevDays);
216 | //最大行数是6*7也就是,1号正好是星期六时的情况
217 | int maxCellcount = 6 * 7;
218 | while (cells.size() < maxCellcount) {
219 | cells.add(calendar.getTime());
220 | //日期后移一天
221 | calendar.add(calendar.DAY_OF_MONTH, 1);
222 | }
223 | months.add(new CalendarCell(i, cells));
224 | }
225 |
226 | firstMonth = dateFromServer.getMonth();//第一个月
227 | secondMonth = months.get(1).getCells().get(20).getMonth();//第二个月
228 | thirdMonth = months.get(2).getCells().get(20).getMonth();//第三个月
229 | for (int i = 0; i < months.size(); i++) {
230 | //title格式 2018年6月3日
231 | String title = (months.get(i).getCells().get(20).getYear() + 1900) +
232 | context.getResources().getString(R.string.year) +
233 | (months.get(i).getCells().get(20).getMonth() + 1) + context.getResources().getString(R.string.month);
234 | titles.add(title);
235 | }
236 | title.setText(titles.get(0));
237 | //只限定3个月,因此模拟给3个数值即可
238 | mainAdapter = new MainRvAdapter(R.layout.appoint_calendarview_item, months);
239 | recyclerView.setAdapter(mainAdapter);
240 | //recyclerview 的滚动监听
241 | recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
242 | @Override
243 | public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
244 | title.setText(titles.get(linearLayoutManager.findLastVisibleItemPosition()));
245 | super.onScrollStateChanged(recyclerView, newState);
246 | }
247 | });
248 | }
249 |
250 | ```
251 | appoint_calendarview_item.xml
252 | ```
253 |
254 |
259 |
260 |
261 | ```
262 | (3)设置最外层水平recyclerview的adapter,需要注意注释的几个点
263 | ```
264 | /**
265 | * 最外层水平recyclerview的adapter
266 | */
267 | private class MainRvAdapter extends BaseQuickAdapter {
268 |
269 | public MainRvAdapter(int layoutResId, @Nullable List data) {
270 | super(layoutResId, data);
271 | }
272 |
273 | @Override
274 | protected void convert(BaseViewHolder helper, final CalendarCell item) {
275 | if (((RecyclerView) helper.getView(R.id.appoint_calendarview_item_rv)).getLayoutManager() == null) {
276 | //RecyclerView不能都使用同一个LayoutManager
277 | GridLayoutManager manager = new GridLayoutManager(mContext, 7);
278 | //recyclerview嵌套高度不固定(wrap_content)时必须setAutoMeasureEnabled(true),否则测量时控件高度为0
279 | manager.setAutoMeasureEnabled(true);
280 | ((RecyclerView) helper.getView(R.id.appoint_calendarview_item_rv)).setLayoutManager(manager);
281 | }
282 | SubRvAdapter subRvAdapter = null;
283 | if (allAdapters.get(helper.getPosition()) == null) {
284 | subRvAdapter = new SubRvAdapter(R.layout.calendar_text_day, item.getCells());
285 | allAdapters.put(helper.getPosition(), subRvAdapter);
286 | ((RecyclerView) helper.getView(R.id.appoint_calendarview_item_rv)).setAdapter(subRvAdapter);
287 | } else {
288 | subRvAdapter = allAdapters.get(helper.getPosition());
289 | ((RecyclerView) helper.getView(R.id.appoint_calendarview_item_rv)).setAdapter(subRvAdapter);
290 | }
291 | //item 点击事件响应
292 | subRvAdapter.setOnItemClickListener(new OnItemClickListener() {
293 | @Override
294 | public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
295 | Date date = item.getCells().get(position);
296 | int day = date.getDate();
297 | if (date.getMonth() == secondMonth
298 | || (date.getDate() > dateFromServer.getDate() && date.getMonth() == firstMonth)
299 | || (date.getDate() <= dateFromServer.getDate() && date.getMonth() == thirdMonth)) {
300 | //可点击数据
301 | if (isSelectingSTime) {
302 | //正在选择开始时间
303 | selectSDate(item.getCells().get(position));
304 | } else {
305 | //正在选择结束时间
306 | selectEDate(item.getCells().get(position));
307 | }
308 | }
309 | //更新所有的adapter,比如今天6月,需要更新6、7、8三个月份不同adapter
310 | Iterator iterator = allAdapters.entrySet().iterator();
311 | while (iterator.hasNext()) {
312 | Map.Entry entry = (Map.Entry) iterator.next();
313 | ((SubRvAdapter) entry.getValue()).notifyDataSetChanged();
314 | }
315 | }
316 | });
317 | }
318 | }
319 | ```
320 | (4)SubRvAdapter
321 | 这里主要是通过时间进行判断,具体逻辑根据效果图考虑
322 | ```
323 | private class SubRvAdapter extends BaseQuickAdapter {
324 |
325 | public SubRvAdapter(int layoutResId, @Nullable List data) {
326 | super(layoutResId, data);
327 | }
328 |
329 | @Override
330 | protected void convert(BaseViewHolder helper, Date date) {
331 | helper.setIsRecyclable(false);//不让recyclerview进行复用,复用会出问题
332 | ((CalendarDayTextView) helper.getView(R.id.calendar_day_tv)).setEmptyColor(todayEmptyColor);
333 | ((CalendarDayTextView) helper.getView(R.id.calendar_day_tv)).setFillColor(todayFillColor);
334 | int day = date.getDate();
335 | //设置文本
336 | ((CalendarDayTextView) helper.getView(R.id.calendar_day_tv)).setText(String.valueOf(day));
337 | //设置颜色
338 | if (date.getMonth() == secondMonth
339 | || (date.getDate() > dateFromServer.getDate() && date.getMonth() == firstMonth)
340 | || (date.getDate() <= dateFromServer.getDate() && date.getMonth() == thirdMonth)) {
341 | //可选时间
342 | ((CalendarDayTextView) helper.getView(R.id.calendar_day_tv)).setTextColor(enableSelectColor);
343 | } else {
344 | //不可选时间
345 | ((CalendarDayTextView) helper.getView(R.id.calendar_day_tv)).setTextColor(disableSeletColor);
346 | }
347 | if (eDateTime != null && date.getTime() == eDateTime.getTime()) {
348 | //结束时间
349 | ((CalendarDayTextView) helper.getView(R.id.calendar_day_tv)).isETime(true);
350 | ((CalendarDayRelativeLayout) helper.getView(R.id.calendar_day_rl)).isETime(true);
351 | }
352 | if (sDateTime != null && date.getTime() == sDateTime.getTime()) {
353 | //开始时间
354 | if (eDateTime != null) {
355 | ((CalendarDayTextView) helper.getView(R.id.calendar_day_tv)).isSTime(true);
356 | ((CalendarDayRelativeLayout) helper.getView(R.id.calendar_day_rl)).isSTime(true);
357 | } else {
358 | ((CalendarDayTextView) helper.getView(R.id.calendar_day_tv)).isSTime(true);
359 | }
360 | }
361 | if (sDateTime != null && eDateTime != null && date.getTime() > sDateTime.getTime() && date.getTime() < eDateTime.getTime()) {
362 | if (date.getDay() == 6) {//星期六
363 | ((CalendarDayRelativeLayout) helper.getView(R.id.calendar_day_rl)).isDurationSat(true);
364 | } else if (date.getDay() == 0) {//星期日
365 | ((CalendarDayRelativeLayout) helper.getView(R.id.calendar_day_rl)).isDurationSun(true);
366 | } else {
367 | helper.getView(R.id.calendar_day_rl).setBackgroundColor(getResources().getColor(R.color.date_duration_bg));
368 | }
369 | }
370 | if (date.getDate() == dateFromServer.getDate() && date.getMonth() == firstMonth) {
371 | ((CalendarDayTextView) helper.getView(R.id.calendar_day_tv)).setToday(true);
372 | }
373 | }
374 | }
375 |
376 | ```
377 | SubRvAdapter 需要的对应的布局
378 | ```
379 |
380 |
388 |
389 |
399 |
400 |
401 | ```
402 | ## 2、CalendarDayTextView
403 |
404 | 其实这里画笔只需要一个因为开始时间与结束时间样式一样,但是最开始的时候设计的是颜色不一样,所以就写了2个画笔
405 | ```
406 | public class CalendarDayTextView extends android.support.v7.widget.AppCompatTextView {
407 | public boolean isToday;
408 | private boolean isSTime;
409 | private boolean isETime;
410 | private Context context;
411 |
412 | public void setEmptyColor(int emptyColor) {
413 | this.emptyColor = emptyColor;
414 | }
415 |
416 | public void setFillColor(int fillColor) {
417 | this.fillColor = fillColor;
418 | }
419 |
420 | private int emptyColor = Color.parseColor("#00ff00");
421 | private int fillColor = Color.parseColor("#00ff00");
422 |
423 | private Paint mPaintSTime;
424 | private Paint mPaintETime;
425 |
426 |
427 |
428 | public CalendarDayTextView(Context context) {
429 | super(context);
430 | initview(context);
431 | }
432 |
433 | public CalendarDayTextView(Context context, AttributeSet attrs) {
434 | super(context, attrs);
435 | initview(context);
436 | }
437 |
438 | private void initview(Context context) {
439 | this.context=context;
440 |
441 | mPaintSTime = new Paint(Paint.ANTI_ALIAS_FLAG);
442 | mPaintSTime.setStyle(Paint.Style.FILL);
443 | mPaintSTime.setColor(context.getResources().getColor(R.color.date_time_bg));
444 | mPaintSTime.setStrokeWidth(2);
445 |
446 | mPaintETime = new Paint(Paint.ANTI_ALIAS_FLAG);
447 | mPaintETime.setStyle(Paint.Style.FILL);
448 | mPaintETime.setColor(context.getResources().getColor(R.color.date_time_bg));
449 | mPaintETime.setStrokeWidth(2);
450 | }
451 |
452 | @Override
453 | protected void onDraw(Canvas canvas) {
454 | //根据当前逻辑开始时间必须先绘制结束时间
455 | if (isETime) {
456 | canvas.save();
457 | //移动到当前控件的中心,以中心为圆点绘制实心圆
458 | canvas.translate(getWidth() / 2, getHeight() / 2);
459 | canvas.drawCircle(0, 0, getWidth() / 2 , mPaintETime);
460 | canvas.restore();
461 | //此处必须将圆移动回开始位置,否则文本显示会受到影响
462 | canvas.translate(0, 0);
463 | }
464 |
465 | if (isSTime) {
466 | canvas.save();
467 | //移动到当前控件的中心,以中心为圆点绘制实心圆
468 | canvas.translate(getWidth() / 2, getHeight() / 2);
469 | canvas.drawCircle(0, 0, getWidth() / 2 , mPaintSTime);
470 | canvas.restore();
471 | //此处必须将圆移动回开始位置,否则文本显示会受到影响
472 | canvas.translate(0, 0);
473 | }
474 | super.onDraw(canvas);
475 | }
476 |
477 | public void setToday(boolean today) {
478 | isToday = today;
479 | this.setTextColor(context.getResources().getColor(R.color.date_today));
480 | }
481 |
482 | public void isETime(boolean etime) {
483 | isETime = etime;
484 | this.setTextColor(context.getResources().getColor(R.color.date_time_tv));
485 | }
486 |
487 | public void isSTime(boolean stime) {
488 | isSTime = stime;
489 | this.setTextColor(context.getResources().getColor(R.color.date_time_tv));
490 | }
491 |
492 | }
493 | ```
494 | ## 3.CalendarDayRelativeLayout
495 | 自定义CalendarDayRelativeLayout,来设置不同背景:(1)长方形背景 (2)星期六(有半圆)(3)星期天(左半圆)
496 | ```
497 | public class CalendarDayRelativeLayout extends RelativeLayout {
498 | public CalendarDayRelativeLayout(Context context) {
499 | this(context, null);
500 | }
501 |
502 | public CalendarDayRelativeLayout(Context context, AttributeSet attrs) {
503 | super(context, attrs);
504 | }
505 |
506 | public void isDurationSat(boolean isSaturday) {
507 | this.setBackground(getResources().getDrawable(R.drawable.appoint_calendar_sat_bg));
508 | }
509 |
510 | public void isDurationSun(boolean isSunday) {
511 | this.setBackground(getResources().getDrawable(R.drawable.appoint_calendar_sun_bg));
512 | }
513 | public void isETime(boolean etime) {
514 | this.setBackground(getResources().getDrawable(R.mipmap.appoint_calendar_end_bg));}
515 | public void isSTime(boolean stime) {
516 | this.setBackground(getResources().getDrawable(R.mipmap.appoint_calendar_start_bg));
517 | }
518 | }
519 |
520 | ```
521 |
--------------------------------------------------------------------------------
/app/src/main/res/values-1024x600/lay_x.xml:
--------------------------------------------------------------------------------
1 |
2 | 0.8px
3 | 1.6px
4 | 2.4px
5 | 3.2px
6 | 4.0px
7 | 4.8px
8 | 5.6px
9 | 6.4px
10 | 7.2px
11 | 8.0px
12 | 8.8px
13 | 9.6px
14 | 10.4px
15 | 11.2px
16 | 12.0px
17 | 12.8px
18 | 13.6px
19 | 14.4px
20 | 15.2px
21 | 16.0px
22 | 16.8px
23 | 17.6px
24 | 18.4px
25 | 19.2px
26 | 20.0px
27 | 20.8px
28 | 21.6px
29 | 22.4px
30 | 23.2px
31 | 24.0px
32 | 24.8px
33 | 25.6px
34 | 26.4px
35 | 27.2px
36 | 28.0px
37 | 28.8px
38 | 29.6px
39 | 30.4px
40 | 31.2px
41 | 32.0px
42 | 32.8px
43 | 33.6px
44 | 34.4px
45 | 35.2px
46 | 36.0px
47 | 36.8px
48 | 37.6px
49 | 38.4px
50 | 39.2px
51 | 40.0px
52 | 40.8px
53 | 41.6px
54 | 42.4px
55 | 43.2px
56 | 44.0px
57 | 44.8px
58 | 45.6px
59 | 46.4px
60 | 47.2px
61 | 48.0px
62 | 48.8px
63 | 49.6px
64 | 50.4px
65 | 51.2px
66 | 52.0px
67 | 52.8px
68 | 53.6px
69 | 54.4px
70 | 55.2px
71 | 56.0px
72 | 56.8px
73 | 57.6px
74 | 58.4px
75 | 59.2px
76 | 60.0px
77 | 60.8px
78 | 61.6px
79 | 62.4px
80 | 63.2px
81 | 64.0px
82 | 64.8px
83 | 65.6px
84 | 66.4px
85 | 67.2px
86 | 68.0px
87 | 68.8px
88 | 69.6px
89 | 70.4px
90 | 71.2px
91 | 72.0px
92 | 72.8px
93 | 73.6px
94 | 74.4px
95 | 75.2px
96 | 76.0px
97 | 76.8px
98 | 77.6px
99 | 78.4px
100 | 79.2px
101 | 80.0px
102 | 80.8px
103 | 81.6px
104 | 82.4px
105 | 83.2px
106 | 84.0px
107 | 84.8px
108 | 85.6px
109 | 86.4px
110 | 87.2px
111 | 88.0px
112 | 88.8px
113 | 89.6px
114 | 90.4px
115 | 91.2px
116 | 92.0px
117 | 92.8px
118 | 93.6px
119 | 94.4px
120 | 95.2px
121 | 96.0px
122 | 96.8px
123 | 97.6px
124 | 98.4px
125 | 99.2px
126 | 100.0px
127 | 100.8px
128 | 101.6px
129 | 102.4px
130 | 103.2px
131 | 104.0px
132 | 104.8px
133 | 105.6px
134 | 106.4px
135 | 107.2px
136 | 108.0px
137 | 108.8px
138 | 109.6px
139 | 110.4px
140 | 111.2px
141 | 112.0px
142 | 112.8px
143 | 113.6px
144 | 114.4px
145 | 115.2px
146 | 116.0px
147 | 116.8px
148 | 117.6px
149 | 118.4px
150 | 119.2px
151 | 120.0px
152 | 120.8px
153 | 121.6px
154 | 122.4px
155 | 123.2px
156 | 124.0px
157 | 124.8px
158 | 125.6px
159 | 126.4px
160 | 127.2px
161 | 128.0px
162 | 128.8px
163 | 129.6px
164 | 130.4px
165 | 131.2px
166 | 132.0px
167 | 132.8px
168 | 133.6px
169 | 134.4px
170 | 135.2px
171 | 136.0px
172 | 136.8px
173 | 137.6px
174 | 138.4px
175 | 139.2px
176 | 140.0px
177 | 140.8px
178 | 141.6px
179 | 142.4px
180 | 143.2px
181 | 144.0px
182 | 144.8px
183 | 145.6px
184 | 146.4px
185 | 147.2px
186 | 148.0px
187 | 148.8px
188 | 149.6px
189 | 150.4px
190 | 151.2px
191 | 152.0px
192 | 152.8px
193 | 153.6px
194 | 154.4px
195 | 155.2px
196 | 156.0px
197 | 156.8px
198 | 157.6px
199 | 158.4px
200 | 159.2px
201 | 160.0px
202 | 160.8px
203 | 161.6px
204 | 162.4px
205 | 163.2px
206 | 164.0px
207 | 164.8px
208 | 165.6px
209 | 166.4px
210 | 167.2px
211 | 168.0px
212 | 168.8px
213 | 169.6px
214 | 170.4px
215 | 171.2px
216 | 172.0px
217 | 172.8px
218 | 173.6px
219 | 174.4px
220 | 175.2px
221 | 176.0px
222 | 176.8px
223 | 177.6px
224 | 178.4px
225 | 179.2px
226 | 180.0px
227 | 180.8px
228 | 181.6px
229 | 182.4px
230 | 183.2px
231 | 184.0px
232 | 184.8px
233 | 185.6px
234 | 186.4px
235 | 187.2px
236 | 188.0px
237 | 188.8px
238 | 189.6px
239 | 190.4px
240 | 191.2px
241 | 192.0px
242 | 192.8px
243 | 193.6px
244 | 194.4px
245 | 195.2px
246 | 196.0px
247 | 196.8px
248 | 197.6px
249 | 198.4px
250 | 199.2px
251 | 200.0px
252 | 200.8px
253 | 201.6px
254 | 202.4px
255 | 203.2px
256 | 204.0px
257 | 204.8px
258 | 205.6px
259 | 206.4px
260 | 207.2px
261 | 208.0px
262 | 208.8px
263 | 209.6px
264 | 210.4px
265 | 211.2px
266 | 212.0px
267 | 212.8px
268 | 213.6px
269 | 214.4px
270 | 215.2px
271 | 216.0px
272 | 216.8px
273 | 217.6px
274 | 218.4px
275 | 219.2px
276 | 220.0px
277 | 220.8px
278 | 221.6px
279 | 222.4px
280 | 223.2px
281 | 224.0px
282 | 224.8px
283 | 225.6px
284 | 226.4px
285 | 227.2px
286 | 228.0px
287 | 228.8px
288 | 229.6px
289 | 230.4px
290 | 231.2px
291 | 232.0px
292 | 232.8px
293 | 233.6px
294 | 234.4px
295 | 235.2px
296 | 236.0px
297 | 236.8px
298 | 237.6px
299 | 238.4px
300 | 239.2px
301 | 240.0px
302 | 240.8px
303 | 241.6px
304 | 242.4px
305 | 243.2px
306 | 244.0px
307 | 244.8px
308 | 245.6px
309 | 246.4px
310 | 247.2px
311 | 248.0px
312 | 248.8px
313 | 249.6px
314 | 250.4px
315 | 251.2px
316 | 252.0px
317 | 252.8px
318 | 253.6px
319 | 254.4px
320 | 255.2px
321 | 256.0px
322 | 256.8px
323 | 257.6px
324 | 258.4px
325 | 259.2px
326 | 260.0px
327 | 260.8px
328 | 261.6px
329 | 262.4px
330 | 263.2px
331 | 264.0px
332 | 264.8px
333 | 265.6px
334 | 266.4px
335 | 267.2px
336 | 268.0px
337 | 268.8px
338 | 269.6px
339 | 270.4px
340 | 271.2px
341 | 272.0px
342 | 272.8px
343 | 273.6px
344 | 274.4px
345 | 275.2px
346 | 276.0px
347 | 276.8px
348 | 277.6px
349 | 278.4px
350 | 279.2px
351 | 280.0px
352 | 280.8px
353 | 281.6px
354 | 282.4px
355 | 283.2px
356 | 284.0px
357 | 284.8px
358 | 285.6px
359 | 286.4px
360 | 287.2px
361 | 288.0px
362 | 288.8px
363 | 289.6px
364 | 290.4px
365 | 291.2px
366 | 292.0px
367 | 292.8px
368 | 293.6px
369 | 294.4px
370 | 295.2px
371 | 296.0px
372 | 296.8px
373 | 297.6px
374 | 298.4px
375 | 299.2px
376 | 300.0px
377 | 300.8px
378 | 301.6px
379 | 302.4px
380 | 303.2px
381 | 304.0px
382 | 304.8px
383 | 305.6px
384 | 306.4px
385 | 307.2px
386 | 308.0px
387 | 308.8px
388 | 309.6px
389 | 310.4px
390 | 311.2px
391 | 312.0px
392 | 312.8px
393 | 313.6px
394 | 314.4px
395 | 315.2px
396 | 316.0px
397 | 316.8px
398 | 317.6px
399 | 318.4px
400 | 319.2px
401 | 320.0px
402 | 320.8px
403 | 321.6px
404 | 322.4px
405 | 323.2px
406 | 324.0px
407 | 324.8px
408 | 325.6px
409 | 326.4px
410 | 327.2px
411 | 328.0px
412 | 328.8px
413 | 329.6px
414 | 330.4px
415 | 331.2px
416 | 332.0px
417 | 332.8px
418 | 333.6px
419 | 334.4px
420 | 335.2px
421 | 336.0px
422 | 336.8px
423 | 337.6px
424 | 338.4px
425 | 339.2px
426 | 340.0px
427 | 340.8px
428 | 341.6px
429 | 342.4px
430 | 343.2px
431 | 344.0px
432 | 344.8px
433 | 345.6px
434 | 346.4px
435 | 347.2px
436 | 348.0px
437 | 348.8px
438 | 349.6px
439 | 350.4px
440 | 351.2px
441 | 352.0px
442 | 352.8px
443 | 353.6px
444 | 354.4px
445 | 355.2px
446 | 356.0px
447 | 356.8px
448 | 357.6px
449 | 358.4px
450 | 359.2px
451 | 360.0px
452 | 360.8px
453 | 361.6px
454 | 362.4px
455 | 363.2px
456 | 364.0px
457 | 364.8px
458 | 365.6px
459 | 366.4px
460 | 367.2px
461 | 368.0px
462 | 368.8px
463 | 369.6px
464 | 370.4px
465 | 371.2px
466 | 372.0px
467 | 372.8px
468 | 373.6px
469 | 374.4px
470 | 375.2px
471 | 376.0px
472 | 376.8px
473 | 377.6px
474 | 378.4px
475 | 379.2px
476 | 380.0px
477 | 380.8px
478 | 381.6px
479 | 382.4px
480 | 383.2px
481 | 384.0px
482 | 384.8px
483 | 385.6px
484 | 386.4px
485 | 387.2px
486 | 388.0px
487 | 388.8px
488 | 389.6px
489 | 390.4px
490 | 391.2px
491 | 392.0px
492 | 392.8px
493 | 393.6px
494 | 394.4px
495 | 395.2px
496 | 396.0px
497 | 396.8px
498 | 397.6px
499 | 398.4px
500 | 399.2px
501 | 400.0px
502 | 400.8px
503 | 401.6px
504 | 402.4px
505 | 403.2px
506 | 404.0px
507 | 404.8px
508 | 405.6px
509 | 406.4px
510 | 407.2px
511 | 408.0px
512 | 408.8px
513 | 409.6px
514 | 410.4px
515 | 411.2px
516 | 412.0px
517 | 412.8px
518 | 413.6px
519 | 414.4px
520 | 415.2px
521 | 416.0px
522 | 416.8px
523 | 417.6px
524 | 418.4px
525 | 419.2px
526 | 420.0px
527 | 420.8px
528 | 421.6px
529 | 422.4px
530 | 423.2px
531 | 424.0px
532 | 424.8px
533 | 425.6px
534 | 426.4px
535 | 427.2px
536 | 428.0px
537 | 428.8px
538 | 429.6px
539 | 430.4px
540 | 431.2px
541 | 432.0px
542 | 432.8px
543 | 433.6px
544 | 434.4px
545 | 435.2px
546 | 436.0px
547 | 436.8px
548 | 437.6px
549 | 438.4px
550 | 439.2px
551 | 440.0px
552 | 440.8px
553 | 441.6px
554 | 442.4px
555 | 443.2px
556 | 444.0px
557 | 444.8px
558 | 445.6px
559 | 446.4px
560 | 447.2px
561 | 448.0px
562 | 448.8px
563 | 449.6px
564 | 450.4px
565 | 451.2px
566 | 452.0px
567 | 452.8px
568 | 453.6px
569 | 454.4px
570 | 455.2px
571 | 456.0px
572 | 456.8px
573 | 457.6px
574 | 458.4px
575 | 459.2px
576 | 460.0px
577 | 460.8px
578 | 461.6px
579 | 462.4px
580 | 463.2px
581 | 464.0px
582 | 464.8px
583 | 465.6px
584 | 466.4px
585 | 467.2px
586 | 468.0px
587 | 468.8px
588 | 469.6px
589 | 470.4px
590 | 471.2px
591 | 472.0px
592 | 472.8px
593 | 473.6px
594 | 474.4px
595 | 475.2px
596 | 476.0px
597 | 476.8px
598 | 477.6px
599 | 478.4px
600 | 479.2px
601 | 480.0px
602 | 480.8px
603 | 481.6px
604 | 482.4px
605 | 483.2px
606 | 484.0px
607 | 484.8px
608 | 485.6px
609 | 486.4px
610 | 487.2px
611 | 488.0px
612 | 488.8px
613 | 489.6px
614 | 490.4px
615 | 491.2px
616 | 492.0px
617 | 492.8px
618 | 493.6px
619 | 494.4px
620 | 495.2px
621 | 496.0px
622 | 496.8px
623 | 497.6px
624 | 498.4px
625 | 499.2px
626 | 500.0px
627 | 500.8px
628 | 501.6px
629 | 502.4px
630 | 503.2px
631 | 504.0px
632 | 504.8px
633 | 505.6px
634 | 506.4px
635 | 507.2px
636 | 508.0px
637 | 508.8px
638 | 509.6px
639 | 510.4px
640 | 511.2px
641 | 512.0px
642 | 512.8px
643 | 513.6px
644 | 514.4px
645 | 515.2px
646 | 516.0px
647 | 516.8px
648 | 517.6px
649 | 518.4px
650 | 519.2px
651 | 520.0px
652 | 520.8px
653 | 521.6px
654 | 522.4px
655 | 523.2px
656 | 524.0px
657 | 524.8px
658 | 525.6px
659 | 526.4px
660 | 527.2px
661 | 528.0px
662 | 528.8px
663 | 529.6px
664 | 530.4px
665 | 531.2px
666 | 532.0px
667 | 532.8px
668 | 533.6px
669 | 534.4px
670 | 535.2px
671 | 536.0px
672 | 536.8px
673 | 537.6px
674 | 538.4px
675 | 539.2px
676 | 540.0px
677 | 540.8px
678 | 541.6px
679 | 542.4px
680 | 543.2px
681 | 544.0px
682 | 544.8px
683 | 545.6px
684 | 546.4px
685 | 547.2px
686 | 548.0px
687 | 548.8px
688 | 549.6px
689 | 550.4px
690 | 551.2px
691 | 552.0px
692 | 552.8px
693 | 553.6px
694 | 554.4px
695 | 555.2px
696 | 556.0px
697 | 556.8px
698 | 557.6px
699 | 558.4px
700 | 559.2px
701 | 560.0px
702 | 560.8px
703 | 561.6px
704 | 562.4px
705 | 563.2px
706 | 564.0px
707 | 564.8px
708 | 565.6px
709 | 566.4px
710 | 567.2px
711 | 568.0px
712 | 568.8px
713 | 569.6px
714 | 570.4px
715 | 571.2px
716 | 572.0px
717 | 572.8px
718 | 573.6px
719 | 574.4px
720 | 575.2px
721 | 576.0px
722 | 576.8px
723 | 577.6px
724 | 578.4px
725 | 579.2px
726 | 580.0px
727 | 580.8px
728 | 581.6px
729 | 582.4px
730 | 583.2px
731 | 584.0px
732 | 584.8px
733 | 585.6px
734 | 586.4px
735 | 587.2px
736 | 588.0px
737 | 588.8px
738 | 589.6px
739 | 590.4px
740 | 591.2px
741 | 592.0px
742 | 592.8px
743 | 593.6px
744 | 594.4px
745 | 595.2px
746 | 596.0px
747 | 596.8px
748 | 597.6px
749 | 598.4px
750 | 599.2px
751 | 600px
752 |
--------------------------------------------------------------------------------
/app/src/main/res/values-1920x1200/lay_x.xml:
--------------------------------------------------------------------------------
1 |
2 | 1.6px
3 | 3.2px
4 | 4.8px
5 | 6.4px
6 | 8.0px
7 | 9.6px
8 | 11.2px
9 | 12.8px
10 | 14.4px
11 | 16.0px
12 | 17.6px
13 | 19.2px
14 | 20.8px
15 | 22.4px
16 | 24.0px
17 | 25.6px
18 | 27.2px
19 | 28.8px
20 | 30.4px
21 | 32.0px
22 | 33.6px
23 | 35.2px
24 | 36.8px
25 | 38.4px
26 | 40.0px
27 | 41.6px
28 | 43.2px
29 | 44.8px
30 | 46.4px
31 | 48.0px
32 | 49.6px
33 | 51.2px
34 | 52.8px
35 | 54.4px
36 | 56.0px
37 | 57.6px
38 | 59.2px
39 | 60.8px
40 | 62.4px
41 | 64.0px
42 | 65.6px
43 | 67.2px
44 | 68.8px
45 | 70.4px
46 | 72.0px
47 | 73.6px
48 | 75.2px
49 | 76.8px
50 | 78.4px
51 | 80.0px
52 | 81.6px
53 | 83.2px
54 | 84.8px
55 | 86.4px
56 | 88.0px
57 | 89.6px
58 | 91.2px
59 | 92.8px
60 | 94.4px
61 | 96.0px
62 | 97.6px
63 | 99.2px
64 | 100.8px
65 | 102.4px
66 | 104.0px
67 | 105.6px
68 | 107.2px
69 | 108.8px
70 | 110.4px
71 | 112.0px
72 | 113.6px
73 | 115.2px
74 | 116.8px
75 | 118.4px
76 | 120.0px
77 | 121.6px
78 | 123.2px
79 | 124.8px
80 | 126.4px
81 | 128.0px
82 | 129.6px
83 | 131.2px
84 | 132.8px
85 | 134.4px
86 | 136.0px
87 | 137.6px
88 | 139.2px
89 | 140.8px
90 | 142.4px
91 | 144.0px
92 | 145.6px
93 | 147.2px
94 | 148.8px
95 | 150.4px
96 | 152.0px
97 | 153.6px
98 | 155.2px
99 | 156.8px
100 | 158.4px
101 | 160.0px
102 | 161.6px
103 | 163.2px
104 | 164.8px
105 | 166.4px
106 | 168.0px
107 | 169.6px
108 | 171.2px
109 | 172.8px
110 | 174.4px
111 | 176.0px
112 | 177.6px
113 | 179.2px
114 | 180.8px
115 | 182.4px
116 | 184.0px
117 | 185.6px
118 | 187.2px
119 | 188.8px
120 | 190.4px
121 | 192.0px
122 | 193.6px
123 | 195.2px
124 | 196.8px
125 | 198.4px
126 | 200.0px
127 | 201.6px
128 | 203.2px
129 | 204.8px
130 | 206.4px
131 | 208.0px
132 | 209.6px
133 | 211.2px
134 | 212.8px
135 | 214.4px
136 | 216.0px
137 | 217.6px
138 | 219.2px
139 | 220.8px
140 | 222.4px
141 | 224.0px
142 | 225.6px
143 | 227.2px
144 | 228.8px
145 | 230.4px
146 | 232.0px
147 | 233.6px
148 | 235.2px
149 | 236.8px
150 | 238.4px
151 | 240.0px
152 | 241.6px
153 | 243.2px
154 | 244.8px
155 | 246.4px
156 | 248.0px
157 | 249.6px
158 | 251.2px
159 | 252.8px
160 | 254.4px
161 | 256.0px
162 | 257.6px
163 | 259.2px
164 | 260.8px
165 | 262.4px
166 | 264.0px
167 | 265.6px
168 | 267.2px
169 | 268.8px
170 | 270.4px
171 | 272.0px
172 | 273.6px
173 | 275.2px
174 | 276.8px
175 | 278.4px
176 | 280.0px
177 | 281.6px
178 | 283.2px
179 | 284.8px
180 | 286.4px
181 | 288.0px
182 | 289.6px
183 | 291.2px
184 | 292.8px
185 | 294.4px
186 | 296.0px
187 | 297.6px
188 | 299.2px
189 | 300.8px
190 | 302.4px
191 | 304.0px
192 | 305.6px
193 | 307.2px
194 | 308.8px
195 | 310.4px
196 | 312.0px
197 | 313.6px
198 | 315.2px
199 | 316.8px
200 | 318.4px
201 | 320.0px
202 | 321.6px
203 | 323.2px
204 | 324.8px
205 | 326.4px
206 | 328.0px
207 | 329.6px
208 | 331.2px
209 | 332.8px
210 | 334.4px
211 | 336.0px
212 | 337.6px
213 | 339.2px
214 | 340.8px
215 | 342.4px
216 | 344.0px
217 | 345.6px
218 | 347.2px
219 | 348.8px
220 | 350.4px
221 | 352.0px
222 | 353.6px
223 | 355.2px
224 | 356.8px
225 | 358.4px
226 | 360.0px
227 | 361.6px
228 | 363.2px
229 | 364.8px
230 | 366.4px
231 | 368.0px
232 | 369.6px
233 | 371.2px
234 | 372.8px
235 | 374.4px
236 | 376.0px
237 | 377.6px
238 | 379.2px
239 | 380.8px
240 | 382.4px
241 | 384.0px
242 | 385.6px
243 | 387.2px
244 | 388.8px
245 | 390.4px
246 | 392.0px
247 | 393.6px
248 | 395.2px
249 | 396.8px
250 | 398.4px
251 | 400.0px
252 | 401.6px
253 | 403.2px
254 | 404.8px
255 | 406.4px
256 | 408.0px
257 | 409.6px
258 | 411.2px
259 | 412.8px
260 | 414.4px
261 | 416.0px
262 | 417.6px
263 | 419.2px
264 | 420.8px
265 | 422.4px
266 | 424.0px
267 | 425.6px
268 | 427.2px
269 | 428.8px
270 | 430.4px
271 | 432.0px
272 | 433.6px
273 | 435.2px
274 | 436.8px
275 | 438.4px
276 | 440.0px
277 | 441.6px
278 | 443.2px
279 | 444.8px
280 | 446.4px
281 | 448.0px
282 | 449.6px
283 | 451.2px
284 | 452.8px
285 | 454.4px
286 | 456.0px
287 | 457.6px
288 | 459.2px
289 | 460.8px
290 | 462.4px
291 | 464.0px
292 | 465.6px
293 | 467.2px
294 | 468.8px
295 | 470.4px
296 | 472.0px
297 | 473.6px
298 | 475.2px
299 | 476.8px
300 | 478.4px
301 | 480.0px
302 | 481.6px
303 | 483.2px
304 | 484.8px
305 | 486.4px
306 | 488.0px
307 | 489.6px
308 | 491.2px
309 | 492.8px
310 | 494.4px
311 | 496.0px
312 | 497.6px
313 | 499.2px
314 | 500.8px
315 | 502.4px
316 | 504.0px
317 | 505.6px
318 | 507.2px
319 | 508.8px
320 | 510.4px
321 | 512.0px
322 | 513.6px
323 | 515.2px
324 | 516.8px
325 | 518.4px
326 | 520.0px
327 | 521.6px
328 | 523.2px
329 | 524.8px
330 | 526.4px
331 | 528.0px
332 | 529.6px
333 | 531.2px
334 | 532.8px
335 | 534.4px
336 | 536.0px
337 | 537.6px
338 | 539.2px
339 | 540.8px
340 | 542.4px
341 | 544.0px
342 | 545.6px
343 | 547.2px
344 | 548.8px
345 | 550.4px
346 | 552.0px
347 | 553.6px
348 | 555.2px
349 | 556.8px
350 | 558.4px
351 | 560.0px
352 | 561.6px
353 | 563.2px
354 | 564.8px
355 | 566.4px
356 | 568.0px
357 | 569.6px
358 | 571.2px
359 | 572.8px
360 | 574.4px
361 | 576.0px
362 | 577.6px
363 | 579.2px
364 | 580.8px
365 | 582.4px
366 | 584.0px
367 | 585.6px
368 | 587.2px
369 | 588.8px
370 | 590.4px
371 | 592.0px
372 | 593.6px
373 | 595.2px
374 | 596.8px
375 | 598.4px
376 | 600.0px
377 | 601.6px
378 | 603.2px
379 | 604.8px
380 | 606.4px
381 | 608.0px
382 | 609.6px
383 | 611.2px
384 | 612.8px
385 | 614.4px
386 | 616.0px
387 | 617.6px
388 | 619.2px
389 | 620.8px
390 | 622.4px
391 | 624.0px
392 | 625.6px
393 | 627.2px
394 | 628.8px
395 | 630.4px
396 | 632.0px
397 | 633.6px
398 | 635.2px
399 | 636.8px
400 | 638.4px
401 | 640.0px
402 | 641.6px
403 | 643.2px
404 | 644.8px
405 | 646.4px
406 | 648.0px
407 | 649.6px
408 | 651.2px
409 | 652.8px
410 | 654.4px
411 | 656.0px
412 | 657.6px
413 | 659.2px
414 | 660.8px
415 | 662.4px
416 | 664.0px
417 | 665.6px
418 | 667.2px
419 | 668.8px
420 | 670.4px
421 | 672.0px
422 | 673.6px
423 | 675.2px
424 | 676.8px
425 | 678.4px
426 | 680.0px
427 | 681.6px
428 | 683.2px
429 | 684.8px
430 | 686.4px
431 | 688.0px
432 | 689.6px
433 | 691.2px
434 | 692.8px
435 | 694.4px
436 | 696.0px
437 | 697.6px
438 | 699.2px
439 | 700.8px
440 | 702.4px
441 | 704.0px
442 | 705.6px
443 | 707.2px
444 | 708.8px
445 | 710.4px
446 | 712.0px
447 | 713.6px
448 | 715.2px
449 | 716.8px
450 | 718.4px
451 | 720.0px
452 | 721.6px
453 | 723.2px
454 | 724.8px
455 | 726.4px
456 | 728.0px
457 | 729.6px
458 | 731.2px
459 | 732.8px
460 | 734.4px
461 | 736.0px
462 | 737.6px
463 | 739.2px
464 | 740.8px
465 | 742.4px
466 | 744.0px
467 | 745.6px
468 | 747.2px
469 | 748.8px
470 | 750.4px
471 | 752.0px
472 | 753.6px
473 | 755.2px
474 | 756.8px
475 | 758.4px
476 | 760.0px
477 | 761.6px
478 | 763.2px
479 | 764.8px
480 | 766.4px
481 | 768.0px
482 | 769.6px
483 | 771.2px
484 | 772.8px
485 | 774.4px
486 | 776.0px
487 | 777.6px
488 | 779.2px
489 | 780.8px
490 | 782.4px
491 | 784.0px
492 | 785.6px
493 | 787.2px
494 | 788.8px
495 | 790.4px
496 | 792.0px
497 | 793.6px
498 | 795.2px
499 | 796.8px
500 | 798.4px
501 | 800.0px
502 | 801.6px
503 | 803.2px
504 | 804.8px
505 | 806.4px
506 | 808.0px
507 | 809.6px
508 | 811.2px
509 | 812.8px
510 | 814.4px
511 | 816.0px
512 | 817.6px
513 | 819.2px
514 | 820.8px
515 | 822.4px
516 | 824.0px
517 | 825.6px
518 | 827.2px
519 | 828.8px
520 | 830.4px
521 | 832.0px
522 | 833.6px
523 | 835.2px
524 | 836.8px
525 | 838.4px
526 | 840.0px
527 | 841.6px
528 | 843.2px
529 | 844.8px
530 | 846.4px
531 | 848.0px
532 | 849.6px
533 | 851.2px
534 | 852.8px
535 | 854.4px
536 | 856.0px
537 | 857.6px
538 | 859.2px
539 | 860.8px
540 | 862.4px
541 | 864.0px
542 | 865.6px
543 | 867.2px
544 | 868.8px
545 | 870.4px
546 | 872.0px
547 | 873.6px
548 | 875.2px
549 | 876.8px
550 | 878.4px
551 | 880.0px
552 | 881.6px
553 | 883.2px
554 | 884.8px
555 | 886.4px
556 | 888.0px
557 | 889.6px
558 | 891.2px
559 | 892.8px
560 | 894.4px
561 | 896.0px
562 | 897.6px
563 | 899.2px
564 | 900.8px
565 | 902.4px
566 | 904.0px
567 | 905.6px
568 | 907.2px
569 | 908.8px
570 | 910.4px
571 | 912.0px
572 | 913.6px
573 | 915.2px
574 | 916.8px
575 | 918.4px
576 | 920.0px
577 | 921.6px
578 | 923.2px
579 | 924.8px
580 | 926.4px
581 | 928.0px
582 | 929.6px
583 | 931.2px
584 | 932.8px
585 | 934.4px
586 | 936.0px
587 | 937.6px
588 | 939.2px
589 | 940.8px
590 | 942.4px
591 | 944.0px
592 | 945.6px
593 | 947.2px
594 | 948.8px
595 | 950.4px
596 | 952.0px
597 | 953.6px
598 | 955.2px
599 | 956.8px
600 | 958.4px
601 | 960.0px
602 | 961.6px
603 | 963.2px
604 | 964.8px
605 | 966.4px
606 | 968.0px
607 | 969.6px
608 | 971.2px
609 | 972.8px
610 | 974.4px
611 | 976.0px
612 | 977.6px
613 | 979.2px
614 | 980.8px
615 | 982.4px
616 | 984.0px
617 | 985.6px
618 | 987.2px
619 | 988.8px
620 | 990.4px
621 | 992.0px
622 | 993.6px
623 | 995.2px
624 | 996.8px
625 | 998.4px
626 | 1000.0px
627 | 1001.6px
628 | 1003.2px
629 | 1004.8px
630 | 1006.4px
631 | 1008.0px
632 | 1009.6px
633 | 1011.2px
634 | 1012.8px
635 | 1014.4px
636 | 1016.0px
637 | 1017.6px
638 | 1019.2px
639 | 1020.8px
640 | 1022.4px
641 | 1024.0px
642 | 1025.6px
643 | 1027.2px
644 | 1028.8px
645 | 1030.4px
646 | 1032.0px
647 | 1033.6px
648 | 1035.2px
649 | 1036.8px
650 | 1038.4px
651 | 1040.0px
652 | 1041.6px
653 | 1043.2px
654 | 1044.8px
655 | 1046.4px
656 | 1048.0px
657 | 1049.6px
658 | 1051.2px
659 | 1052.8px
660 | 1054.4px
661 | 1056.0px
662 | 1057.6px
663 | 1059.2px
664 | 1060.8px
665 | 1062.4px
666 | 1064.0px
667 | 1065.6px
668 | 1067.2px
669 | 1068.8px
670 | 1070.4px
671 | 1072.0px
672 | 1073.6px
673 | 1075.2px
674 | 1076.8px
675 | 1078.4px
676 | 1080.0px
677 | 1081.6px
678 | 1083.2px
679 | 1084.8px
680 | 1086.4px
681 | 1088.0px
682 | 1089.6px
683 | 1091.2px
684 | 1092.8px
685 | 1094.4px
686 | 1096.0px
687 | 1097.6px
688 | 1099.2px
689 | 1100.8px
690 | 1102.4px
691 | 1104.0px
692 | 1105.6px
693 | 1107.2px
694 | 1108.8px
695 | 1110.4px
696 | 1112.0px
697 | 1113.6px
698 | 1115.2px
699 | 1116.8px
700 | 1118.4px
701 | 1120.0px
702 | 1121.6px
703 | 1123.2px
704 | 1124.8px
705 | 1126.4px
706 | 1128.0px
707 | 1129.6px
708 | 1131.2px
709 | 1132.8px
710 | 1134.4px
711 | 1136.0px
712 | 1137.6px
713 | 1139.2px
714 | 1140.8px
715 | 1142.4px
716 | 1144.0px
717 | 1145.6px
718 | 1147.2px
719 | 1148.8px
720 | 1150.4px
721 | 1152.0px
722 | 1153.6px
723 | 1155.2px
724 | 1156.8px
725 | 1158.4px
726 | 1160.0px
727 | 1161.6px
728 | 1163.2px
729 | 1164.8px
730 | 1166.4px
731 | 1168.0px
732 | 1169.6px
733 | 1171.2px
734 | 1172.8px
735 | 1174.4px
736 | 1176.0px
737 | 1177.6px
738 | 1179.2px
739 | 1180.8px
740 | 1182.4px
741 | 1184.0px
742 | 1185.6px
743 | 1187.2px
744 | 1188.8px
745 | 1190.4px
746 | 1192.0px
747 | 1193.6px
748 | 1195.2px
749 | 1196.8px
750 | 1198.4px
751 | 1200px
752 |
--------------------------------------------------------------------------------
/app/src/main/res/values-400x320/lay_x.xml:
--------------------------------------------------------------------------------
1 |
2 | 0.42px
3 | 0.85px
4 | 1.28px
5 | 1.7px
6 | 2.13px
7 | 2.56px
8 | 2.98px
9 | 3.41px
10 | 3.84px
11 | 4.26px
12 | 4.69px
13 | 5.12px
14 | 5.54px
15 | 5.97px
16 | 6.4px
17 | 6.82px
18 | 7.25px
19 | 7.68px
20 | 8.1px
21 | 8.53px
22 | 8.96px
23 | 9.38px
24 | 9.81px
25 | 10.24px
26 | 10.66px
27 | 11.09px
28 | 11.52px
29 | 11.94px
30 | 12.37px
31 | 12.8px
32 | 13.22px
33 | 13.65px
34 | 14.08px
35 | 14.5px
36 | 14.93px
37 | 15.36px
38 | 15.78px
39 | 16.21px
40 | 16.64px
41 | 17.06px
42 | 17.49px
43 | 17.92px
44 | 18.34px
45 | 18.77px
46 | 19.2px
47 | 19.62px
48 | 20.05px
49 | 20.48px
50 | 20.9px
51 | 21.33px
52 | 21.76px
53 | 22.18px
54 | 22.61px
55 | 23.04px
56 | 23.46px
57 | 23.89px
58 | 24.32px
59 | 24.74px
60 | 25.17px
61 | 25.6px
62 | 26.02px
63 | 26.45px
64 | 26.88px
65 | 27.3px
66 | 27.73px
67 | 28.16px
68 | 28.58px
69 | 29.01px
70 | 29.44px
71 | 29.86px
72 | 30.29px
73 | 30.72px
74 | 31.14px
75 | 31.57px
76 | 32.0px
77 | 32.42px
78 | 32.85px
79 | 33.28px
80 | 33.7px
81 | 34.13px
82 | 34.56px
83 | 34.98px
84 | 35.41px
85 | 35.84px
86 | 36.26px
87 | 36.69px
88 | 37.12px
89 | 37.54px
90 | 37.97px
91 | 38.4px
92 | 38.82px
93 | 39.25px
94 | 39.68px
95 | 40.1px
96 | 40.53px
97 | 40.96px
98 | 41.38px
99 | 41.81px
100 | 42.24px
101 | 42.66px
102 | 43.09px
103 | 43.52px
104 | 43.94px
105 | 44.37px
106 | 44.8px
107 | 45.22px
108 | 45.65px
109 | 46.08px
110 | 46.5px
111 | 46.93px
112 | 47.36px
113 | 47.78px
114 | 48.21px
115 | 48.64px
116 | 49.06px
117 | 49.49px
118 | 49.92px
119 | 50.34px
120 | 50.77px
121 | 51.2px
122 | 51.62px
123 | 52.05px
124 | 52.48px
125 | 52.9px
126 | 53.33px
127 | 53.76px
128 | 54.18px
129 | 54.61px
130 | 55.04px
131 | 55.46px
132 | 55.89px
133 | 56.32px
134 | 56.74px
135 | 57.17px
136 | 57.6px
137 | 58.02px
138 | 58.45px
139 | 58.88px
140 | 59.3px
141 | 59.73px
142 | 60.16px
143 | 60.58px
144 | 61.01px
145 | 61.44px
146 | 61.86px
147 | 62.29px
148 | 62.72px
149 | 63.14px
150 | 63.57px
151 | 64.0px
152 | 64.42px
153 | 64.85px
154 | 65.28px
155 | 65.7px
156 | 66.13px
157 | 66.56px
158 | 66.98px
159 | 67.41px
160 | 67.84px
161 | 68.26px
162 | 68.69px
163 | 69.12px
164 | 69.54px
165 | 69.97px
166 | 70.4px
167 | 70.82px
168 | 71.25px
169 | 71.68px
170 | 72.1px
171 | 72.53px
172 | 72.96px
173 | 73.38px
174 | 73.81px
175 | 74.24px
176 | 74.66px
177 | 75.09px
178 | 75.52px
179 | 75.94px
180 | 76.37px
181 | 76.8px
182 | 77.22px
183 | 77.65px
184 | 78.08px
185 | 78.5px
186 | 78.93px
187 | 79.36px
188 | 79.78px
189 | 80.21px
190 | 80.64px
191 | 81.06px
192 | 81.49px
193 | 81.92px
194 | 82.34px
195 | 82.77px
196 | 83.2px
197 | 83.62px
198 | 84.05px
199 | 84.48px
200 | 84.9px
201 | 85.33px
202 | 85.76px
203 | 86.18px
204 | 86.61px
205 | 87.04px
206 | 87.46px
207 | 87.89px
208 | 88.32px
209 | 88.74px
210 | 89.17px
211 | 89.6px
212 | 90.02px
213 | 90.45px
214 | 90.88px
215 | 91.3px
216 | 91.73px
217 | 92.16px
218 | 92.58px
219 | 93.01px
220 | 93.44px
221 | 93.86px
222 | 94.29px
223 | 94.72px
224 | 95.14px
225 | 95.57px
226 | 96.0px
227 | 96.42px
228 | 96.85px
229 | 97.28px
230 | 97.7px
231 | 98.13px
232 | 98.56px
233 | 98.98px
234 | 99.41px
235 | 99.84px
236 | 100.26px
237 | 100.69px
238 | 101.12px
239 | 101.54px
240 | 101.97px
241 | 102.4px
242 | 102.82px
243 | 103.25px
244 | 103.68px
245 | 104.1px
246 | 104.53px
247 | 104.96px
248 | 105.38px
249 | 105.81px
250 | 106.24px
251 | 106.66px
252 | 107.09px
253 | 107.52px
254 | 107.94px
255 | 108.37px
256 | 108.8px
257 | 109.22px
258 | 109.65px
259 | 110.08px
260 | 110.5px
261 | 110.93px
262 | 111.36px
263 | 111.78px
264 | 112.21px
265 | 112.64px
266 | 113.06px
267 | 113.49px
268 | 113.92px
269 | 114.34px
270 | 114.77px
271 | 115.2px
272 | 115.62px
273 | 116.05px
274 | 116.48px
275 | 116.9px
276 | 117.33px
277 | 117.76px
278 | 118.18px
279 | 118.61px
280 | 119.04px
281 | 119.46px
282 | 119.89px
283 | 120.32px
284 | 120.74px
285 | 121.17px
286 | 121.6px
287 | 122.02px
288 | 122.45px
289 | 122.88px
290 | 123.3px
291 | 123.73px
292 | 124.16px
293 | 124.58px
294 | 125.01px
295 | 125.44px
296 | 125.86px
297 | 126.29px
298 | 126.72px
299 | 127.14px
300 | 127.57px
301 | 128.0px
302 | 128.42px
303 | 128.85px
304 | 129.28px
305 | 129.7px
306 | 130.13px
307 | 130.56px
308 | 130.98px
309 | 131.41px
310 | 131.84px
311 | 132.26px
312 | 132.69px
313 | 133.12px
314 | 133.54px
315 | 133.97px
316 | 134.4px
317 | 134.82px
318 | 135.25px
319 | 135.68px
320 | 136.1px
321 | 136.53px
322 | 136.96px
323 | 137.38px
324 | 137.81px
325 | 138.24px
326 | 138.66px
327 | 139.09px
328 | 139.52px
329 | 139.94px
330 | 140.37px
331 | 140.8px
332 | 141.22px
333 | 141.65px
334 | 142.08px
335 | 142.5px
336 | 142.93px
337 | 143.36px
338 | 143.78px
339 | 144.21px
340 | 144.64px
341 | 145.06px
342 | 145.49px
343 | 145.92px
344 | 146.34px
345 | 146.77px
346 | 147.2px
347 | 147.62px
348 | 148.05px
349 | 148.48px
350 | 148.9px
351 | 149.33px
352 | 149.76px
353 | 150.18px
354 | 150.61px
355 | 151.04px
356 | 151.46px
357 | 151.89px
358 | 152.32px
359 | 152.74px
360 | 153.17px
361 | 153.6px
362 | 154.02px
363 | 154.45px
364 | 154.88px
365 | 155.3px
366 | 155.73px
367 | 156.16px
368 | 156.58px
369 | 157.01px
370 | 157.44px
371 | 157.86px
372 | 158.29px
373 | 158.72px
374 | 159.14px
375 | 159.57px
376 | 160.0px
377 | 160.42px
378 | 160.85px
379 | 161.28px
380 | 161.7px
381 | 162.13px
382 | 162.56px
383 | 162.98px
384 | 163.41px
385 | 163.84px
386 | 164.26px
387 | 164.69px
388 | 165.12px
389 | 165.54px
390 | 165.97px
391 | 166.4px
392 | 166.82px
393 | 167.25px
394 | 167.68px
395 | 168.1px
396 | 168.53px
397 | 168.96px
398 | 169.38px
399 | 169.81px
400 | 170.24px
401 | 170.66px
402 | 171.09px
403 | 171.52px
404 | 171.94px
405 | 172.37px
406 | 172.8px
407 | 173.22px
408 | 173.65px
409 | 174.08px
410 | 174.5px
411 | 174.93px
412 | 175.36px
413 | 175.78px
414 | 176.21px
415 | 176.64px
416 | 177.06px
417 | 177.49px
418 | 177.92px
419 | 178.34px
420 | 178.77px
421 | 179.2px
422 | 179.62px
423 | 180.05px
424 | 180.48px
425 | 180.9px
426 | 181.33px
427 | 181.76px
428 | 182.18px
429 | 182.61px
430 | 183.04px
431 | 183.46px
432 | 183.89px
433 | 184.32px
434 | 184.74px
435 | 185.17px
436 | 185.6px
437 | 186.02px
438 | 186.45px
439 | 186.88px
440 | 187.3px
441 | 187.73px
442 | 188.16px
443 | 188.58px
444 | 189.01px
445 | 189.44px
446 | 189.86px
447 | 190.29px
448 | 190.72px
449 | 191.14px
450 | 191.57px
451 | 192.0px
452 | 192.42px
453 | 192.85px
454 | 193.28px
455 | 193.7px
456 | 194.13px
457 | 194.56px
458 | 194.98px
459 | 195.41px
460 | 195.84px
461 | 196.26px
462 | 196.69px
463 | 197.12px
464 | 197.54px
465 | 197.97px
466 | 198.4px
467 | 198.82px
468 | 199.25px
469 | 199.68px
470 | 200.1px
471 | 200.53px
472 | 200.96px
473 | 201.38px
474 | 201.81px
475 | 202.24px
476 | 202.66px
477 | 203.09px
478 | 203.52px
479 | 203.94px
480 | 204.37px
481 | 204.8px
482 | 205.22px
483 | 205.65px
484 | 206.08px
485 | 206.5px
486 | 206.93px
487 | 207.36px
488 | 207.78px
489 | 208.21px
490 | 208.64px
491 | 209.06px
492 | 209.49px
493 | 209.92px
494 | 210.34px
495 | 210.77px
496 | 211.2px
497 | 211.62px
498 | 212.05px
499 | 212.48px
500 | 212.9px
501 | 213.33px
502 | 213.76px
503 | 214.18px
504 | 214.61px
505 | 215.04px
506 | 215.46px
507 | 215.89px
508 | 216.32px
509 | 216.74px
510 | 217.17px
511 | 217.6px
512 | 218.02px
513 | 218.45px
514 | 218.88px
515 | 219.3px
516 | 219.73px
517 | 220.16px
518 | 220.58px
519 | 221.01px
520 | 221.44px
521 | 221.86px
522 | 222.29px
523 | 222.72px
524 | 223.14px
525 | 223.57px
526 | 224.0px
527 | 224.42px
528 | 224.85px
529 | 225.28px
530 | 225.7px
531 | 226.13px
532 | 226.56px
533 | 226.98px
534 | 227.41px
535 | 227.84px
536 | 228.26px
537 | 228.69px
538 | 229.12px
539 | 229.54px
540 | 229.97px
541 | 230.4px
542 | 230.82px
543 | 231.25px
544 | 231.68px
545 | 232.1px
546 | 232.53px
547 | 232.96px
548 | 233.38px
549 | 233.81px
550 | 234.24px
551 | 234.66px
552 | 235.09px
553 | 235.52px
554 | 235.94px
555 | 236.37px
556 | 236.8px
557 | 237.22px
558 | 237.65px
559 | 238.08px
560 | 238.5px
561 | 238.93px
562 | 239.36px
563 | 239.78px
564 | 240.21px
565 | 240.64px
566 | 241.06px
567 | 241.49px
568 | 241.92px
569 | 242.34px
570 | 242.77px
571 | 243.2px
572 | 243.62px
573 | 244.05px
574 | 244.48px
575 | 244.9px
576 | 245.33px
577 | 245.76px
578 | 246.18px
579 | 246.61px
580 | 247.04px
581 | 247.46px
582 | 247.89px
583 | 248.32px
584 | 248.74px
585 | 249.17px
586 | 249.6px
587 | 250.02px
588 | 250.45px
589 | 250.88px
590 | 251.3px
591 | 251.73px
592 | 252.16px
593 | 252.58px
594 | 253.01px
595 | 253.44px
596 | 253.86px
597 | 254.29px
598 | 254.72px
599 | 255.14px
600 | 255.57px
601 | 256.0px
602 | 256.42px
603 | 256.85px
604 | 257.28px
605 | 257.7px
606 | 258.13px
607 | 258.56px
608 | 258.98px
609 | 259.41px
610 | 259.84px
611 | 260.26px
612 | 260.69px
613 | 261.12px
614 | 261.54px
615 | 261.97px
616 | 262.4px
617 | 262.82px
618 | 263.25px
619 | 263.68px
620 | 264.1px
621 | 264.53px
622 | 264.96px
623 | 265.38px
624 | 265.81px
625 | 266.24px
626 | 266.66px
627 | 267.09px
628 | 267.52px
629 | 267.94px
630 | 268.37px
631 | 268.8px
632 | 269.22px
633 | 269.65px
634 | 270.08px
635 | 270.5px
636 | 270.93px
637 | 271.36px
638 | 271.78px
639 | 272.21px
640 | 272.64px
641 | 273.06px
642 | 273.49px
643 | 273.92px
644 | 274.34px
645 | 274.77px
646 | 275.2px
647 | 275.62px
648 | 276.05px
649 | 276.48px
650 | 276.9px
651 | 277.33px
652 | 277.76px
653 | 278.18px
654 | 278.61px
655 | 279.04px
656 | 279.46px
657 | 279.89px
658 | 280.32px
659 | 280.74px
660 | 281.17px
661 | 281.6px
662 | 282.02px
663 | 282.45px
664 | 282.88px
665 | 283.3px
666 | 283.73px
667 | 284.16px
668 | 284.58px
669 | 285.01px
670 | 285.44px
671 | 285.86px
672 | 286.29px
673 | 286.72px
674 | 287.14px
675 | 287.57px
676 | 288.0px
677 | 288.42px
678 | 288.85px
679 | 289.28px
680 | 289.7px
681 | 290.13px
682 | 290.56px
683 | 290.98px
684 | 291.41px
685 | 291.84px
686 | 292.26px
687 | 292.69px
688 | 293.12px
689 | 293.54px
690 | 293.97px
691 | 294.4px
692 | 294.82px
693 | 295.25px
694 | 295.68px
695 | 296.1px
696 | 296.53px
697 | 296.96px
698 | 297.38px
699 | 297.81px
700 | 298.24px
701 | 298.66px
702 | 299.09px
703 | 299.52px
704 | 299.94px
705 | 300.37px
706 | 300.8px
707 | 301.22px
708 | 301.65px
709 | 302.08px
710 | 302.5px
711 | 302.93px
712 | 303.36px
713 | 303.78px
714 | 304.21px
715 | 304.64px
716 | 305.06px
717 | 305.49px
718 | 305.92px
719 | 306.34px
720 | 306.77px
721 | 307.2px
722 | 307.62px
723 | 308.05px
724 | 308.48px
725 | 308.9px
726 | 309.33px
727 | 309.76px
728 | 310.18px
729 | 310.61px
730 | 311.04px
731 | 311.46px
732 | 311.89px
733 | 312.32px
734 | 312.74px
735 | 313.17px
736 | 313.6px
737 | 314.02px
738 | 314.45px
739 | 314.88px
740 | 315.3px
741 | 315.73px
742 | 316.16px
743 | 316.58px
744 | 317.01px
745 | 317.44px
746 | 317.86px
747 | 318.29px
748 | 318.72px
749 | 319.14px
750 | 319.57px
751 | 320px
752 |
--------------------------------------------------------------------------------
/app/src/main/res/values-480x320/lay_x.xml:
--------------------------------------------------------------------------------
1 |
2 | 0.42px
3 | 0.85px
4 | 1.28px
5 | 1.7px
6 | 2.13px
7 | 2.56px
8 | 2.98px
9 | 3.41px
10 | 3.84px
11 | 4.26px
12 | 4.69px
13 | 5.12px
14 | 5.54px
15 | 5.97px
16 | 6.4px
17 | 6.82px
18 | 7.25px
19 | 7.68px
20 | 8.1px
21 | 8.53px
22 | 8.96px
23 | 9.38px
24 | 9.81px
25 | 10.24px
26 | 10.66px
27 | 11.09px
28 | 11.52px
29 | 11.94px
30 | 12.37px
31 | 12.8px
32 | 13.22px
33 | 13.65px
34 | 14.08px
35 | 14.5px
36 | 14.93px
37 | 15.36px
38 | 15.78px
39 | 16.21px
40 | 16.64px
41 | 17.06px
42 | 17.49px
43 | 17.92px
44 | 18.34px
45 | 18.77px
46 | 19.2px
47 | 19.62px
48 | 20.05px
49 | 20.48px
50 | 20.9px
51 | 21.33px
52 | 21.76px
53 | 22.18px
54 | 22.61px
55 | 23.04px
56 | 23.46px
57 | 23.89px
58 | 24.32px
59 | 24.74px
60 | 25.17px
61 | 25.6px
62 | 26.02px
63 | 26.45px
64 | 26.88px
65 | 27.3px
66 | 27.73px
67 | 28.16px
68 | 28.58px
69 | 29.01px
70 | 29.44px
71 | 29.86px
72 | 30.29px
73 | 30.72px
74 | 31.14px
75 | 31.57px
76 | 32.0px
77 | 32.42px
78 | 32.85px
79 | 33.28px
80 | 33.7px
81 | 34.13px
82 | 34.56px
83 | 34.98px
84 | 35.41px
85 | 35.84px
86 | 36.26px
87 | 36.69px
88 | 37.12px
89 | 37.54px
90 | 37.97px
91 | 38.4px
92 | 38.82px
93 | 39.25px
94 | 39.68px
95 | 40.1px
96 | 40.53px
97 | 40.96px
98 | 41.38px
99 | 41.81px
100 | 42.24px
101 | 42.66px
102 | 43.09px
103 | 43.52px
104 | 43.94px
105 | 44.37px
106 | 44.8px
107 | 45.22px
108 | 45.65px
109 | 46.08px
110 | 46.5px
111 | 46.93px
112 | 47.36px
113 | 47.78px
114 | 48.21px
115 | 48.64px
116 | 49.06px
117 | 49.49px
118 | 49.92px
119 | 50.34px
120 | 50.77px
121 | 51.2px
122 | 51.62px
123 | 52.05px
124 | 52.48px
125 | 52.9px
126 | 53.33px
127 | 53.76px
128 | 54.18px
129 | 54.61px
130 | 55.04px
131 | 55.46px
132 | 55.89px
133 | 56.32px
134 | 56.74px
135 | 57.17px
136 | 57.6px
137 | 58.02px
138 | 58.45px
139 | 58.88px
140 | 59.3px
141 | 59.73px
142 | 60.16px
143 | 60.58px
144 | 61.01px
145 | 61.44px
146 | 61.86px
147 | 62.29px
148 | 62.72px
149 | 63.14px
150 | 63.57px
151 | 64.0px
152 | 64.42px
153 | 64.85px
154 | 65.28px
155 | 65.7px
156 | 66.13px
157 | 66.56px
158 | 66.98px
159 | 67.41px
160 | 67.84px
161 | 68.26px
162 | 68.69px
163 | 69.12px
164 | 69.54px
165 | 69.97px
166 | 70.4px
167 | 70.82px
168 | 71.25px
169 | 71.68px
170 | 72.1px
171 | 72.53px
172 | 72.96px
173 | 73.38px
174 | 73.81px
175 | 74.24px
176 | 74.66px
177 | 75.09px
178 | 75.52px
179 | 75.94px
180 | 76.37px
181 | 76.8px
182 | 77.22px
183 | 77.65px
184 | 78.08px
185 | 78.5px
186 | 78.93px
187 | 79.36px
188 | 79.78px
189 | 80.21px
190 | 80.64px
191 | 81.06px
192 | 81.49px
193 | 81.92px
194 | 82.34px
195 | 82.77px
196 | 83.2px
197 | 83.62px
198 | 84.05px
199 | 84.48px
200 | 84.9px
201 | 85.33px
202 | 85.76px
203 | 86.18px
204 | 86.61px
205 | 87.04px
206 | 87.46px
207 | 87.89px
208 | 88.32px
209 | 88.74px
210 | 89.17px
211 | 89.6px
212 | 90.02px
213 | 90.45px
214 | 90.88px
215 | 91.3px
216 | 91.73px
217 | 92.16px
218 | 92.58px
219 | 93.01px
220 | 93.44px
221 | 93.86px
222 | 94.29px
223 | 94.72px
224 | 95.14px
225 | 95.57px
226 | 96.0px
227 | 96.42px
228 | 96.85px
229 | 97.28px
230 | 97.7px
231 | 98.13px
232 | 98.56px
233 | 98.98px
234 | 99.41px
235 | 99.84px
236 | 100.26px
237 | 100.69px
238 | 101.12px
239 | 101.54px
240 | 101.97px
241 | 102.4px
242 | 102.82px
243 | 103.25px
244 | 103.68px
245 | 104.1px
246 | 104.53px
247 | 104.96px
248 | 105.38px
249 | 105.81px
250 | 106.24px
251 | 106.66px
252 | 107.09px
253 | 107.52px
254 | 107.94px
255 | 108.37px
256 | 108.8px
257 | 109.22px
258 | 109.65px
259 | 110.08px
260 | 110.5px
261 | 110.93px
262 | 111.36px
263 | 111.78px
264 | 112.21px
265 | 112.64px
266 | 113.06px
267 | 113.49px
268 | 113.92px
269 | 114.34px
270 | 114.77px
271 | 115.2px
272 | 115.62px
273 | 116.05px
274 | 116.48px
275 | 116.9px
276 | 117.33px
277 | 117.76px
278 | 118.18px
279 | 118.61px
280 | 119.04px
281 | 119.46px
282 | 119.89px
283 | 120.32px
284 | 120.74px
285 | 121.17px
286 | 121.6px
287 | 122.02px
288 | 122.45px
289 | 122.88px
290 | 123.3px
291 | 123.73px
292 | 124.16px
293 | 124.58px
294 | 125.01px
295 | 125.44px
296 | 125.86px
297 | 126.29px
298 | 126.72px
299 | 127.14px
300 | 127.57px
301 | 128.0px
302 | 128.42px
303 | 128.85px
304 | 129.28px
305 | 129.7px
306 | 130.13px
307 | 130.56px
308 | 130.98px
309 | 131.41px
310 | 131.84px
311 | 132.26px
312 | 132.69px
313 | 133.12px
314 | 133.54px
315 | 133.97px
316 | 134.4px
317 | 134.82px
318 | 135.25px
319 | 135.68px
320 | 136.1px
321 | 136.53px
322 | 136.96px
323 | 137.38px
324 | 137.81px
325 | 138.24px
326 | 138.66px
327 | 139.09px
328 | 139.52px
329 | 139.94px
330 | 140.37px
331 | 140.8px
332 | 141.22px
333 | 141.65px
334 | 142.08px
335 | 142.5px
336 | 142.93px
337 | 143.36px
338 | 143.78px
339 | 144.21px
340 | 144.64px
341 | 145.06px
342 | 145.49px
343 | 145.92px
344 | 146.34px
345 | 146.77px
346 | 147.2px
347 | 147.62px
348 | 148.05px
349 | 148.48px
350 | 148.9px
351 | 149.33px
352 | 149.76px
353 | 150.18px
354 | 150.61px
355 | 151.04px
356 | 151.46px
357 | 151.89px
358 | 152.32px
359 | 152.74px
360 | 153.17px
361 | 153.6px
362 | 154.02px
363 | 154.45px
364 | 154.88px
365 | 155.3px
366 | 155.73px
367 | 156.16px
368 | 156.58px
369 | 157.01px
370 | 157.44px
371 | 157.86px
372 | 158.29px
373 | 158.72px
374 | 159.14px
375 | 159.57px
376 | 160.0px
377 | 160.42px
378 | 160.85px
379 | 161.28px
380 | 161.7px
381 | 162.13px
382 | 162.56px
383 | 162.98px
384 | 163.41px
385 | 163.84px
386 | 164.26px
387 | 164.69px
388 | 165.12px
389 | 165.54px
390 | 165.97px
391 | 166.4px
392 | 166.82px
393 | 167.25px
394 | 167.68px
395 | 168.1px
396 | 168.53px
397 | 168.96px
398 | 169.38px
399 | 169.81px
400 | 170.24px
401 | 170.66px
402 | 171.09px
403 | 171.52px
404 | 171.94px
405 | 172.37px
406 | 172.8px
407 | 173.22px
408 | 173.65px
409 | 174.08px
410 | 174.5px
411 | 174.93px
412 | 175.36px
413 | 175.78px
414 | 176.21px
415 | 176.64px
416 | 177.06px
417 | 177.49px
418 | 177.92px
419 | 178.34px
420 | 178.77px
421 | 179.2px
422 | 179.62px
423 | 180.05px
424 | 180.48px
425 | 180.9px
426 | 181.33px
427 | 181.76px
428 | 182.18px
429 | 182.61px
430 | 183.04px
431 | 183.46px
432 | 183.89px
433 | 184.32px
434 | 184.74px
435 | 185.17px
436 | 185.6px
437 | 186.02px
438 | 186.45px
439 | 186.88px
440 | 187.3px
441 | 187.73px
442 | 188.16px
443 | 188.58px
444 | 189.01px
445 | 189.44px
446 | 189.86px
447 | 190.29px
448 | 190.72px
449 | 191.14px
450 | 191.57px
451 | 192.0px
452 | 192.42px
453 | 192.85px
454 | 193.28px
455 | 193.7px
456 | 194.13px
457 | 194.56px
458 | 194.98px
459 | 195.41px
460 | 195.84px
461 | 196.26px
462 | 196.69px
463 | 197.12px
464 | 197.54px
465 | 197.97px
466 | 198.4px
467 | 198.82px
468 | 199.25px
469 | 199.68px
470 | 200.1px
471 | 200.53px
472 | 200.96px
473 | 201.38px
474 | 201.81px
475 | 202.24px
476 | 202.66px
477 | 203.09px
478 | 203.52px
479 | 203.94px
480 | 204.37px
481 | 204.8px
482 | 205.22px
483 | 205.65px
484 | 206.08px
485 | 206.5px
486 | 206.93px
487 | 207.36px
488 | 207.78px
489 | 208.21px
490 | 208.64px
491 | 209.06px
492 | 209.49px
493 | 209.92px
494 | 210.34px
495 | 210.77px
496 | 211.2px
497 | 211.62px
498 | 212.05px
499 | 212.48px
500 | 212.9px
501 | 213.33px
502 | 213.76px
503 | 214.18px
504 | 214.61px
505 | 215.04px
506 | 215.46px
507 | 215.89px
508 | 216.32px
509 | 216.74px
510 | 217.17px
511 | 217.6px
512 | 218.02px
513 | 218.45px
514 | 218.88px
515 | 219.3px
516 | 219.73px
517 | 220.16px
518 | 220.58px
519 | 221.01px
520 | 221.44px
521 | 221.86px
522 | 222.29px
523 | 222.72px
524 | 223.14px
525 | 223.57px
526 | 224.0px
527 | 224.42px
528 | 224.85px
529 | 225.28px
530 | 225.7px
531 | 226.13px
532 | 226.56px
533 | 226.98px
534 | 227.41px
535 | 227.84px
536 | 228.26px
537 | 228.69px
538 | 229.12px
539 | 229.54px
540 | 229.97px
541 | 230.4px
542 | 230.82px
543 | 231.25px
544 | 231.68px
545 | 232.1px
546 | 232.53px
547 | 232.96px
548 | 233.38px
549 | 233.81px
550 | 234.24px
551 | 234.66px
552 | 235.09px
553 | 235.52px
554 | 235.94px
555 | 236.37px
556 | 236.8px
557 | 237.22px
558 | 237.65px
559 | 238.08px
560 | 238.5px
561 | 238.93px
562 | 239.36px
563 | 239.78px
564 | 240.21px
565 | 240.64px
566 | 241.06px
567 | 241.49px
568 | 241.92px
569 | 242.34px
570 | 242.77px
571 | 243.2px
572 | 243.62px
573 | 244.05px
574 | 244.48px
575 | 244.9px
576 | 245.33px
577 | 245.76px
578 | 246.18px
579 | 246.61px
580 | 247.04px
581 | 247.46px
582 | 247.89px
583 | 248.32px
584 | 248.74px
585 | 249.17px
586 | 249.6px
587 | 250.02px
588 | 250.45px
589 | 250.88px
590 | 251.3px
591 | 251.73px
592 | 252.16px
593 | 252.58px
594 | 253.01px
595 | 253.44px
596 | 253.86px
597 | 254.29px
598 | 254.72px
599 | 255.14px
600 | 255.57px
601 | 256.0px
602 | 256.42px
603 | 256.85px
604 | 257.28px
605 | 257.7px
606 | 258.13px
607 | 258.56px
608 | 258.98px
609 | 259.41px
610 | 259.84px
611 | 260.26px
612 | 260.69px
613 | 261.12px
614 | 261.54px
615 | 261.97px
616 | 262.4px
617 | 262.82px
618 | 263.25px
619 | 263.68px
620 | 264.1px
621 | 264.53px
622 | 264.96px
623 | 265.38px
624 | 265.81px
625 | 266.24px
626 | 266.66px
627 | 267.09px
628 | 267.52px
629 | 267.94px
630 | 268.37px
631 | 268.8px
632 | 269.22px
633 | 269.65px
634 | 270.08px
635 | 270.5px
636 | 270.93px
637 | 271.36px
638 | 271.78px
639 | 272.21px
640 | 272.64px
641 | 273.06px
642 | 273.49px
643 | 273.92px
644 | 274.34px
645 | 274.77px
646 | 275.2px
647 | 275.62px
648 | 276.05px
649 | 276.48px
650 | 276.9px
651 | 277.33px
652 | 277.76px
653 | 278.18px
654 | 278.61px
655 | 279.04px
656 | 279.46px
657 | 279.89px
658 | 280.32px
659 | 280.74px
660 | 281.17px
661 | 281.6px
662 | 282.02px
663 | 282.45px
664 | 282.88px
665 | 283.3px
666 | 283.73px
667 | 284.16px
668 | 284.58px
669 | 285.01px
670 | 285.44px
671 | 285.86px
672 | 286.29px
673 | 286.72px
674 | 287.14px
675 | 287.57px
676 | 288.0px
677 | 288.42px
678 | 288.85px
679 | 289.28px
680 | 289.7px
681 | 290.13px
682 | 290.56px
683 | 290.98px
684 | 291.41px
685 | 291.84px
686 | 292.26px
687 | 292.69px
688 | 293.12px
689 | 293.54px
690 | 293.97px
691 | 294.4px
692 | 294.82px
693 | 295.25px
694 | 295.68px
695 | 296.1px
696 | 296.53px
697 | 296.96px
698 | 297.38px
699 | 297.81px
700 | 298.24px
701 | 298.66px
702 | 299.09px
703 | 299.52px
704 | 299.94px
705 | 300.37px
706 | 300.8px
707 | 301.22px
708 | 301.65px
709 | 302.08px
710 | 302.5px
711 | 302.93px
712 | 303.36px
713 | 303.78px
714 | 304.21px
715 | 304.64px
716 | 305.06px
717 | 305.49px
718 | 305.92px
719 | 306.34px
720 | 306.77px
721 | 307.2px
722 | 307.62px
723 | 308.05px
724 | 308.48px
725 | 308.9px
726 | 309.33px
727 | 309.76px
728 | 310.18px
729 | 310.61px
730 | 311.04px
731 | 311.46px
732 | 311.89px
733 | 312.32px
734 | 312.74px
735 | 313.17px
736 | 313.6px
737 | 314.02px
738 | 314.45px
739 | 314.88px
740 | 315.3px
741 | 315.73px
742 | 316.16px
743 | 316.58px
744 | 317.01px
745 | 317.44px
746 | 317.86px
747 | 318.29px
748 | 318.72px
749 | 319.14px
750 | 319.57px
751 | 320px
752 |
--------------------------------------------------------------------------------