public class MainActivity extends BaseActivity implements AdapterView.OnItemClickListener, AdapterView.OnItemLongClickListener {
private Toolbar myToolbar;
private FloatingActionButton fab;
private NoteDatabase dbHelper;
private Context context = this;
private ListView lv;
private NoteAdapter adapter;
private List<Note> noteList = new ArrayList<>();
private Menu menu;
private final String TAG = "main";
//弹出菜单
private PopupWindow popupWindow;
private PopupWindow popupCover;//菜单蒙版
private ViewGroup customView;
private ViewGroup coverView;
private RelativeLayout main;
private LayoutInflater layoutInflater;
private WindowManager wm;
private DisplayMetrics metrics;
private TextView setting_text;
private ImageView setting_image;
// private BroadcastReceiver myReceiver;
private SharedPreferences sharedPreferences;
private TextView mEmptyView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myToolbar = findViewById(R.id.main_toolbar);
setSupportActionBar(myToolbar);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);//设置自定义状态栏
initView();
if (super.isNightMode()) {
myToolbar.setNavigationIcon(getDrawable(R.drawable.ic_baseline_menu__white_24));
} else {
myToolbar.setNavigationIcon(getDrawable(R.drawable.ic_menu_black_24));
}//三道杠
myToolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showPopUpView();
}
});
}
//设置popup window
public void initPopUpView() {
layoutInflater = (LayoutInflater) MainActivity.this.getSystemService(LAYOUT_INFLATER_SERVICE);
customView = (ViewGroup) layoutInflater.inflate(R.layout.setting_layout, null);
coverView = (ViewGroup) layoutInflater.inflate(R.layout.setting_cover, null);
main = findViewById(R.id.main_layout);
wm = getWindowManager();
metrics = new DisplayMetrics();
wm.getDefaultDisplay().getMetrics(metrics);
}
//display the popup window
public void showPopUpView() {
int width = metrics.widthPixels;
int height = metrics.heightPixels;
popupCover = new PopupWindow(coverView, width, height, true);
popupWindow = new PopupWindow(customView, (int) (width * 0.7), height, true);
if (isNightMode()) popupWindow.setBackgroundDrawable(new ColorDrawable(Color.LTGRAY));
popupWindow.setBackgroundDrawable(new ColorDrawable(Color.WHITE));
findViewById(R.id.main_layout).post(new Runnable() {//在主界面加载成功之后显示弹出
@Override
public void run() {
popupCover.showAtLocation(main, Gravity.NO_GRAVITY, 0, 0);
popupWindow.showAtLocation(main, Gravity.NO_GRAVITY, 0, 0);
setting_image = customView.findViewById(R.id.setting_settings_image);
setting_text = customView.findViewById(R.id.setting_settings_text);
//点击设置图标
setting_image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(MainActivity.this, UserSettingsActivity.class));
}
});
//点击设置词组
setting_text.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(MainActivity.this, UserSettingsActivity.class));
}
});
//设置触摸监听
coverView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
popupWindow.dismiss();
return false;
}
});
//设置监听事件取消
popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
@Override
public void onDismiss() {
popupCover.dismiss();
}
});
}
});
}
@Override
public void onActivityResult(int requestcode, int resultcode, Intent data) {
int returnMode;//判断是否修改等
long note_id;
returnMode = data.getExtras().getInt("mode", -1);
note_id = data.getExtras().getLong("id", 0);
Log.d("main", "onActivityResult.returnMode=" + returnMode);
if (returnMode == 1) {//未修改
String content = data.getExtras().getString("content");
String time = data.getExtras().getString("time");
int tag = data.getExtras().getInt("tag", 1);
Note newNote = new Note(content, time, tag);
newNote.setId(note_id);
DBhelper op = new DBhelper(context);
op.open();
op.updateNote(newNote);
op.close();
} else if (returnMode == 0) {//创建一个新笔记
String content = data.getExtras().getString("content");
String time = data.getExtras().getString("time");
int tag = data.getExtras().getInt("tag", 1);
Note newNote = new Note(content, time, tag);
DBhelper op = new DBhelper(context);
op.open();
op.addNote(newNote);
op.close();
} else if (returnMode == 2) {//删除
Note curNote = new Note();
curNote.setId(note_id);
DBhelper op = new DBhelper(context);
op.open();
op.removeNote(curNote);
op.close();
} else {
}
refreshListView();//刷新列表
super.onActivityResult(requestcode, resultcode, data);
Log.d("main", "end");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main_menu, menu);
//设置搜索框
MenuItem mSearch = menu.findItem(R.id.menu_search);
SearchView mSearchView = (SearchView) mSearch.getActionView();
mSearchView.setQueryHint("Search");
mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
//提交按钮点击事件
return false;
}
@Override
public boolean onQueryTextChange(String newText) {//输入框内容改变时回调
adapter.getFilter().filter(newText);
return false;
}
});
final int mode = 1;
final String itemName = "notes";
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_clear:
new AlertDialog.Builder(MainActivity.this)
.setMessage("删除全部吗")
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dbHelper = new NoteDatabase(context);
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.delete("notes", null, null);
refreshListView();
}
}).setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}).create().show();
break;
case R.id.refresh:
myToolbar.setTitle("All Notes");
lv.setAdapter(adapter);
break;
}
return super.onOptionsItemSelected(item);
}
private void initPrefs() {
//initialize all useful SharedPreferences for the first time the app runs
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
SharedPreferences.Editor editor = sharedPreferences.edit();
if (!sharedPreferences.contains("nightMode")) {
editor.putBoolean("nightMode", false);
editor.commit();
}
// if (!sharedPreferences.contains("tagListString")) {
// String s = "no tag_life_study_work_play";
// editor.putString("tagListString", s);
// editor.commit();
// }
}
public void initView() {
initPrefs();
fab = findViewById(R.id.fab);
lv = findViewById(R.id.lv);
mEmptyView = findViewById(R.id.emptyView); // search page
adapter = new NoteAdapter(getApplicationContext(), noteList);
refreshListView();
lv.setAdapter(adapter);
lv.setEmptyView(mEmptyView); // connect empty textview with listview
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, EditActivity.class);
intent.putExtra("mode", 4); // MODE of 'new note'
startActivityForResult(intent, 1); //collect data from edit
}
});
lv.setOnItemClickListener(this);
lv.setOnItemLongClickListener(this);
setSupportActionBar(myToolbar);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true); //设置toolbar取代actionbar
initPopUpView();
}
public void refreshListView() {//更新
Log.d("main", "refresh");
DBhelper op = new DBhelper(context);
op.open();
Log.d("main", String.valueOf(noteList.size()));
if (noteList.size() > 0) noteList.clear();
noteList.addAll(op.getAllNotes());
op.close();
adapter.notifyDataSetChanged();
Log.d("main", "refresh");
}
//列表点击
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
switch (parent.getId()) {
case R.id.lv:
Note curNote = (Note) parent.getItemAtPosition(position);
Intent intent = new Intent(MainActivity.this, EditActivity.class);
intent.putExtra("content", curNote.getContent());
intent.putExtra("id", curNote.getId());
intent.putExtra("time", curNote.getTime());
intent.putExtra("mode", 3);//mode==3 note已经存在
intent.putExtra("tag", curNote.getTag());
startActivityForResult(intent, 1);
break;
}
}
@Override
public void needRefresh() {
setNightMode();
Intent intent = new Intent(this, MainActivity.class);
intent.putExtra("opMode", 10);
startActivity(intent);
if (popupWindow.isShowing()) popupWindow.dismiss();
finish();
}//刷新界面重启本页面
@Override
protected void onDestroy() {
super.onDestroy();
if (popupWindow != null && popupWindow.isShowing()) {
popupWindow.dismiss();
popupWindow = null;
}
if (popupCover != null && popupCover.isShowing()) {
popupCover.dismiss();
popupCover = null;
}
}
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
switch (parent.getId()) {
case R.id.lv:
final Note note = noteList.get(position);
new AlertDialog.Builder(MainActivity.this)
.setMessage("Do you want to delete this note ?")
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
DBhelper op = new DBhelper(context);
op.open();
op.removeNote(note);
op.close();
refreshListView();
}
}).setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}).create().show();
break;
}
return true;
}
}
popupView等
最新推荐文章于 2024-08-15 09:11:03 发布