├── .gitignore
├── .idea
├── codeStyles
│ └── Project.xml
├── gradle.xml
├── misc.xml
├── modules.xml
├── runConfigurations.xml
└── vcs.xml
├── README.md
├── README_en.md
├── app
├── .gitignore
├── build.gradle
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── copasso
│ │ └── cocobill
│ │ └── ExampleInstrumentedTest.java
│ ├── main
│ ├── AndroidManifest.xml
│ ├── java
│ │ └── com
│ │ │ └── copasso
│ │ │ └── cocobill
│ │ │ ├── MyApplication.java
│ │ │ ├── base
│ │ │ ├── BaseActivity.java
│ │ │ ├── BaseContract.java
│ │ │ ├── BaseFragment.java
│ │ │ ├── BaseMVPActivity.java
│ │ │ ├── BaseMVPFragment.java
│ │ │ ├── BaseObserver.java
│ │ │ ├── BaseService.java
│ │ │ └── RxPresenter.java
│ │ │ ├── common
│ │ │ └── Constants.java
│ │ │ ├── model
│ │ │ ├── bean
│ │ │ │ ├── BaseBean.java
│ │ │ │ ├── local
│ │ │ │ │ ├── BBill.java
│ │ │ │ │ ├── BPay.java
│ │ │ │ │ ├── BSort.java
│ │ │ │ │ ├── MonthAccountBean.java
│ │ │ │ │ ├── MonthChartBean.java
│ │ │ │ │ ├── MonthListBean.java
│ │ │ │ │ └── NoteBean.java
│ │ │ │ └── remote
│ │ │ │ │ ├── CoBill.java
│ │ │ │ │ └── MyUser.java
│ │ │ ├── event
│ │ │ │ └── SyncEvent.java
│ │ │ ├── gen
│ │ │ │ ├── BBillDao.java
│ │ │ │ ├── BPayDao.java
│ │ │ │ ├── BSortDao.java
│ │ │ │ ├── DaoMaster.java
│ │ │ │ └── DaoSession.java
│ │ │ └── repository
│ │ │ │ ├── BmobRepository.java
│ │ │ │ ├── DaoDbHelper.java
│ │ │ │ └── LocalRepository.java
│ │ │ ├── presenter
│ │ │ ├── BillNotePresenter.java
│ │ │ ├── BillPresenter.java
│ │ │ ├── LandPresenter.java
│ │ │ ├── MonthChartPresenter.java
│ │ │ ├── MonthListPresenter.java
│ │ │ ├── UserInfoPresenter.java
│ │ │ └── contract
│ │ │ │ ├── BillContract.java
│ │ │ │ ├── BillNoteContract.java
│ │ │ │ ├── LandContract.java
│ │ │ │ ├── MonthChartContract.java
│ │ │ │ ├── MonthListContract.java
│ │ │ │ └── UserInfoContract.java
│ │ │ ├── ui
│ │ │ ├── activity
│ │ │ │ ├── AboutActivity.java
│ │ │ │ ├── BillAddActivity.java
│ │ │ │ ├── BillSortActivity.java
│ │ │ │ ├── LandActivity.java
│ │ │ │ ├── MainActivity.java
│ │ │ │ ├── SettingActivity.java
│ │ │ │ └── UserInfoActivity.java
│ │ │ ├── adapter
│ │ │ │ ├── BillSortAdapter.java
│ │ │ │ ├── BookNoteAdapter.java
│ │ │ │ ├── MainFragmentPagerAdapter.java
│ │ │ │ ├── MonthAccountAdapter.java
│ │ │ │ ├── MonthListAdapter.java
│ │ │ │ └── binder
│ │ │ │ │ └── MonthChartBillViewBinder.java
│ │ │ └── fragment
│ │ │ │ ├── MonthChartFragment.java
│ │ │ │ └── MonthListFragment.java
│ │ │ ├── utils
│ │ │ ├── ActivityManagerUtils.java
│ │ │ ├── BillUtils.java
│ │ │ ├── DateUtils.java
│ │ │ ├── DimenUtils.java
│ │ │ ├── FormatUtils.java
│ │ │ ├── GlideCacheUtil.java
│ │ │ ├── HttpUtils.java
│ │ │ ├── ImageUtils.java
│ │ │ ├── OkHttpUtils.java
│ │ │ ├── PieChartUtils.java
│ │ │ ├── ProgressUtils.java
│ │ │ ├── RegexUtils.java
│ │ │ ├── SharedPUtils.java
│ │ │ ├── SnackbarUtils.java
│ │ │ ├── StringUtils.java
│ │ │ ├── ThemeManager.java
│ │ │ ├── ToastUtils.java
│ │ │ └── UiUtils.java
│ │ │ └── widget
│ │ │ ├── CircleImageView.java
│ │ │ ├── CommonItemLayout.java
│ │ │ ├── OwlView.java
│ │ │ ├── ScrollAwareBehavior.java
│ │ │ ├── SwipeMenuView.java
│ │ │ └── stickyheader
│ │ │ ├── StickyHeaderGridAdapter.java
│ │ │ └── StickyHeaderGridLayoutManager.java
│ └── res
│ │ ├── anim
│ │ ├── fab_in.xml
│ │ ├── fab_out.xml
│ │ ├── slide_in_left.xml
│ │ ├── slide_in_right.xml
│ │ ├── slide_out_left.xml
│ │ └── slide_out_right.xml
│ │ ├── drawable-v21
│ │ ├── ic_menu_camera.xml
│ │ ├── ic_menu_gallery.xml
│ │ ├── ic_menu_manage.xml
│ │ ├── ic_menu_send.xml
│ │ ├── ic_menu_share.xml
│ │ ├── ic_menu_slideshow.xml
│ │ ├── round_corner_bg.9.png
│ │ └── selector_edittext_bg.xml
│ │ ├── drawable-xhdpi
│ │ ├── icon_banner_point1.png
│ │ └── icon_banner_point2.png
│ │ ├── drawable
│ │ ├── bg_button_code_normal.xml
│ │ ├── bg_button_default.xml
│ │ ├── bg_button_default_normal.xml
│ │ ├── bg_button_default_pressed.xml
│ │ ├── bg_click.xml
│ │ ├── bg_radius_click.xml
│ │ ├── card.xml
│ │ ├── rb_main_first_selector.xml
│ │ ├── rb_main_four_selector.xml
│ │ ├── rb_main_second_selector.xml
│ │ ├── rb_main_third_selector.xml
│ │ ├── shape_tb_calc.xml
│ │ ├── shape_tb_cash.xml
│ │ ├── side_nav_bar.xml
│ │ ├── tabbar_text_color.xml
│ │ ├── tb_income_selector.xml
│ │ ├── tb_outcome_selector.xml
│ │ ├── tb_text_selector.xml
│ │ └── toast_radius.xml
│ │ ├── layout
│ │ ├── activity_add.xml
│ │ ├── activity_base_list.xml
│ │ ├── activity_main.xml
│ │ ├── activity_setting.xml
│ │ ├── activity_user_info.xml
│ │ ├── activity_user_land.xml
│ │ ├── app_main.xml
│ │ ├── app_toolbar.xml
│ │ ├── app_top_date.xml
│ │ ├── dialog_change_password.xml
│ │ ├── drawer_header.xml
│ │ ├── fragment_month_chart.xml
│ │ ├── fragment_month_list.xml
│ │ ├── item_recycler_monthchart_rank.xml
│ │ ├── item_recycler_monthlist_header.xml
│ │ ├── item_recycler_monthlist_item.xml
│ │ ├── item_recycler_note_sort.xml
│ │ ├── item_tb_type.xml
│ │ ├── item_tb_type_page.xml
│ │ └── view_common_layout.xml
│ │ ├── menu
│ │ ├── activity_main_drawer.xml
│ │ └── menu_main_toolbar.xml
│ │ ├── mipmap-hdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-mdpi
│ │ ├── edittext_bg_focused.9.png
│ │ ├── edittext_bg_normal.9.png
│ │ ├── ic_def_icon.png
│ │ ├── ic_default_icon.png
│ │ ├── ic_drag.png
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_round.png
│ │ ├── owl_login.png
│ │ ├── owl_login_arm_left.png
│ │ ├── owl_login_arm_right.png
│ │ ├── sort_bangong.png
│ │ ├── sort_canyin.png
│ │ ├── sort_chongwu.png
│ │ ├── sort_fanxian.png
│ │ ├── sort_gouwu.png
│ │ ├── sort_haizi.png
│ │ ├── sort_huankuan.png
│ │ ├── sort_jiangjin.png
│ │ ├── sort_jianzhi.png
│ │ ├── sort_jiaotong.png
│ │ ├── sort_jiushui.png
│ │ ├── sort_juanzeng.png
│ │ ├── sort_jujia.png
│ │ ├── sort_lijin.png
│ │ ├── sort_lingqian.png
│ │ ├── sort_lingshi.png
│ │ ├── sort_liwu.png
│ │ ├── sort_lixi.png
│ │ ├── sort_lvxing.png
│ │ ├── sort_meirong.png
│ │ ├── sort_shouxufei.png
│ │ ├── sort_shuiguo.png
│ │ ├── sort_shuma.png
│ │ ├── sort_tianjia.png
│ │ ├── sort_tianjiade.png
│ │ ├── sort_tongxun.png
│ │ ├── sort_weixiu.png
│ │ ├── sort_weiyuejin.png
│ │ ├── sort_xuexi.png
│ │ ├── sort_yiban.png
│ │ ├── sort_yiliao.png
│ │ ├── sort_yongjin.png
│ │ ├── sort_yule.png
│ │ ├── sort_yundong.png
│ │ ├── sort_zhangbei.png
│ │ └── sort_zhufang.png
│ │ ├── mipmap-xhdpi
│ │ ├── arrow_right.png
│ │ ├── avatar_zhouas666.png
│ │ ├── card_account.png
│ │ ├── card_bank.png
│ │ ├── card_cash.png
│ │ ├── ic_back.png
│ │ ├── ic_color_lens_black_24dp.png
│ │ ├── ic_drawer_about.png
│ │ ├── ic_drawer_assignment_grey600_36dp.png
│ │ ├── ic_drawer_chat.png
│ │ ├── ic_drawer_exit.png
│ │ ├── ic_drawer_friends.png
│ │ ├── ic_drawer_guide.png
│ │ ├── ic_drawer_settings.png
│ │ ├── ic_drawer_share.png
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_round.png
│ │ ├── ic_tb_calc_del.png
│ │ ├── ic_tb_note_delete.png
│ │ ├── ic_tb_note_remark.png
│ │ ├── ic_toolbar_date.png
│ │ ├── tabbar_icon1_0.png
│ │ ├── tabbar_icon1_1.png
│ │ ├── tabbar_icon2_0.png
│ │ ├── tabbar_icon2_1.png
│ │ ├── tabbar_icon3_0.png
│ │ ├── tabbar_icon3_1.png
│ │ ├── tabbar_icon4_0.png
│ │ ├── tabbar_icon4_1.png
│ │ ├── tally_pie_center.png
│ │ ├── tallybook_down.png
│ │ ├── tallybook_input.png
│ │ ├── tallybook_manager.png
│ │ ├── tallybook_note.png
│ │ ├── tallybook_other.png
│ │ ├── tallybook_output.png
│ │ ├── type_bangong.png
│ │ ├── type_canyin.png
│ │ ├── type_changhuanfeiyong.png
│ │ ├── type_chongwu.png
│ │ ├── type_ewaishouyi.png
│ │ ├── type_fanxian.png
│ │ ├── type_fuzhuang.png
│ │ ├── type_haizi.png
│ │ ├── type_jianzhi.png
│ │ ├── type_jiaotong.png
│ │ ├── type_jiaxi.png
│ │ ├── type_jiushuiyinliao.png
│ │ ├── type_juanzeng.png
│ │ ├── type_jujia.png
│ │ ├── type_lijin.png
│ │ ├── type_lingshi.png
│ │ ├── type_liwu.png
│ │ ├── type_lixi.png
│ │ ├── type_lvxing.png
│ │ ├── type_meirong.png
│ │ ├── type_qita.png
│ │ ├── type_shangchengxiaofei.png
│ │ ├── type_shouxufei.png
│ │ ├── type_shuiguo.png
│ │ ├── type_shuma.png
│ │ ├── type_tianjiade.png
│ │ ├── type_tongxun.png
│ │ ├── type_weixiu.png
│ │ ├── type_weiyuejin.png
│ │ ├── type_xuexi.png
│ │ ├── type_yiliao.png
│ │ ├── type_yongjinjiangli.png
│ │ ├── type_yule.png
│ │ ├── type_yundong.png
│ │ ├── type_zaxiang.png
│ │ ├── type_zhangbei.png
│ │ ├── type_zhufang.png
│ │ └── type_zijinbuchang.png
│ │ ├── mipmap-xxhdpi
│ │ ├── ic_btn_add.png
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxxhdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_round.png
│ │ └── ic_pwd_look.png
│ │ ├── values
│ │ ├── attrs.xml
│ │ ├── colors.xml
│ │ ├── dimens.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ │ └── xml
│ │ └── file_paths.xml
│ └── test
│ └── java
│ └── com
│ └── copasso
│ └── cocobill
│ └── ExampleUnitTest.java
├── build.gradle
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── imgs
├── 1532613405094.jpg
├── Screenshot_2017-12-30-18-12-11-686_com.copasso.co.png
├── Screenshot_2017-12-30-18-12-18-721_com.copasso.co.png
├── Screenshot_2017-12-30-18-12-25-810_com.copasso.co.png
├── Screenshot_2017-12-30-18-12-33-936_com.copasso.co.png
├── Screenshot_2017-12-30-18-13-09-779_com.copasso.co.png
├── Screenshot_2017-12-30-18-13-16-119_com.copasso.co.png
├── Screenshot_2017-12-30-18-16-39-866_com.copasso.co.png
├── Screenshot_2017-12-31-15-33-07-015_com.copasso.co.png
├── Screenshot_2017-12-31-15-42-42-824_com.copasso.co.png
├── Screenshot_2017-12-31-15-59-05-109_com.miui.galle.png
├── Screenshot_2017-12-31-16-11-54-534_com.copasso.co.png
├── Screenshot_2019-01-11-15-51-35-185_com.copasso.co.png
├── Screenshot_2019-01-11-15-51-44-801_com.copasso.co.png
├── Screenshot_2019-01-11-15-51-51-359_com.copasso.co.png
├── Screenshot_2019-01-11-15-54-08-048_com.copasso.co.png
└── mm_facetoface_collect_qrcode_1532613439482.png
├── market
├── bmob
│ ├── QQ截图20180529170850.png
│ ├── timg_gaitubao_com_120x120.png
│ ├── 基于Bmob平台记账助手客户端.docx
│ └── 基于Bmob平台记账助手客户端.zip
└── icon
│ ├── android
│ ├── ic_launcher.png
│ ├── ic_launcher_round.png
│ ├── mipmap-ldpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ ├── mipmap-mdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ ├── mipmap-xhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ ├── mipmap-xxhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ └── mipmap-xxxhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ ├── icons.zip
│ ├── icons_round.zip
│ └── timg.png
└── settings.gradle
/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/caches/build_file_checksums.ser
5 | /.idea/libraries
6 | /.idea/modules.xml
7 | /.idea/workspace.xml
8 | .DS_Store
9 | /build
10 | /captures
11 | .externalNativeBuild
12 |
--------------------------------------------------------------------------------
/.idea/codeStyles/Project.xml:
--------------------------------------------------------------------------------
1 |
9 |
17 |
22 |
29 | |
22 |
23 | ## 版本日志
24 |
25 | v2:后台使用Bmob后端云
26 |
27 | v1:后台地址(采用ssm框架):https://github.com/zas023/ssmBillBook
28 |
29 |
30 | v0.5.1: 2019.01.11
31 | - 更新依赖;
32 | - 重构项目,优化结构;
33 |
34 | v0.4.1: 2018.03.31
35 | - 添加本地账单;
36 | - 实现账单同步;
37 |
38 | v0.3.1: 2017.12.28
39 | - 添加上传头像功能;
40 | - 添加修改主题功能;
41 | - 添加账单分类管理;
42 | - 添加侧滑删除编辑;
43 |
44 | ## 程序效果
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
21 | * 关于activity
22 | */
23 | public class AboutActivity extends AbsAboutActivity {
24 | @Override
25 | protected void onCreateHeader(@NonNull ImageView icon, @NonNull TextView slogan, @NonNull TextView version) {
26 | icon.setImageResource(R.mipmap.ic_launcher);
27 | slogan.setText("CocoBill");
28 | version.setText("v " + BuildConfig.VERSION_NAME);
29 | }
30 |
31 | @Override
32 | protected void onItemsCreated(@NonNull Items items) {
33 | items.add(new Category("About and Help"));
34 | items.add(new Card(getString(R.string.about_introduce)));
35 |
36 | items.add(new Category("Developers"));
37 | items.add(new Contributor(R.mipmap.avatar_zhouas666, "zhouas666", "Developer & designer", "https://github.com/zas023"));
38 |
39 | items.add(new Category("Open Source Licenses"));
40 | items.add(new License("Glide", "bumptech", License.APACHE_2, "com.github.bumptech.glide:glide:4.8.0"));
41 | items.add(new License("MPAndroidChart", "PhilJay", License.APACHE_2, "com.github.PhilJay:MPAndroidChart:v3.1.0-alpha"));
42 | items.add(new License("MultiType", "drakeet", License.APACHE_2, "https://github.com/drakeet/MultiType"));
43 | items.add(new License("About-page", "drakeet", License.APACHE_2, "https://github.com/drakeet/about-page"));
44 | items.add(new License("Dialogs", "afollestad", License.APACHE_2, "com.afollestad.material-dialogs:core:0.9.6.0"));
45 | items.add(new License("PickerView", "contrarywind", License.APACHE_2, "com.contrarywind:Android-PickerView:4.1.6"));
46 | items.add(new License("Greenrobot", "greenrobot", License.APACHE_2, "org.greenrobot:greendao:3.2.2"));
47 | items.add(new License("Greenrobot", "greenrobot", License.APACHE_2, "org.greenrobot:eventbus:3.1.1"));
48 | items.add(new License("Bmob", "bmob", License.APACHE_2, "cn.bmob.android:bmob-sdk:3.6.8-rc7"));
49 | items.add(new License("RxJava", "reactivex", License.APACHE_2, "io.reactivex.rxjava2:rxjava:2.2.2"));
50 | items.add(new License("RxAndroid", "reactivex", License.APACHE_2, "io.reactivex.rxjava2:rxandroid:2.1.0"));
51 | items.add(new License("OkIO", "squareup", License.APACHE_2, "com.squareup.okio:okio:2.1.0"));
52 | items.add(new License("OkHttp", "squareup", License.APACHE_2, "com.squareup.okhttp3:okhttp:3.12.0"));
53 | items.add(new License("Gson", "google", License.APACHE_2, "com.google.code.gson:gson:2.8.5"));
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/app/src/main/java/com/copasso/cocobill/ui/adapter/BillSortAdapter.java:
--------------------------------------------------------------------------------
1 | package com.copasso.cocobill.ui.adapter;
2 |
3 | import android.content.Context;
4 | import android.view.LayoutInflater;
5 | import android.view.View;
6 | import android.view.ViewGroup;
7 | import android.widget.ImageView;
8 | import android.widget.TextView;
9 |
10 | import com.bumptech.glide.Glide;
11 | import com.copasso.cocobill.R;
12 | import com.copasso.cocobill.common.Constants;
13 | import com.copasso.cocobill.model.bean.local.BSort;
14 | import com.copasso.cocobill.utils.ImageUtils;
15 |
16 | import java.util.List;
17 |
18 | import androidx.recyclerview.widget.RecyclerView;
19 |
20 | /**
21 | * Created by zhouas666 on 2017/12/30.
22 | */
23 | public class BillSortAdapter extends RecyclerView.Adapter