结对项目——MyBook功能

MyBook功能和界面
MyBook是这个程序的主界面,这个界面中有很多菜单向各个功能跳转。这里菜单可以实现电子书的添加导入,删除,查看电子书列表的功能,还有退出提示功能。
功能代码

public class MyBook extends BaseActivity {
    private BookManager bookManager;
    private ArrayList<Book> books;
    private GridView bookShelf;
    private ProgressDialog dialog;

    private int selectedIndex = -1;

    public static int width, height;

    public static Bitmap itemBackground;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.my_book);
        Display defaultDisplay = getWindowManager().getDefaultDisplay();
        width = defaultDisplay.getWidth();
        height = defaultDisplay.getHeight();
        itemBackground = ImageUtil.getBitmap(this, R.drawable.cover_txt, width / 4, height / 4);

        System.out.println("MyBook width:" + MyBook.width);
        System.out.println("MyBook height:" + MyBook.height);

        bookManager = new BookManager(this);
        bookShelf = (GridView) findViewById(R.id.bookShelf);
        
        loadData();

        
        bookShelf.setOnItemClickListener(new OnItemClickListener() {
            
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                selectedIndex = position;
                readBook();
            }
        });
        
        bookShelf.setOnItemLongClickListener(new OnItemLongClickListener() {
            
            public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
                selectedIndex = position;
                return false;
            }
        });
        
        registerForContextMenu(bookShelf);
    }

    // 阅读
    private void readBook() {
        dialog = ProgressDialog.show(MyBook.this, "温馨提示", "正在加载文件", true);
        Book book = books.get(selectedIndex);
        File file = new File(book.getFilePath());
        if (!file.exists()) {// 文件不存在
            ToastUtils.toast(this, "文件不存在");
            dialog.dismiss();
            return;
        }
        Long id = book.getId();
        Intent intent = new Intent(this, ReadBook.class);
        intent.putExtra("bookId", id);
        dialog.dismiss();
        startActivity(intent);
    }

    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = new MenuInflater(this);
        inflater.inflate(R.menu.my_book, menu);
        return super.onCreateOptionsMenu(menu);
    }

    // 菜单的点击事件
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.menu_importbook:
            Intent intent = new Intent(this, ImportBook.class);
            startActivityForResult(intent, REQUEST_CODE_IMPORT_BOOK);
            break;
        case R.id.menu_help:
            //跳转到viewpager页面
            Intent intent1 = new Intent(MyBook.this, ViewPagerActivity.class);
            startActivity(intent1);
            break;
        case R.id.menu_setting:
            //跳转到设置页面
            Intent intent2 = new Intent(MyBook.this, SettingActivity.class);
            startActivity(intent2);
            break;
        }
        return super.onOptionsItemSelected(item);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        
        if (resultCode == RESULT_OK && requestCode == REQUEST_CODE_IMPORT_BOOK) {
            loadData();
            ToastUtils.toast(this, "添加图书成功");
        }
    }

    // 加载数据到ListView
    private void loadData() {
        books = bookManager.getAll();
        Log.d(TAG, "books.size:" + books.size());
        ShlefAdapter adapter = new ShlefAdapter();
        bookShelf.setAdapter(adapter);
    }

    class ShlefAdapter extends BaseAdapter {

        
        public int getCount() {
            return books.size();
        }

        
        public Book getItem(int position) {
            return books.get(position);
        }

        
        public long getItemId(int position) {
            return getItem(position).getId();
        }

        
        public View getView(int position, View contentView, ViewGroup arg2) {
            Book book = getItem(position);
            contentView = LayoutInflater.from(getApplicationContext()).inflate(R.layout.my_book_item, null);
            TextView view = (TextView) contentView.findViewById(R.id.bookName);
            view.setText(book.getName());
            BitmapDrawable bitmapDrawable = new BitmapDrawable(itemBackground);
            view.setBackgroundDrawable(bitmapDrawable);
            return contentView;
        }

    }

    // 创建上下文菜单
    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
        menu.setHeaderTitle("上下文菜单");
        MenuInflater inflater = new MenuInflater(this);
        inflater.inflate(R.menu.menu_book, menu);
        super.onCreateContextMenu(menu, v, menuInfo);
    }

    // 上下文菜单的点击事件
    @Override
    public boolean onContextItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.read:
            readBook();
            break;
        case R.id.update:
            
            Long id = books.get(selectedIndex).getId();
            Intent intent = new Intent(this, BookFormActivity.class);
            intent.putExtra("bookId", id);
            startActivityForResult(intent, BOOK_UPDATE);
            break;
        case R.id.delete:
            Long id1 = books.get(selectedIndex).getId();
            bookManager.delete(id1);
            ToastUtils.toast(this, R.string.msg_delete_success);
            loadData();
            break;
        default:
            break;
        }
        return super.onContextItemSelected(item);
    }

    // 改变主页面的返回事件
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
            dialog();
            return false;
        }
        return false;
    }

    private void dialog() {
        AlertDialog.Builder builder = new Builder(this);
        builder.setMessage("确定要退出吗?");
        builder.setTitle("温馨提示");
        builder.setPositiveButton("确认", new android.content.DialogInterface.OnClickListener() {
            
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
                MyBook.this.finish();
                // 返回home
                Intent intent = new Intent();
                intent.setAction(Intent.ACTION_MAIN);
                intent.addCategory(Intent.CATEGORY_HOME);
                startActivity(intent);
            }
        });
        builder.setNegativeButton("取消", new android.content.DialogInterface.OnClickListener() {
            
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
            }
        });
        builder.create().show();
    }
}

界面
1119693-20170612110710759-68008412.png

转载于:https://www.cnblogs.com/lw0607/p/6991836.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值