package com.easier.ui;
/**
* @author zhouxin@easier
*/
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.GestureDetector;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.Window;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.AnimationUtils;
import android.widget.*;
import android.widget.LinearLayout.LayoutParams;
import com.easier.adapter.CalendarGridView;
import com.easier.adapter.CalendarGridViewAdapter;
import com.easier.util.CalendarUtil;
import com.easier.util.NumberHelper;
import java.util.Calendar;
import java.util.Date;
public class CalendarView extends Activity implements OnTouchListener {
/**
* 日历布局ID
*/
private static final int CAL_LAYOUT_ID = 55;
//判断手势用
private static final int SWIPE_MIN_DISTANCE = 120;
private static final int SWIPE_MAX_OFF_PATH = 250;
private static final int SWIPE_THRESHOLD_VELOCITY = 200;
//动画
private Animation slideLeftIn;
private Animation slideLeftOut;
private Animation slideRightIn;
private Animation slideRightOut;
private ViewFlipper viewFlipper;
GestureDetector mGesture = null;
/**
* 今天按钮
*/
private Button mTodayBtn;
/**
* 上一个月按钮
*/
private ImageView mPreMonthImg;
/**
* 下一个月按钮
*/
private ImageView mNextMonthImg;
/**
* 用于显示今天的日期
*/
private TextView mDayMessage;
/**
* 用于装截日历的View
*/
private RelativeLayout mCalendarMainLayout;
// 基本变量
private Context mContext = CalendarView.this;
/**
* 上一个月View
*/
private GridView firstGridView;
/**
* 当前月View
*/
private GridView currentGridView;
/**
* 下一个月View
*/
private GridView lastGridView;
/**
* 当前显示的日历
*/
private Calendar calStartDate = Calendar.getInstance();
/**
* 选择的日历
*/
private Calendar calSelected = Calendar.getInstance();
/**
* 今日
*/
private Calendar calToday = Calendar.getInstance();
/**
* 当前界面展示的数据源
*/
private CalendarGridViewAdapter currentGridAdapter;
/**
* 预装载上一个月展示的数据源
*/
private CalendarGridViewAdapter firstGridAdapter;
/**
* 预装截下一个月展示的数据源
*/
private CalendarGridViewAdapter lastGridAdapter;
//
/**
* 当前视图月
*/
private int mMonthViewCurrentMonth = 0;
/**
* 当前视图年
*/
private int mMonthViewCurrentYear = 0;
/**
* 起始周
*/
private int iFirstDayOfWeek = Calendar.MONDAY;
@Override
public boolean onTouch(View v, MotionEvent event) {
return mGesture.onTouchEvent(event);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.calendar_main);
initView();
updateStartDateForMonth();
generateContetView(mCalendarMainLayout);
slideLeftIn = AnimationUtils.loadAnimation(this, R.anim.slide_left_in);
slideLeftOut = AnimationUtils.loadAnimation(this, R.anim.slide_left_out);
slideRightIn = AnimationUtils.loadAnimation(this, R.anim.slide_right_in);
slideRightOut = AnimationUtils.loadAnimation(this, R.anim.slide_right_out);
slideLeftIn.setAnimationListener(animationListener);
slideLeftOut.setAnimationListener(animationListener);
slideRightIn.setAnimationListener(animationListener);
slideRightOut.setAnimationListener(animationListener);
mGesture = new GestureDetector(this, new GestureListener());
}
/**
* 用于初始化控件
*/
private void initView() {
mTodayBtn = (Button) findViewById(R.id.today_btn);
mDayMessage = (TextView) findViewById(R.id.day_message);
mCalendarMainLayout = (RelativeLayout) findViewById(R.id.calendar_main);
mPreMonthImg = (ImageView) findViewById(R.id.left_img);
mNextMonthImg = (ImageView) findViewById(R.id.right_img);
mTodayBtn.setOnClickListener(onTodayClickListener);
mPreMonthImg.setOnClickListener(onPreMonthClickListener);
mNextMonthImg.setOnClickListener(onNextMonthClickListener);
}
/**
* 用于加载到当前的日期的事件
*/
private View.OnClickListener onTodayClickListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
calStartDate = Calendar.getInstance();
updateStartDateForMonth();
generateContetView(mCalendarMainLayout);
}
};
/**
* 用于加载上一个月日期的事件
*/
private View.OnClickListener onPreMonthClickListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
viewFlipper.setInAnimation(slideRightIn);
viewFlipper.setOutAnimation(slideRightOut);
viewFlipper.showPrevious();
setPrevViewItem();
}
};
/**
* 用于加载下一个月日期的事件
*/
private View.OnClickListener onNextMonthClickListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
viewFlipper.setInAnimation(slideLeftIn);
viewFlipper.setOutAnimation(slideLeftOut);
viewFlipper.showNext();
setNextViewItem();
}
};
/**
* 主要用于生成发前展示的日历View
*
* @param layout 将要用于去加载的布局
*/
private void generateContetView(RelativeLayout layout) {
// 创建一个垂直的线性布局(整体内容)
viewFlipper = new ViewFlipper(this);
viewFlipper.setId(CAL_LAYOUT_ID);
calStartDate = getCalendarStartDate();
CreateGirdView();
RelativeLayout.LayoutParams params_cal = new RelativeLayout.LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
layout.addView(viewFlipper, params_cal);
LinearLayout br = new LinearLayout(this);
RelativeLayout.LayoutParams params_br = new RelativeLayout.LayoutParams(
LayoutParams.FILL_PARENT, 1);
params_br.addRule(RelativeLayout.BELOW, CAL_LAYOUT_ID);
br.setBackgroundColor(getResources().getColor(R.color.calendar_background));
layout.addView(br, params_br);
}
/**
* 用于创建当前将要用于展示的View
*/
private void CreateGirdView() {
Calendar firstCalendar = Calendar.getInstance(); // 临时
Calendar currentCalendar = Calendar.getInstance(); // 临时
Calendar lastCalendar = Calendar.getInstance(); // 临时
firstCalendar.setTime(calStartDate.getTime());
currentCalendar.setTime(calStartDate.getTime());
lastCalendar.setTime(calStartDate.getTime());
firstGridView = new CalendarGridView(mContext);
firstCalendar.add(Calendar.MONTH, -1);
firstGridAdapter = new CalendarGridViewAdapter(this, firstCalendar);
firstGridView.setAdapter(firstGridAdapter);// 设置菜单Adapter
firstGridView.setId(CAL_LAYOUT_ID);
currentGridView = new CalendarGridView(mContext);
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
EasierDiary.rar (85个子文件)
EasierDiary
bin
classes.dex 23KB
DiaryTest.apk.unaligned 85KB
com
easier
ui
R$layout.class 388B
R$id.class 655B
R$drawable.class 820B
CalendarView$1.class 1KB
CalendarView$GestureListener.class 3KB
CalendarView$2.class 1KB
R$attr.class 325B
CalendarView.class 10KB
R.class 627B
CalendarView$3.class 1KB
R$string.class 572B
R$color.class 912B
R$anim.class 497B
CalendarView$4.class 989B
R$style.class 383B
adapter
CalendarGridViewAdapter.class 5KB
CalendarGridView.class 2KB
util
NumberHelper.class 575B
CalendarUtil.class 6KB
DiaryTest.apk.res 71KB
DiaryTest.apk 85KB
res
drawable-ldpi
icon.png 14KB
menu
drawable-hdpi
l_arrow.png 3KB
title_bg.png 22KB
r_arrow.png 3KB
l_arrow_sel.png 5KB
wigdet_bg.png 2KB
bg.png 5KB
today_bg.png 4KB
r_arrow_sel.png 5KB
right_selector.xml 456B
icon.png 3KB
week_bg.png 13KB
left_selector.xml 454B
today_bg_sel.png 4KB
today_selector.xml 516B
values
colors.xml 815B
strings.xml 389B
styles.xml 257B
drawable-mdpi
icon.png 3KB
anim
slide_right_out.xml 199B
slide_left_out.xml 200B
slide_right_in.xml 200B
slide_left_in.xml 201B
layout
calendar_main.xml 3KB
xml
assets
default.properties 362B
gen
com
easier
ui
R.java 4KB
EasierDiary.iml 2KB
proguard.cfg 1KB
.settings
org.eclipse.core.resources.prefs 88B
src
com
easier
ui
CalendarView.java 14KB
adapter
CalendarGridView.java 2KB
CalendarGridViewAdapter.java 7KB
util
CalendarUtil.java 8KB
NumberHelper.java 222B
.idea
uiDesigner.xml 9KB
scopes
scope_settings.xml 143B
misc.xml 1KB
vcs.xml 173B
.name 11B
copyright
profiles_settings.xml 115B
modules.xml 269B
encodings.xml 171B
compiler.xml 669B
workspace.xml 22KB
inspectionProfiles
ant.xml 170B
.project 845B
DiaryTest.iml 2KB
.classpath 280B
out
res-cache
DiaryTest
drawable-ldpi
icon.png 14KB
drawable-hdpi
l_arrow.png 763B
title_bg.png 19KB
r_arrow.png 711B
l_arrow_sel.png 2KB
wigdet_bg.png 2KB
bg.png 468B
today_bg.png 1010B
r_arrow_sel.png 2KB
icon.png 3KB
week_bg.png 11KB
today_bg_sel.png 2KB
drawable-mdpi
icon.png 3KB
AndroidManifest.xml 1KB
共 85 条
- 1
昕颖
- 粉丝: 108
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
前往页