全屏时钟java_android 日历app源码(附带时钟功能)

这是一个Android应用的源码解析,主要涉及全屏时钟和日历功能。代码中使用了SQLite数据库来存储数据,实现了日历视图切换、日期选择监听、RecyclerView展示待办事项等功能。同时,应用支持从数据库获取特定日期的数据并展示。
摘要由CSDN通过智能技术生成

packagecom.example.administrator.scheduleplanning; importandroid.content.Context; importandroid.content.Intent; importandroid.database.Cursor; importandroid.database.sqlite.SQLiteDatabase; importandroid.support.annotation.Nullable; importandroid.support.design.widget.CoordinatorLayout; importandroid.support.design.widget.FloatingActionButton; importandroid.support.v4.view.ViewPager; importandroid.support.v7.app.AppCompatActivity; importandroid.os.Bundle; importandroid.support.v7.widget.LinearLayoutManager; importandroid.support.v7.widget.RecyclerView; importandroid.view.View; importandroid.view.WindowManager; importandroid.widget.Button; importandroid.widget.TextView; importandroid.widget.Toast; importcom.example.administrator.scheduleplanning.adapter.CalendarViewAdapter; importcom.example.administrator.scheduleplanning.adapter.DataAdapter; importcom.example.administrator.scheduleplanning.adapter.MyRecyclerViewAdapter; importcom.example.administrator.scheduleplanning.adapter.ViewAdapter; importcom.example.administrator.scheduleplanning.composition.CalAttrComp; importcom.example.administrator.scheduleplanning.dao.MyDatabaseHelper; importcom.example.administrator.scheduleplanning.spinterface.DateInterface; importcom.example.administrator.scheduleplanning.state.CalendarState; importcom.example.administrator.scheduleplanning.view.CalendarView; importcom.example.administrator.scheduleplanning.view.CustomDayView; importcom.example.administrator.scheduleplanning.view.MonthView; importcom.example.administrator.scheduleplanning.view.ThemeDayView; importjava.util.ArrayList; importjava.util.HashMap; importjava.util.List; public classMainActivity extendsAppCompatActivity {

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;privateArrayList currentCalendars = newArrayList<>(); //private List schemeList = new ArrayList<>();privateCalendarViewAdapter calendarAdapter; privateDateInterface onSelectDateListener; private intmCurrentPage = MonthView.CURRENT_DAY_INDEX; privateContext context; privateCalendarState currentDate; privateMyDatabaseHelper dbHelper; privateString keyName; private booleaninitiated = false;

@Override protected voidonCreate(@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); //线性显示 类似listviewrvToDoList.setLayoutManager(newLinearLayoutManager(this));

rvToDoList.setAdapter(newViewAdapter(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(newLinearLayoutManager(this,LinearLayoutManager.VERTICAL,false)); //控制布局为LinearLayout或者是GridView或者是瀑布流布局//adapter = new MyRecyclerViewAdapter(list,this);//rvRecycleView.setAdapter(adapter);// 设置item及item中控件的点击事件adapter.setOnItemClickListener(MyItemClickListener);

} /*** onWindowFocusChanged回调时,将当前月的种子日期修改为今天**@returnvoid*/@Override public voidonWindowFocusChanged(booleanhasFocus) { super.onWindowFocusChanged(hasFocus); if(hasFocus && !initiated) {

refreshMonthPager();

initiated = true;

}

} /** 如果你想以周模式启动你的日历,请在onResume是调用* Utils.scrollTo(content, rvToDoList, monthPager.getCellHeight(), 200);* calendarAdapter.switchToWeek(monthPager.getRowIndex());* */@Override protected voidonResume() { super.onResume();

} /*** 初始化对应功能的listener**@returnvoid*/private voidinitToolbarClickListener() {

backToday.setOnClickListener(newView.OnClickListener() {

@Override public voidonClick(View view) {

onClickBackToDayBtn();

}

});

scrollSwitch.setOnClickListener(newView.OnClickListener() {

@Override public voidonClick(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(newView.OnClickListener() {

@Override public voidonClick(View view) {

monthPager.setCurrentItem(monthPager.getCurrentPosition() 1);

}

});

lastMonthBtn.setOnClickListener(newView.OnClickListener() {

@Override public voidonClick(View view) {

monthPager.setCurrentItem(monthPager.getCurrentPosition() - 1);

}

});

} /*** 初始化currentDate**@returnvoid*/private voidinitCurrentDate() {

currentDate = newCalendarState();

tvYear.setText(currentDate.getYear() "年");

tvMonth.setText(currentDate.getMonth() "");

} /*** 初始化CustomDayView,并作为CalendarViewAdapter的参数传入*/private voidinitCalendarView() {

initListener();

CustomDayView customDayView = newCustomDayView(context, R.layout.custom_day);

calendarAdapter = newCalendarViewAdapter(

context,

onSelectDateListener,

CalAttrComp.WeekArrayType.Monday,

customDayView);

calendarAdapter.setOnCalendarTypeChangedListener(newCalendarViewAdapter.OnCalendarTypeChanged() {

@Override public voidonCalendarTypeChanged(CalAttrComp.CalendarType type) {

rvToDoList.scrollToPosition(0);

}

});

initMarkData();

initMonthPager();

} /*** 初始化标记数据,HashMap的形式,可自定义* 如果存在异步的话,在使用setMarkData之后调用 calendarAdapter.notifyDataChanged();*/private voidinitMarkData() {

HashMap markData = newHashMap<>();

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 voidinitListener() {

onSelectDateListener = newDateInterface() {

@Override public voidonSelectDate(CalendarState date) {

refreshClickDate(date);

}

@Override public voidonSelectOtherMonth(intoffset) { //偏移量 -1表示刷新成上一个月数据 , 1表示刷新成下一个月数据monthPager.selectOtherMonth(offset);

}

};

} private voidrefreshClickDate(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**@returnvoid*/private voidinitMonthPager() {

monthPager.setAdapter(calendarAdapter);

monthPager.setCurrentItem(MonthView.CURRENT_DAY_INDEX);

monthPager.setPageTransformer(false, newViewPager.PageTransformer() {

@Override public voidtransformPage(View page, floatposition) {

position = (float) Math.sqrt(1- Math.abs(position));

page.setAlpha(position);

}

});

monthPager.addOnPageChangeListener(newMonthView.OnPageChangeListener() {

@Override public voidonPageScrolled(intposition, floatpositionOffset, intpositionOffsetPixels) {

}

@Override public voidonPageSelected(intposition) {

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 voidonPageScrollStateChanged(intstate) {

}

});

} public voidonClickBackToDayBtn() {

refreshMonthPager();

} private voidrefreshMonthPager() {

CalendarState today = newCalendarState();

calendarAdapter.notifyDataChanged(today);

tvYear.setText(today.getYear() "年");

tvMonth.setText(today.getMonth() "");

} private voidrefreshSelectBackground() {

ThemeDayView themeDayView = newThemeDayView(context, R.layout.custom_day_focus);

calendarAdapter.setCustomDayRenderer(themeDayView);

calendarAdapter.notifyDataSetChanged();

calendarAdapter.notifyDataChanged(newCalendarState());

} //RecyclerView部分privateRecyclerView rvRecycleView; privateMyRecyclerViewAdapter adapter; privateArrayList list; private voidinitView()

{

rvRecycleView = (RecyclerView)findViewById(R.id.list);

} private voidinitData()

{

list = newArrayList<>(); //list.add(new DataAdapter("schemename","啦啦啦啦啦啦啦啦啦啦"));//可以用的数据库String name,message;

dbHelper = newMyDatabaseHelper(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 = newDataAdapter(name,message);

list.add(myDataadapter);

}while(cursor.moveToNext());

}

adapter = newMyRecyclerViewAdapter(list,this);

rvRecycleView.setAdapter(adapter);

} privateMyRecyclerViewAdapter.OnItemClickListener MyItemClickListener = newMyRecyclerViewAdapter.OnItemClickListener() {

@Override public voidonItemClick(View v, intposition) { // 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 = newBundle();

keyName = list.get(position).getUsername(); // bundle.putCharSequence("name",keyName);bundle.putString("name",keyName);

Intent intent = newIntent();

intent.setClass(MainActivity.this,SchemeShowActivity.class);

intent.putExtras(bundle);

startActivityForResult(intent,1); //startActivity(intent);}

@Override public voidonItemLongClick(View v) {

}

}; private voidaddClickListener()

{ //添加按钮的动作btn_add.setOnClickListener(newView.OnClickListener() {

@Override public voidonClick(View v) {

Intent intent = newIntent();

intent.setClass(MainActivity.this,SchemeEditActivity.class);

startActivity(intent);

}

});

} private voidjumpToClockListener()

{

btn_jumptoclock.setOnClickListener(newView.OnClickListener() {

@Override public voidonClick(View v) {

Intent intent = newIntent();

intent.setClass(MainActivity.this,ClockMainActivity.class);

startActivity(intent);

}

});

} //点击日期并回调,从数据库调用对应时间的数据private voidmessageOfClickDate(CalendarState date)

{

list = newArrayList<>();

String syear,smonth,sday;

syear = String.valueOf(date.getYear());

smonth = String.valueOf(date.getMonth());

sday = String.valueOf(date.getDay());

String name,message;

dbHelper = newMyDatabaseHelper(MainActivity.this,"SchemeListCreate.db",null,1){};

SQLiteDatabase db = dbHelper.getWritableDatabase();

Cursor cursor;

cursor = db.query("SchemeList",null,"startyear = ? and startmonth = ? and startday = ?",newString[]{syear,smonth,sday},null,null,null); if(cursor.moveToFirst())

{ do{

name = cursor.getString(cursor.getColumnIndex("schemename"));

message = cursor.getString(cursor.getColumnIndex("message"));

DataAdapter myDataadapter = newDataAdapter(name,message);

list.add(myDataadapter);

}while(cursor.moveToNext());

}

adapter = newMyRecyclerViewAdapter(list,this);

rvRecycleView.setAdapter(adapter);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值