package com.pwp.activity;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.pwp.borderText.BorderText;
import com.pwp.dao.ScheduleDAO;
import com.pwp.vo.ScheduleVO;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.app.DatePickerDialog.OnDateSetListener;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.Typeface;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.AttributeSet;
import android.util.Log;
import android.view.Display;
import android.view.GestureDetector;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import android.view.GestureDetector.OnGestureListener;
import android.view.View.OnTouchListener;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.DatePicker;
import android.widget.GridView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ViewFlipper;
import android.widget.AbsListView.LayoutParams;
import android.widget.AdapterView.OnItemClickListener;
/**
* 日历显示activity
* @author jack_peng
*
*/
public class CalendarActivity extends Activity implements OnGestureListener {
private ViewFlipper flipper = null;
private GestureDetector gestureDetector = null;
private CalendarView calV = null;
private GridView gridView = null;
private BorderText topText = null;
private Drawable draw = null;
private static int jumpMonth = 0; //每次滑动,增加或减去一个月,默认为0(即显示当前月)
private static int jumpYear = 0; //滑动跨越一年,则增加或者减去一年,默认为0(即当前年)
private int year_c = 0;
private int month_c = 0;
private int day_c = 0;
private String currentDate = "";
private ScheduleDAO dao = null;
public CalendarActivity() {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-M-d");
currentDate = sdf.format(date); //当期日期
year_c = Integer.parseInt(currentDate.split("-")[0]);
month_c = Integer.parseInt(currentDate.split("-")[1]);
day_c = Integer.parseInt(currentDate.split("-")[2]);
dao = new ScheduleDAO(this);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
gestureDetector = new GestureDetector(this);
flipper = (ViewFlipper) findViewById(R.id.flipper);
flipper.removeAllViews();
calV = new CalendarView(this, getResources(),jumpMonth,jumpYear,year_c,month_c,day_c);
addGridView();
gridView.setAdapter(calV);
//flipper.addView(gridView);
flipper.addView(gridView,0);
topText = (BorderText) findViewById(R.id.toptext);
addTextToTopTextView(topText);
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
int gvFlag = 0; //每次添加gridview到viewflipper中时给的标记
if (e1.getX() - e2.getX() > 120) {
//像左滑动
addGridView(); //添加一个gridView
jumpMonth++; //下一个月
calV = new CalendarView(this, getResources(),jumpMonth,jumpYear,year_c,month_c,day_c);
gridView.setAdapter(calV);
//flipper.addView(gridView);
addTextToTopTextView(topText);
gvFlag++;
flipper.addView(gridView, gvFlag);
this.flipper.setInAnimation(AnimationUtils.loadAnimation(this,R.anim.push_left_in));
this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this,R.anim.push_left_out));
this.flipper.showNext();
flipper.removeViewAt(0);
return true;
} else if (e1.getX() - e2.getX() < -120) {
//向右滑动
addGridView(); //添加一个gridView
jumpMonth--; //上一个月
calV = new CalendarView(this, getResources(),jumpMonth,jumpYear,year_c,month_c,day_c);
gridView.setAdapter(calV);
gvFlag++;
addTextToTopTextView(topText);
//flipper.addView(gridView);
flipper.addView(gridView,gvFlag);
this.flipper.setInAnimation(AnimationUtils.loadAnimation(this,R.anim.push_right_in));
this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this,R.anim.push_right_out));
this.flipper.showPrevious();
flipper.removeViewAt(0);
return true;
}
return false;
}
/**
* 创建菜单
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, menu.FIRST, menu.FIRST, "今天");
menu.add(0, menu.FIRST+1, menu.FIRST+1, "跳转");
menu.add(0, menu.FIRST+2, menu.FIRST+2, "日程");
menu.add(0, menu.FIRST+3, menu.FIRST+3, "日期转换");
return super.onCreateOptionsMenu(menu);
}
/**
* 选择菜单
*/
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
switch (item.getItemId()){
case Menu.FIRST:
//跳转到今天
int xMonth = jumpMonth;
int xYear = jumpYear;
int gvFlag =0;
jumpMonth = 0;
jumpYear = 0;
addGridView(); //添加一个gridView
year_c = Integer.parseInt(currentDate.split("-")[0]);
month_c = Integer.parseInt(currentDate.split("-")[1]);
day_c = Integer.parseInt(currentDate.split("-")[2]);
calV = new CalendarView(this, getResources(),jumpMonth,jumpYear,year_c,month_c,day_c);
gridView.setAdapter(calV);
addTextToTopTextView(topText);
gvFlag++;
flipper.addView(gridView,gvFlag);
if(xMonth == 0 && xYear == 0){
//nothing to do
}else if((xYear == 0 && xMonth >0) || xYear >0){
this.flipper.setInAnimation(AnimationUtils.loadAnimation(this,R.anim.push_left_in));
this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this,R.anim.push_left_out));
this.flipper.showNext();
}else{
this.flipper.setInAnimation(AnimationUtils.loadAnimation(this,R.anim.push_right_in));
this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this,R.anim.push_right_out));
this.flipper.showPrevious();
}
flipper.removeViewAt(0);
break;
case Menu.FIRST+1:
new DatePickerDialog(this, new OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
//1901-1-1 ----> 2049-12-31
if(year < 1901 || year > 2049){
//不在查询范围内
new AlertDialog.Builder(CalendarActivity.this).setTitle("错误日期").setMessage("跳转日期范围(1901/1/1-2049/12/31)").setPositiveButton("确认", null).show();
}else{
int gvFlag = 0;
addGridView(); //添加一个gridView
calV = new CalendarView(CalendarActivity.this, CalendarActivity.this.getResources(),year,monthOfYear+1,dayOfMonth);
gridView.setAdapter(calV);
addTextToTopTextView(topText);
gvFlag++;
flipper.addView(gridView,gvFlag);
if(year == year_c && monthOfYear+1 == month_c){
//nothing to do
}
if((year == year_c && monthOfYear+1 > month_c) || year > year_c ){
CalendarActivity.this.flipper.setInAnimation(AnimationUtils.loadAnimation(CalendarActivity.this,R.anim.push_left_in));
CalendarActivity.this.flipper.setOutAnimation(AnimationUtils.loadAnimation(CalendarActivity.this,R.anim.push_left_out));
CalendarActivity.this.flipper.showNext();
}else{
CalendarActivity.this.flipper.setInAnimation(AnimationUtils.loadAnimation(CalendarActivity.this,R.anim.push_right_in));
CalendarActivity.this.flipper.setOutAnimation(AnimationUtils.loadAnimation(CalendarActivity.this,R.anim.push_right_out));
CalendarActivity.t
Android应用源码之安卓PWP简洁大日历.zip


2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
【Android应用源码之安卓PWP简洁大日历】 在Android开发中,日历应用是常见且实用的应用类型,它帮助用户管理时间、安排事件。本篇将详细探讨基于Android平台的PWP(Pretty Wonderful Planner)简洁大日历应用的源码分析,这将为Android开发者提供一个学习和参考的日历应用实现案例。 PWP简洁大日历应用是一款设计简洁、功能实用的日历应用,它的主要特点包括直观的用户界面、强大的事件管理以及良好的可定制性。源码分析将涵盖以下几个关键知识点: 1. **UI设计**:Android应用的用户界面通常由布局文件定义,PWP日历可能使用了LinearLayout、RelativeLayout或ConstraintLayout等布局管理器,结合ImageView、TextView和RecyclerView等组件来构建。开发者可以通过XML布局文件理解界面元素的组织方式和交互逻辑。 2. **数据存储**:日历事件的管理需要持久化数据,Android提供了SQLite数据库作为本地数据存储的解决方案。源码中可能会包含SQLiteOpenHelper的子类,用于创建和操作数据库,以及ContentProvider用于数据的共享和访问。 3. **时间与日期处理**:在日历应用中,对日期和时间的操作是核心功能。Android提供了java.time包,可以处理日期、时间、时区等。开发者可能使用这些API来计算日期间隔、比较日期、格式化显示等。 4. **事件同步**:为了实现与系统日历的同步,应用可能使用CalendarContract类,通过ContentResolver进行数据的读写操作。这使得用户可以在系统日历和其他应用之间无缝切换并查看相同的事件。 5. **通知与提醒**:为了提醒用户即将发生的事件,应用可能使用AlarmManager和NotificationManager服务。AlarmManager设置定时任务,而NotificationManager则负责在状态栏显示提醒。 6. **权限管理**:Android 6.0及以上版本引入了运行时权限,应用可能需要请求READ_CALENDAR和WRITE_CALENDAR权限来访问和修改用户的日历数据。 7. **Material Design**:PWP日历可能遵循了Google的Material Design设计指南,使用Material Components库来实现现代且一致的用户界面,如使用Cards、FAB等组件。 8. **多线程和异步处理**:日历应用可能涉及到大量的IO操作,因此需要在后台线程执行,以避免阻塞主线程。Android的AsyncTask或者使用现代的Kotlin协程库是常见的解决方案。 9. **适配器和RecyclerView**:在展示多条日历事件时,RecyclerView是一个高效的选择,结合自定义的Adapter,可以实现列表的滚动和事件的动态加载。 10. **版本兼容性**:考虑到Android设备的碎片化,开发者可能使用Support Library或AndroidX库来确保应用能在不同版本的Android系统上运行。 通过对PWP简洁大日历的源码学习,开发者可以深入了解Android日历应用的实现细节,提升自己的编程技能,并为创建自己的日历应用奠定基础。同时,这也是实践Android开发规范和最佳实践的好机会,有助于提高代码质量和用户体验。


















































































































- 1
- 2
- 3

- #完美解决问题
- #运行顺畅
- #内容详尽
- #全网独家
- #注释完整

- 粉丝: 2982
- 资源: 7735





我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 深度学习算法助力解决图像处理难题:halcon与C#联手继电器零件精准识别与分类源码分享,基于深度学习技术的继电器零件分类识别方法-结合halcon图像处理与GPU加速实现案例解析,C#联合halc
- zorin-os-7-core-32+64.zip
- 基于SVPWM改进的直接转矩控制策略优化永磁同步电机性能,降低转矩脉动与采样率,仿真效果佳,附参考文献,适合自学与提升,基于SVPWM改进的直接转矩控制策略优化永磁同步电机性能,解决转矩脉动与采样率问
- 海康相机条形码识别与缺陷检测:C#结合Halcon技术实现高效停机报告,海康相机C#集成Halcon条形码识别与缺陷检测源代码解析,C#联合halcon条形码识别源代码 缺陷检测 飞拿 海康相机 海康
- 基于Qt5.14与OpenCV4.6.0的智能视觉软件平台:多线程支持,模块化设计,全面算法工具集,无技术支持,基于Qt5.14与OpenCV4.6.0的全方位通用视觉软件平台:多相机多线程管理,独立
- C#+WPF界面源码框架:运动控制路径算法大全,适用于多种机器视觉应用,快速入门指南,C#+WPF界面源码框架:运动控制路径算法大全,适用于多种机器视觉应用,初学者快速入门指南,C#+wpf界面源码框
- Xiaopan OS.zip
- 基于四轮独立驱动电动汽车的四电机模型侧偏刚度估计与CarSim真实值校验,结合S函数和CKF算法,基于四轮独立驱动电动汽车的四电机模型侧偏刚度估计-采用CarSim输出真实值与CKF算法实现s函数估
- 基于Maxwell和OptiSlang的永磁电机多目标优化与多物理场谐响应参数化建模及电磁振动噪声仿真研究,Maxwell Optislang驱动下的多目标永磁电机参数化建模与电磁振动噪声仿真:谐响应
- 光储直流微电网Simulink仿真模型:双向DC-DC变换器能量管理与MPPT控制策略应用,基于Simulink的光储直流微电网能量管理与双向变换器控制研究:独立光伏系统的MPPT优化与蓄电池充放电管
- Maxwell电机与Simplorer联合仿真教程:矢量控制SVPWM算法下的电磁场路耦合电路搭建与自定义电机模型替换指南,Maxwell电机与Simplorer联合仿真教程:矢量控制SVPWM电路搭
- RTD2513A/AR/RTD2522A/RTD2525A-LVDS-1080P-固件/驱动/升级程序下载
- RTD2513BR-RTD2525BA/BR-LVDS-1080P 固件/驱动/升级程序下载
- RTD2556VD-RTD2555T-eDP-1080P 固件/驱动/升级程序下载
- RTD2525BE-eDP-1080P-固件/驱动/升级程序下载
- RTD2555T-RTD2556VD-LVDS-1080P 固件/驱动/升级程序下载


