728x90
반응형
SMALL
Material Calendar
Material Calendar는 Android CalendarView의 머티리얼 디자인 백 포트이다. 목표는 플랫폼 구현과 100% 패리티가 아닌 머티리얼 모양과 느낌을 갖는 것이다.
setting.gradle
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
JitPack을 build 파일에 추가한다.
build.gradle
dependencies {
implementation 'com.github.prolificinteractive:material-calendarview:${version}'
}
dependency를 추가한다.
gradle.properties
android.enableJetifier=true
오류 발생시 프로젝트 세팅 파일인 gradle.properties에 추가한다.
xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#fff"
tools:context=".MainActivity">
<com.prolificinteractive.materialcalendarview.MaterialCalendarView
android:id="@+id/calendarView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
app:mcv_selectionColor="#739c73"
app:mcv_showOtherDates="all"
tools:ignore="MissingConstraints" />
</androidx.constraintlayout.widget.ConstraintLayout>
java
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import com.prolificinteractive.materialcalendarview.CalendarDay;
import com.prolificinteractive.materialcalendarview.MaterialCalendarView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MaterialCalendarView materialCalendarView = findViewById(R.id.calendarView);
materialCalendarView.setSelectedDate(CalendarDay.today());
}
}
SaturdayDecorator / SundayDecorator
토요일과 일요일에 색상을 주기 위해 java 폴더에 java class를 추가한다.
package com.example.myapplication.decorators;
import android.graphics.Color;
import android.text.style.ForegroundColorSpan;
import com.prolificinteractive.materialcalendarview.CalendarDay;
import com.prolificinteractive.materialcalendarview.DayViewDecorator;
import com.prolificinteractive.materialcalendarview.DayViewFacade;
import java.util.Calendar;
public class SaturdayDecorator implements DayViewDecorator {
private final Calendar calendar = Calendar.getInstance();
public SaturdayDecorator() {
}
@Override
public boolean shouldDecorate(CalendarDay day) {
day.copyTo(calendar);
int weekDay = calendar.get(Calendar.DAY_OF_WEEK);
return weekDay == Calendar.SATURDAY;
}
@Override
public void decorate(DayViewFacade view) {
view.addSpan(new ForegroundColorSpan(Color.BLUE));
}
}
package com.example.myapplication.decorators;
import android.graphics.Color;
import android.text.style.ForegroundColorSpan;
import com.prolificinteractive.materialcalendarview.CalendarDay;
import com.prolificinteractive.materialcalendarview.DayViewDecorator;
import com.prolificinteractive.materialcalendarview.DayViewFacade;
import java.util.Calendar;
public class SundayDecorator implements DayViewDecorator {
private final Calendar calendar = Calendar.getInstance();
public SundayDecorator() {
}
@Override
public boolean shouldDecorate(CalendarDay day) {
day.copyTo(calendar);
int weekDay = calendar.get(Calendar.DAY_OF_WEEK);
return weekDay == Calendar.SUNDAY;
}
@Override
public void decorate(DayViewFacade view) {
view.addSpan(new ForegroundColorSpan(Color.RED));
}
}
main activity
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import com.example.myapplication.decorators.SaturdayDecorator;
import com.example.myapplication.decorators.SundayDecorator;
import com.prolificinteractive.materialcalendarview.CalendarDay;
import com.prolificinteractive.materialcalendarview.MaterialCalendarView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MaterialCalendarView materialCalendarView = findViewById(R.id.calendarView);
materialCalendarView.setSelectedDate(CalendarDay.today());
materialCalendarView.addDecorators(
new SundayDecorator(),
new SaturdayDecorator()
);
}
}
728x90
반응형
LIST
'App Programming > Android Studio' 카테고리의 다른 글
[Android Studio] Material CalendarView (3) (0) | 2022.09.14 |
---|---|
[Android Studio] Material CalendarView (2) (0) | 2022.09.14 |
[Android Studio] The application could not be installed: INSTALL_FAILED_INSUFFICIENT_STORAGE (0) | 2022.09.13 |
[Android Studio] 기본 카메라 사진 찍고 이미지뷰에 출력하기 (0) | 2022.09.05 |
[Android Studio] TensorFlow Lite 숫자 판별 (0) | 2022.09.02 |