/*
* Copyright (C) 2007 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.calendar;
import com.android.calendar.CalendarController.EventType;
import com.android.calendar.CalendarController.ViewType;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
import android.animation.TypeEvaluator;
import android.animation.ValueAnimator;
import android.app.AlertDialog;
import android.app.Service;
import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.Context;
import android.content.DialogInterface;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.database.Cursor;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Paint.Align;
import android.graphics.Paint.Style;
import android.graphics.Rect;
import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Handler;
import android.provider.CalendarContract.Attendees;
import android.provider.CalendarContract.Calendars;
import android.provider.CalendarContract.Events;
import android.text.Layout.Alignment;
import android.text.SpannableStringBuilder;
import android.text.StaticLayout;
import android.text.TextPaint;
import android.text.TextUtils;
import android.text.format.DateFormat;
import android.text.format.DateUtils;
import android.text.format.Time;
import android.text.style.StyleSpan;
import android.util.Log;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.GestureDetector;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.ScaleGestureDetector;
import android.view.View;
import android.view.ViewConfiguration;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityManager;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.view.animation.Animation;
import android.view.animation.Interpolator;
import android.view.animation.TranslateAnimation;
import android.widget.EdgeEffect;
import android.widget.ImageView;
import android.widget.OverScroller;
import android.widget.PopupWindow;
import android.widget.TextView;
import android.widget.ViewSwitcher;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Formatter;
import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* View for multi-day view. So far only 1 and 7 day have been tested.
*/
public class DayView extends View implements View.OnCreateContextMenuListener,
ScaleGestureDetector.OnScaleGestureListener, View.OnClickListener, View.OnLongClickListener
{
private static String TAG = "DayView";
private static boolean DEBUG = false;
private static boolean DEBUG_SCALING = false;
private static final String PERIOD_SPACE = ". ";
private static float mScale = 0; // Used for supporting different screen densities
private static final long INVALID_EVENT_ID = -1; //This is used for remembering a null event
// Duration of the allday expansion
private static final long ANIMATION_DURATION = 400;
// duration of the more allday event text fade
private static final long ANIMATION_SECONDARY_DURATION = 200;
// duration of the scroll to go to a specified time
private static final int GOTO_SCROLL_DURATION = 200;
private static final int MENU_AGENDA = 2;
private static final int MENU_DAY = 3;
private static final int MENU_EVENT_VIEW = 5;
private static final int MENU_EVENT_CREATE = 6;
private static final int MENU_EVENT_EDIT = 7;
private static final int MENU_EVENT_DELETE = 8;
private static int DEFAULT_CELL_HEIGHT = 64;
private static int MAX_CELL_HEIGHT = 150;
private static int MIN_Y_SPAN = 100;
private boolean mOnFlingCalled;
private boolean mStartingScroll = false;
/**
* ID of the last event which was displayed with the toast popup.
*
* This is used to prevent popping up multiple quick views for the same event, especially
* during calendar syncs. This becomes valid when an event is selected, either by default
* on starting calendar or by scrolling to an event. It becomes invalid when the user
* explicitly scrolls to an empty time slot, changes views, or deletes the event.
*/
private long mLastPopupEventID;
protected Context mContext;
private static final String[] CALENDARS_PROJECTION = new String[] {
Calendars._ID, // 0
Calendars.CALENDAR_ACCESS_LEVEL, // 1
Calendars.OWNER_ACCOUNT, // 2
};
private static final int CALENDARS_INDEX_ACCESS_LEVEL = 1;
private static final int CALENDARS_INDEX_OWNER_ACCOUNT = 2;
private static final String CALENDARS_WHERE = Calendars._ID + "=%d";
private static final int FROM_NONE = 0;
private static final int FROM_ABOVE = 1;
private static final int FROM_BELOW = 2;
private static final int FROM_LEFT = 4;
private static final int FROM_RIGHT = 8;
private static final int ACCESS_LEVEL_NONE = 0;
private static final int ACCESS_LEVEL_DELETE = 1;
private static final int ACCESS_LEVEL_EDIT = 2;
private static int mHorizontalSnapBackThreshold = 128;
private ContinueScroll mContinueScroll = new ContinueScroll();
// Make this visible within the package for more informative debugging
Time mBaseDate;
private Time mCurrentTime;
//Update the current time line every five minutes if the window is left open that long
private static final int UPDATE_CURRENT_TIME_DELAY = 300000;
private UpdateCurrentTime mUpdateCurrentTime = new UpdateCurrentTime();
private int mTodayJulianDay;
private Typeface mBold = Typeface.DEFAULT_BOLD;
private int mFirstJulianDay;
private int mLastJulianDay;
private int mMonthLength;
private int mFirstVisibleDate;
private int mFirstVisibleDayOfWeek;
private int[] mEarliestStartHour; // indexed by the week day offset
private boolean[] mHasAllDayEvent; // indexed by the week day offset
private String mEventCountTemplate;
private CharSequence[] mLongPressItems;
private String mLongPressTitle;
protected static StringBuilder mStringBuilder = new StringBuilder(50);
// TODO recreate formatter when locale changes
protected static Formatter mFormatter = new Formatter(mStringBuilder, Locale.getDefault());
private Runnable mTZUpdater = new Runnable() {
@Override
public void run() {
String tz = Utils.getTimeZone(mContext, this);
mBaseDate.timezone = tz;
mBaseDate.normalize(true);
mCurrentTime.switchTimezone(tz);
invalidate();
}
};
private TodayAnimatorListener mTodayAnimatorListener = new TodayAnimatorListener();
class TodayAnimatorListener extends AnimatorListenerAdapter {
private volatile Animator mAnimator = null;
private volatile boolean mFadingIn = false;
@Override
public void onAnimationEnd(Animator animation) {
synchronized (this) {
if (mAnimator !
没有合适的资源?快使用搜索试试~ 我知道了~
Android应用源码之Calendar.zip项目安卓应用源码下载
共487个文件
xml:204个
png:198个
java:77个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 22 浏览量
2022-03-07
23:44:57
上传
评论
收藏 1.27MB ZIP 举报
温馨提示
Android应用源码之Calendar.zip项目安卓应用源码下载Android应用源码之Calendar.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考
资源详情
资源评论
资源推荐
收起资源包目录
Android应用源码之Calendar.zip项目安卓应用源码下载 (487个子文件)
proguard.flags 961B
HEAD 41B
index 51KB
DayView.java 186KB
EventInfoFragment.java 72KB
EditEventView.java 69KB
EditEventHelperTest.java 60KB
EditEventHelper.java 52KB
AllInOneActivity.java 51KB
Utils.java 46KB
AgendaWindowAdapter.java 45KB
MonthWeekEventsView.java 37KB
EditEventFragment.java 34KB
CalendarController.java 32KB
CalendarEventModel.java 28KB
AsyncQueryServiceTest.java 24KB
SimpleDayPickerFragment.java 23KB
Event.java 23KB
CalendarAppWidgetService.java 22KB
SimpleWeekView.java 20KB
AgendaByDayAdapter.java 19KB
AlertService.java 19KB
MonthByWeekFragment.java 18KB
DeleteEventHelper.java 17KB
AsyncQueryService.java 17KB
AttendeesView.java 17KB
AgendaListView.java 16KB
CalendarAppWidgetModel.java 15KB
SelectSyncedCalendarsMultiAccountAdapter.java 15KB
CalendarUtils.java 15KB
AgendaFragment.java 14KB
GeneralPreferences.java 14KB
CalendarViewAdapter.java 13KB
AlertActivity.java 13KB
AsyncQueryServiceHelper.java 13KB
TimezoneAdapter.java 12KB
SelectCalendarsSimpleAdapter.java 12KB
SearchActivity.java 12KB
StickyHeaderListView.java 12KB
AgendaAdapter.java 11KB
CalendarAppWidgetServiceTest.java 11KB
EventViewUtils.java 11KB
MonthByWeekAdapter.java 11KB
EventLoader.java 10KB
FormatDateRangeTest.java 10KB
CalendarAppWidgetProvider.java 10KB
SimpleWeeksAdapter.java 10KB
WeekNumberTest.java 10KB
UtilsTests.java 10KB
ContactsAsyncHelper.java 9KB
DayFragment.java 9KB
GoogleCalendarUriIntentFilter.java 8KB
AlertReceiver.java 8KB
SelectCalendarsSyncFragment.java 7KB
EventInfoActivity.java 7KB
MultiStateButton.java 6KB
SelectCalendarsSyncAdapter.java 6KB
SelectSyncedCalendarsMultiAccountActivity.java 6KB
SelectVisibleCalendarsFragment.java 6KB
AlertAdapter.java 5KB
DayOfMonthCursor.java 5KB
EventGeometry.java 5KB
EditEventActivity.java 5KB
CalendarSettingsActivity.java 4KB
EventRecurrenceFormatter.java 4KB
ColorChipView.java 4KB
Duration.java 4KB
EditResponseHelper.java 3KB
SelectVisibleCalendarsActivity.java 3KB
EmailAddressAdapter.java 2KB
OtherPreferences.java 2KB
DismissAllAlarmsService.java 2KB
RecipientAdapter.java 2KB
AboutPreferences.java 1KB
CalendarLaunchPerformance.java 1KB
CalendarRecentSuggestionsProvider.java 1KB
CalendarData.java 1KB
CalendarBackupAgent.java 1KB
CalendarApplication.java 1002B
AbstractCalendarActivity.java 364B
CleanSpec.mk 2KB
Android.mk 810B
Android.mk 494B
MODULE_LICENSE_APACHE2 0B
NOTICE 10KB
panel_month_event_holo_light.9.png 47KB
panel_month_event_holo_light.9.png 46KB
calendar_widget_preview.png 26KB
calendar_widget_preview.png 19KB
ic_launcher_calendar.png 12KB
calendar_widget_preview.png 11KB
ic_launcher_calendar.png 8KB
ic_contact_picture.png 7KB
ic_contact_picture.png 6KB
ic_contact_picture.png 5KB
widget_show.png 4KB
ic_launcher_calendar.png 4KB
widget_show.png 4KB
ic_menu_select_visible_calendars_holo_light.png 4KB
widget_show.png 3KB
共 487 条
- 1
- 2
- 3
- 4
- 5
yxkfw
- 粉丝: 76
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0