CompactCalendarView عبارة عن طريقة عرض تقويم بسيطة توفر التمرير بين الأشهر. يعتمد ذلك على فئات التاريخ والتقويم في Java. يوفر واجهة برمجة تطبيقات بسيطة للاستعلام عن التواريخ والمستمعين لأحداث محددة. على سبيل المثال، عند انتقال التقويم إلى شهر جديد أو تحديد يوم. لا تزال قيد التطوير النشط.
يرجى إثارة مسألة المتطلبات حتى تتم المناقشة قبل كتابة أي رمز، حتى لو كنت تنوي رفع طلب سحب. يرجى الاطلاع على الإعداد للاختبار.
يستخدم CompactCalendarView اختبارات لقطة الشاشة لنظام Android (https://github.com/facebook/screenshot-tests-for-android). هذا لاختبار واجهة المستخدم. نظرًا لأن Screenshot-tests-for-android تلتقط لقطات شاشة، فإننا بحاجة إلى طريقة لضمان إمكانية إعادة إنتاج الصور بشكل متسق. للقيام بذلك، يتم استخدام محاكي معين لإجراء الاختبارات. لسوء الحظ، يتم استخدام محاكي قديم في الوقت الحالي. يجب أن تهدف طلبات السحب الجديدة التي تغير الوظائف بطريقة ما إلى إنشاء اختبارات لقطة شاشة جديدة أو اختبارات وحدة إن أمكن. لتشغيل هذا محليًا، قم بتشغيل الأوامر التالية:
متطلب سابق (راجع أيضًا .travis.yml):
يتم استخدام محاكي Android 19 لأنه يبدو سريعًا بدرجة كافية على travis-ci ولأن محاكيات x86 غير مدعومة على travis-ci. إصدار أندرويد الأحدث ممكن ولكن أوقات البناء ستزيد.
قم بتثبيت أبي وقبول:
$ $ANDROID_HOME /tools/bin/sdkmanager ' system-images;android-22;default;armeabi-v7a '
إنشاء المحاكي:
$ echo no | $ANDROID_HOME /tools/bin/avdmanager create avd --force -n testCompactCalendarEmulator -k " system-images;android-22;default;armeabi-v7a "
إنشاء بطاقة sd (إنشاء في الدليل الحالي): من الأفضل حل أي مشاكل تتعلق ببطاقة sdcard عن طريق الحذف والمحاولة مرة أخرى
$ mksdcard -l sdcard 100M sdcard
تشغيل المحاكي (بدون صوت ونافذة):
$ $ANDROID_HOME /emulator/emulator -avd testCompactCalendarEmulator -no-audio -no-window -sdcard sdcard &
قم بتشغيل المحاكي والمشاهدة (مع الصوت والنافذة):
$ $ANDROID_HOME /emulator/emulator -avd testCompactCalendarEmulator -sdcard sdcard
إجراء الاختبارات للتحقق من اجتياز الاختبارات الحالية وللتحقق من الاختبارات التي لا تنتج نفس لقطة الشاشة:
$ ./gradlew verifyMode screenshotTests
لإنشاء لقطات شاشة جديدة إذا تمت إضافة اختبارات جديدة:
$ ./gradlew recordMode screenshotTests
قم بإجراء اختبارات الوحدة كما يلي:
$ ./gradlew test
من الممكن الاختبار باستخدام محاكي android studio. ومع ذلك، يجب أن يكون نظام Android 19 ودقة شاشة 480 × 800. أحد الأمثلة على ذلك هو محاكي Nexus S. ما عليك سوى تشغيل المحاكي وتنفيذ أوامر Gradle لتشغيل الاختبارات. يجب العثور على المحاكي تلقائيًا.
تدعم المكتبة الفتح/الإغلاق مع أو بدون رسوم متحركة.
من الممكن تغيير مظهر العرض عبر بعض الخصائص. يتضمن ذلك لون الخلفية ولون النص ولون حجم النص لليوم الحالي ولون اليوم الأول من الشهر.
< com .github.sundeepk.compactcalendarview.CompactCalendarView
xmlns : app = " http://schemas.android.com/apk/res-auto "
android : id = " @+id/compactcalendar_view "
android : layout_width = " fill_parent "
android : paddingRight = " 10dp "
android : paddingLeft = " 10dp "
android : layout_height = " 250dp "
app : compactCalendarTargetHeight = " 250dp "
app : compactCalendarTextSize = " 12sp "
app : compactCalendarBackgroundColor = " #ffe95451 "
app : compactCalendarTextColor = " #fff "
app : compactCalendarCurrentSelectedDayBackgroundColor = " #E57373 "
app : compactCalendarCurrentDayBackgroundColor = " #B71C1C "
app : compactCalendarMultiEventIndicatorColor = " #fff "
/>
يرجى الاطلاع على نموذج التطبيق للحصول على المثال الكامل.
// ... code omitted for brevity
@ Override
protected void onCreate ( Bundle savedInstanceState ) {
super . onCreate ( savedInstanceState );
setContentView ( R . layout . activity_main );
final CompactCalendarView compactCalendarView = ( CompactCalendarView ) findViewById ( R . id . compactcalendar_view );
// Set first day of week to Monday, defaults to Monday so calling setFirstDayOfWeek is not necessary
// Use constants provided by Java Calendar class
compactCalendarView . setFirstDayOfWeek ( Calendar . MONDAY );
// Add event 1 on Sun, 07 Jun 2015 18:20:51 GMT
Event ev1 = new Event ( Color . GREEN , 1433701251000L , "Some extra data that I want to store." );
compactCalendar . addEvent ( ev1 );
// Added event 2 GMT: Sun, 07 Jun 2015 19:10:51 GMT
Event ev2 = new Event ( Color . GREEN , 1433704251000L );
compactCalendar . addEvent ( ev2 );
// Query for events on Sun, 07 Jun 2015 GMT.
// Time is not relevant when querying for events, since events are returned by day.
// So you can pass in any arbitary DateTime and you will receive all events for that day.
List < Event > events = compactCalendar . getEvents ( 1433701251000L ); // can also take a Date object
// events has size 2 with the 2 events inserted previously
Log . d ( TAG , "Events: " + events );
// define a listener to receive callbacks when certain events happen.
compactCalendarView . setListener ( new CompactCalendarView . CompactCalendarViewListener () {
@ Override
public void onDayClick ( Date dateClicked ) {
List < Event > events = compactCalendarView . getEvents ( dateClicked );
Log . d ( TAG , "Day was clicked: " + dateClicked + " with events " + events );
}
@ Override
public void onMonthScroll ( Date firstDayOfNewMonth ) {
Log . d ( TAG , "Month was scrolled to: " + firstDayOfNewMonth );
}
});
}
يمكنك تعديل المؤشرات باستخدام مجموعة محددة مسبقًا من الأنماط، فيما يلي مثال على ذلك، ولكن هناك أيضًا عدد قليل من المجموعات الأخرى الممكنة:
لاحظ أن التقويم لا يحاول إلغاء تكرار الأحداث لنفس التاريخ والوقت بالضبط. هذا شيء يجب عليك التعامل معه بنفسك إذا كان مهمًا لحالة الاستخدام الخاصة بك.
من الممكن ضبط اللغة بحيث يتم تعيين أسماء أعمدة أيام الأسبوع تلقائيًا بواسطة التقويم.
CompactCalendarView compactCalendarView = ( CompactCalendarView ) findViewById ( R . id . compactcalendar_view );
compactCalendarView . setLocale ( Locale . CHINESE );
compactCalendarView . setUseThreeLetterAbbreviation ( true );
dependencies {
compile ' com.github.sundeepk:compact-calendar-view:3.0.0 '
}
The MIT License (MIT)
Copyright (c) [2018] [Sundeepk]
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.