import android.content.Context; import android.graphics.Paint; import android.graphics.PointF; import android.graphics.Typeface; import android.graphics.drawable.Drawable; import android.text.TextPaint; import android.util.AttributeSet; import android.util.TypedValue; import android.view.GestureDetector; import android.view.MotionEvent; import android.view.ScaleGestureDetector; import android.view.View; import android.widget.OverScroller;

import androidx.annotation.ColorInt; import androidx.core.content.ContextCompat; import androidx.core.view.GestureDetectorCompat; import androidx.core.view.ViewCompat; import androidx.interpolator.view.animation.FastOutLinearInInterpolator;

import java.util.ArrayList; import java.util.Calendar; import java.util.List;

class WeekView extends View { private final DrawPerformanceTester drawPerformanceTester = new DrawPerformanceTester(false); private Calendar mHomeDate; private Calendar minDate; private Calendar maxDate; private final TextPaint timeTextPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); private final TextPaint mHeaderWeekDayTitleTextPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); private final TextPaint mHeaderWeekDaySubtitleTextPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); private final TextPaint mHeaderWeekDayTitleTodayTextPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); private final TextPaint mHeaderWeekDaySubtitleTodayTextPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); private final TextPaint mEventTextPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG | Paint.LINEAR_TEXT_FLAG); private final TextPaint sideTitleTextPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); private final TextPaint sideSubtitleTextPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); private final TextPaint allDaySideTitleTextPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); private final Paint mEmptyEventPaint = new Paint(); private final Paint mHeaderBackgroundPaint = new Paint(); private final Paint mDayBackgroundPaint = new Paint(); private final Paint mHourSeparatorPaint = new Paint(); private final Paint mTodayColumnBackgroundPaint = new Paint(); private final Paint mFutureBackgroundPaint = new Paint(); private final Paint mPastBackgroundPaint = new Paint(); private final Paint mFutureWeekendBackgroundPaint = new Paint(); private final Paint mPastWeekendBackgroundPaint = new Paint(); private final Paint mNowLinePaint = new Paint(); private final Paint mEventBackgroundPaint = new Paint(); private final Paint mNewEventBackgroundPaint = new Paint(); private boolean containsAllDayEvent; private float timeTextWidth; private float timeTextHeight; private float headerWeekDayTitleTextHeight; private float headerHeight; private float headerWeekDaySubtitleTextHeight; private GestureDetectorCompat mGestureDetector; private OverScroller mScroller; private final PointF mCurrentOrigin = new PointF(0f, 0f); private Direction mCurrentScrollDirection = Direction.NONE; private float widthPerDay; private float mHeaderColumnWidth; private List eventRects; private final List mEvents = new ArrayList<>(); private int mFetchedPeriod = -1; private boolean mRefreshEvents; private Direction mCurrentFlingDirection = Direction.NONE; private ScaleGestureDetector scaleDetector; private boolean mIsZooming; private Calendar firstVisibleDay; private int mMinimumFlingVelocity; private int mScaledTouchSlop; private EventRect mNewEventRect; private TextColorPicker textColorPicker; private float mSizeOfWeekView; private float mDistanceDone; private float mDistanceMin; private int mOffsetValueToSecureScreen = 9; private float mStartOriginForScroll; private int mNewHourHeight = -1; private int minHourHeight = 0; private int mEffectiveMinHourHeight = minHourHeight; private int maxHourHeight = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 125f, getResources().getDisplayMetrics()); private String newEventIdentifier = "-100"; private Drawable newEventIconDrawable; private int newEventLengthInMinutes = 60; private int newEventTimeResolutionInMinutes = 15; private boolean isShowFirstDayOfWeekFirst; private boolean mIsFirstDraw = true; private boolean mAreDimensionsInvalid = true; private float xScrollingSpeed = 1f; private Calendar mScrollToDay; private double mScrollToHour = -1.0; private float eventCornerRadius = 0.0f; private boolean isHorizontalFlingEnabled = true; private boolean isVerticalFlingEnabled = true; private int allDayEventHeight = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 40f, getResources().getDisplayMetrics()); private boolean isZoomFocusPointEnabled = true; private int scrollDuration = 250; private int timeColumnResolution = 60; private Typeface typeface = Typeface.DEFAULT_BOLD; private String allDaySideTitleText; private int mMinTime = 0; private int mMaxTime = 24; private boolean autoLimitTime = false; private int minOverlappingMinutes = 0; private EventClickListener eventClickListener; private EventLongPressListener eventLongPressListener; private WeekViewLoader weekViewLoader; private EmptyViewClickListener emptyViewClickListener; private EmptyViewLongPressListener emptyViewLongPressListener; private ScrollListener scrollListener; private AddEventClickListener addEventClickListener; private DropListener dropListener; private boolean enableDrawHeaderBackgroundOnlyOnWeekDays = false; private String sideTitleText; private String sideSubtitleText; private String untitledEventText;

public WeekView(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    // Initialize the view
    init();
}

private void init() {
    // Set up the paint objects and other UI elements
    // ...

    // Set up the gesture detectors and scroller
    // ...
}

}

Convert Kotlin WeekView Class to Java Code

原文地址: https://www.cveoy.top/t/topic/fvGt 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录