基本信息
源码名称:android 日历app源码(附带时钟功能)
源码大小:43.18M
文件格式:.zip
开发语言:Java
更新时间:2019-06-15
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 5 元×
微信扫码支付:5 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
安卓日历,可直接运行,可添加日程,可调整日历,附带安卓时钟功能
安卓日历,可直接运行,可添加日程,可调整日历,附带安卓时钟功能
package com.example.administrator.scheduleplanning; import android.content.Context; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.support.annotation.Nullable; import android.support.design.widget.CoordinatorLayout; import android.support.design.widget.FloatingActionButton; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; import android.view.WindowManager; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; import com.example.administrator.scheduleplanning.adapter.CalendarViewAdapter; import com.example.administrator.scheduleplanning.adapter.DataAdapter; import com.example.administrator.scheduleplanning.adapter.MyRecyclerViewAdapter; import com.example.administrator.scheduleplanning.adapter.ViewAdapter; import com.example.administrator.scheduleplanning.composition.CalAttrComp; import com.example.administrator.scheduleplanning.dao.MyDatabaseHelper; import com.example.administrator.scheduleplanning.spinterface.DateInterface; import com.example.administrator.scheduleplanning.state.CalendarState; import com.example.administrator.scheduleplanning.view.CalendarView; import com.example.administrator.scheduleplanning.view.CustomDayView; import com.example.administrator.scheduleplanning.view.MonthView; import com.example.administrator.scheduleplanning.view.ThemeDayView; import java.util.ArrayList; import java.util.HashMap; import java.util.List; public class MainActivity extends AppCompatActivity { TextView tvYear; TextView tvMonth; TextView backToday; CoordinatorLayout content; MonthView monthPager; RecyclerView rvToDoList; FloatingActionButton btn_add,btn_jumptoclock; TextView scrollSwitch; //TextView themeSwitch; TextView nextMonthBtn; TextView lastMonthBtn; //Button btn_jump_clock; private ArrayList<CalendarView> currentCalendars = new ArrayList<>(); //private List<DataAdapter> schemeList = new ArrayList<>(); private CalendarViewAdapter calendarAdapter; private DateInterface onSelectDateListener; private int mCurrentPage = MonthView.CURRENT_DAY_INDEX; private Context context; private CalendarState currentDate; private MyDatabaseHelper dbHelper; private String keyName; private boolean initiated = false; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); context = this; content = (CoordinatorLayout) findViewById(R.id.content); monthPager = (MonthView) findViewById(R.id.calendar_view); //setViewHeight日历牌的高度 monthPager.setViewHeight(Assist.dpi2px(context, 270)); tvYear = (TextView) findViewById(R.id.show_year_view); tvMonth = (TextView) findViewById(R.id.show_month_view); backToday = (TextView) findViewById(R.id.back_today_button); scrollSwitch = (TextView) findViewById(R.id.scroll_switch); //themeSwitch = (TextView) findViewById(R.id.theme_switch); nextMonthBtn = (TextView) findViewById(R.id.next_month); lastMonthBtn = (TextView) findViewById(R.id.last_month); rvToDoList = (RecyclerView) findViewById(R.id.list); rvToDoList.setHasFixedSize(true); //线性显示 类似listview rvToDoList.setLayoutManager(new LinearLayoutManager(this)); rvToDoList.setAdapter(new ViewAdapter(this)); initCurrentDate(); initCalendarView(); initToolbarClickListener(); //clock跳转 // btn_jump_clock = (Button)findViewById(R.id.btn_jump_clock); // btn_jump_clock.setOnClickListener(new View.OnClickListener() { // @Override // public void onClick(View v) { // Intent intent = new Intent(); // intent.setClass(MainActivity.this,ClockMainActivity.class); // startActivity(intent); // } // }); //floatingactionbutton的使用 btn_add = (FloatingActionButton)findViewById(R.id.btn_add); addClickListener(); //clock跳转 btn_jumptoclock = (FloatingActionButton)findViewById(R.id.btn_jumptoclock); jumpToClockListener(); //实现全屏 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); //RecyclerView的item点击效果实现 initView(); initData(); rvRecycleView.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false)); //控制布局为LinearLayout或者是GridView或者是瀑布流布局 //adapter = new MyRecyclerViewAdapter(list,this); //rvRecycleView.setAdapter(adapter); // 设置item及item中控件的点击事件 adapter.setOnItemClickListener(MyItemClickListener); } /** * onWindowFocusChanged回调时,将当前月的种子日期修改为今天 * * @return void */ @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); if (hasFocus && !initiated) { refreshMonthPager(); initiated = true; } } /* * 如果你想以周模式启动你的日历,请在onResume是调用 * Utils.scrollTo(content, rvToDoList, monthPager.getCellHeight(), 200); * calendarAdapter.switchToWeek(monthPager.getRowIndex()); * */ @Override protected void onResume() { super.onResume(); } /** * 初始化对应功能的listener * * @return void */ private void initToolbarClickListener() { backToday.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { onClickBackToDayBtn(); } }); scrollSwitch.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (calendarAdapter.getCalendarType() == CalAttrComp.CalendarType.WEEK) { Assist.scrollTo(content, rvToDoList, monthPager.getViewHeight(), 200); calendarAdapter.switchToMonth(); } else { Assist.scrollTo(content, rvToDoList, monthPager.getCellHeight(), 200); calendarAdapter.switchToWeek(monthPager.getRowIndex()); } } }); // themeSwitch.setOnClickListener(new View.OnClickListener() { // @Override // public void onClick(View view) { // refreshSelectBackground(); // } // }); nextMonthBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { monthPager.setCurrentItem(monthPager.getCurrentPosition() 1); } }); lastMonthBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { monthPager.setCurrentItem(monthPager.getCurrentPosition() - 1); } }); } /** * 初始化currentDate * * @return void */ private void initCurrentDate() { currentDate = new CalendarState(); tvYear.setText(currentDate.getYear() "年"); tvMonth.setText(currentDate.getMonth() ""); } /** * 初始化CustomDayView,并作为CalendarViewAdapter的参数传入 */ private void initCalendarView() { initListener(); CustomDayView customDayView = new CustomDayView(context, R.layout.custom_day); calendarAdapter = new CalendarViewAdapter( context, onSelectDateListener, CalAttrComp.WeekArrayType.Monday, customDayView); calendarAdapter.setOnCalendarTypeChangedListener(new CalendarViewAdapter.OnCalendarTypeChanged() { @Override public void onCalendarTypeChanged(CalAttrComp.CalendarType type) { rvToDoList.scrollToPosition(0); } }); initMarkData(); initMonthPager(); } /** * 初始化标记数据,HashMap的形式,可自定义 * 如果存在异步的话,在使用setMarkData之后调用 calendarAdapter.notifyDataChanged(); */ private void initMarkData() { HashMap<String, String> markData = new HashMap<>(); markData.put("2017-8-9", "1"); markData.put("2017-7-9", "0"); markData.put("2017-6-9", "1"); markData.put("2017-6-10", "0"); calendarAdapter.setMarkData(markData); } private void initListener() { onSelectDateListener = new DateInterface() { @Override public void onSelectDate(CalendarState date) { refreshClickDate(date); } @Override public void onSelectOtherMonth(int offset) { //偏移量 -1表示刷新成上一个月数据 , 1表示刷新成下一个月数据 monthPager.selectOtherMonth(offset); } }; } private void refreshClickDate(CalendarState date) { currentDate = date; tvYear.setText(date.getYear() "年"); tvMonth.setText(date.getMonth() ""); //try // try_yearget.setText(String.valueOf(date.getYear())); // tv_try_monthget.setText(String.valueOf(date.getDay())); messageOfClickDate(date); } /** * 初始化monthPager,MonthPager继承自ViewPager * * @return void */ private void initMonthPager() { monthPager.setAdapter(calendarAdapter); monthPager.setCurrentItem(MonthView.CURRENT_DAY_INDEX); monthPager.setPageTransformer(false, new ViewPager.PageTransformer() { @Override public void transformPage(View page, float position) { position = (float) Math.sqrt(1 - Math.abs(position)); page.setAlpha(position); } }); monthPager.addOnPageChangeListener(new MonthView.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { mCurrentPage = position; currentCalendars = calendarAdapter.getPagers(); if (currentCalendars.get(position % currentCalendars.size()) != null) { CalendarState date = currentCalendars.get(position % currentCalendars.size()).getSeedDate(); currentDate = date; tvYear.setText(date.getYear() "年"); tvMonth.setText(date.getMonth() ""); } } @Override public void onPageScrollStateChanged(int state) { } }); } public void onClickBackToDayBtn() { refreshMonthPager(); } private void refreshMonthPager() { CalendarState today = new CalendarState(); calendarAdapter.notifyDataChanged(today); tvYear.setText(today.getYear() "年"); tvMonth.setText(today.getMonth() ""); } private void refreshSelectBackground() { ThemeDayView themeDayView = new ThemeDayView(context, R.layout.custom_day_focus); calendarAdapter.setCustomDayRenderer(themeDayView); calendarAdapter.notifyDataSetChanged(); calendarAdapter.notifyDataChanged(new CalendarState()); } //RecyclerView部分 private RecyclerView rvRecycleView; private MyRecyclerViewAdapter adapter; private ArrayList<DataAdapter> list; private void initView() { rvRecycleView = (RecyclerView)findViewById(R.id.list); } private void initData() { list = new ArrayList<>(); //list.add(new DataAdapter("schemename","啦啦啦啦啦啦啦啦啦啦")); //可以用的数据库 String name,message; dbHelper = new MyDatabaseHelper(MainActivity.this,"SchemeListCreate.db",null,1){}; SQLiteDatabase db = dbHelper.getWritableDatabase(); Cursor cursor; cursor = db.query("SchemeList",null,null,null,null,null,null); if(cursor.moveToFirst()) { do{ name = cursor.getString(cursor.getColumnIndex("schemename")); message = cursor.getString(cursor.getColumnIndex("message")); DataAdapter myDataadapter = new DataAdapter(name,message); list.add(myDataadapter); }while (cursor.moveToNext()); } adapter = new MyRecyclerViewAdapter(list,this); rvRecycleView.setAdapter(adapter); } private MyRecyclerViewAdapter.OnItemClickListener MyItemClickListener = new MyRecyclerViewAdapter.OnItemClickListener() { @Override public void onItemClick(View v, int position) { // switch (v.getId()){ // default: // //Toast.makeText(MainActivity.this,"你点击了item按钮" (position 1),Toast.LENGTH_SHORT).show(); // Intent intent = new Intent(); // intent.setClass(MainActivity.this,SchemeShowActivity.class); // startActivity(intent); // break; // } Bundle bundle = new Bundle(); keyName = list.get(position).getUsername(); // bundle.putCharSequence("name",keyName); bundle.putString("name",keyName); Intent intent = new Intent(); intent.setClass(MainActivity.this,SchemeShowActivity.class); intent.putExtras(bundle); startActivityForResult(intent,1); //startActivity(intent); } @Override public void onItemLongClick(View v) { } }; private void addClickListener() { //添加按钮的动作 btn_add.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setClass(MainActivity.this,SchemeEditActivity.class); startActivity(intent); } }); } private void jumpToClockListener() { btn_jumptoclock.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setClass(MainActivity.this,ClockMainActivity.class); startActivity(intent); } }); } //点击日期并回调,从数据库调用对应时间的数据 private void messageOfClickDate(CalendarState date) { list = new ArrayList<>(); String syear,smonth,sday; syear = String.valueOf(date.getYear()); smonth = String.valueOf(date.getMonth()); sday = String.valueOf(date.getDay()); String name,message; dbHelper = new MyDatabaseHelper(MainActivity.this,"SchemeListCreate.db",null,1){}; SQLiteDatabase db = dbHelper.getWritableDatabase(); Cursor cursor; cursor = db.query("SchemeList",null,"startyear = ? and startmonth = ? and startday = ?",new String[]{syear,smonth,sday},null,null,null); if(cursor.moveToFirst()) { do { name = cursor.getString(cursor.getColumnIndex("schemename")); message = cursor.getString(cursor.getColumnIndex("message")); DataAdapter myDataadapter = new DataAdapter(name,message); list.add(myDataadapter); }while(cursor.moveToNext()); } adapter = new MyRecyclerViewAdapter(list,this); rvRecycleView.setAdapter(adapter); } }