popupView等

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值