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);
}
}