└── NewIM ├── .idea ├── .name ├── copyright │ └── profiles_settings.xml ├── encodings.xml ├── vcs.xml ├── modules.xml ├── runConfigurations.xml ├── compiler.xml ├── gradle.xml └── misc.xml ├── app ├── .gitignore ├── src │ ├── main │ │ ├── res │ │ │ ├── mipmap-hdpi │ │ │ │ ├── on.png │ │ │ │ ├── head.png │ │ │ │ ├── off.png │ │ │ │ ├── icon_geo.png │ │ │ │ ├── icon_near.png │ │ │ │ ├── login_bg.png │ │ │ │ ├── msg_tips.png │ │ │ │ ├── chat_send_n.png │ │ │ │ ├── chat_send_p.png │ │ │ │ ├── default_head.png │ │ │ │ ├── ic_launcher.png │ │ │ │ ├── login_logo.png │ │ │ │ ├── voice_left.png │ │ │ │ ├── voice_left1.png │ │ │ │ ├── voice_left2.png │ │ │ │ ├── voice_left3.png │ │ │ │ ├── voice_right.png │ │ │ │ ├── voice_right1.png │ │ │ │ ├── voice_right2.png │ │ │ │ ├── voice_right3.png │ │ │ │ ├── chat_add_press.png │ │ │ │ ├── chat_emo_press.png │ │ │ │ ├── icon_set_press.png │ │ │ │ ├── refresh_black.png │ │ │ │ ├── chat_add_normal.png │ │ │ │ ├── chat_emo_normal.png │ │ │ │ ├── chat_icon_voice1.png │ │ │ │ ├── chat_icon_voice2.png │ │ │ │ ├── chat_icon_voice3.png │ │ │ │ ├── chat_icon_voice4.png │ │ │ │ ├── chat_icon_voice5.png │ │ │ │ ├── chat_icon_voice6.png │ │ │ │ ├── chat_voice_normal.png │ │ │ │ ├── chat_voice_press.png │ │ │ │ ├── icon_msg_search.png │ │ │ │ ├── icon_set_normal.png │ │ │ │ ├── new_friends_icon.png │ │ │ │ ├── chat_keyboard_press.png │ │ │ │ ├── icon_contact_normal.png │ │ │ │ ├── icon_contact_press.png │ │ │ │ ├── icon_message_normal.png │ │ │ │ ├── icon_message_press.png │ │ │ │ ├── login_icon_account.png │ │ │ │ ├── login_icon_password.png │ │ │ │ ├── base_horization_line.png │ │ │ │ ├── chat_add_camera_normal.png │ │ │ │ ├── chat_add_camera_press.png │ │ │ │ ├── chat_add_picture_press.png │ │ │ │ ├── chat_fail_resend_press.png │ │ │ │ ├── chat_icon_voice_short.png │ │ │ │ ├── chat_keyboard_normal.png │ │ │ │ ├── register_bottom_arrow.png │ │ │ │ ├── base_action_bar_add_bg_n.png │ │ │ │ ├── base_action_bar_add_bg_p.png │ │ │ │ ├── chat_add_location_normal.png │ │ │ │ ├── chat_add_location_press.png │ │ │ │ ├── chat_add_picture_normal.png │ │ │ │ ├── chat_fail_resend_normal.png │ │ │ │ ├── base_action_bar_back_bg_n.png │ │ │ │ ├── base_action_bar_back_bg_p.png │ │ │ │ ├── base_action_bar_more_bg_n.png │ │ │ │ ├── base_action_bar_more_bg_p.png │ │ │ │ ├── base_action_bar_true_bg_n.png │ │ │ │ └── base_action_bar_true_bg_p.png │ │ │ ├── drawable │ │ │ │ ├── input_bg.9.png │ │ │ │ ├── pop_bg.9.png │ │ │ │ ├── top_bar.9.png │ │ │ │ ├── about_mid_bg.9.png │ │ │ │ ├── about_top_bg.9.png │ │ │ │ ├── btn_login_n.9.png │ │ │ │ ├── btn_login_p.9.png │ │ │ │ ├── btn_logout_n.9.png │ │ │ │ ├── btn_logout_p.9.png │ │ │ │ ├── chat_left_qp.9.png │ │ │ │ ├── chat_right_qp.9.png │ │ │ │ ├── chat_voice_bg.9.png │ │ │ │ ├── pop_bg_press.9.png │ │ │ │ ├── about_bottom_bg.9.png │ │ │ │ ├── base_dialog_bg.9.png │ │ │ │ ├── chat_top_voice_bg.9.png │ │ │ │ ├── list_newmessage2.9.png │ │ │ │ ├── location_default.9.png │ │ │ │ ├── base_comment_emo_bar.9.png │ │ │ │ ├── base_horizontal_line.9.png │ │ │ │ ├── chat_voice_bg_press.9.png │ │ │ │ ├── list_conversation_press.9.png │ │ │ │ ├── base_horizontal_line_red.9.png │ │ │ │ ├── contact_list_buddy_item_bg.9.png │ │ │ │ ├── tab_set_btn.xml │ │ │ │ ├── drawable_edit_normal.xml │ │ │ │ ├── tab_contact_btn.xml │ │ │ │ ├── tab_message_btn.xml │ │ │ │ ├── btn_login_selector.xml │ │ │ │ ├── btn_logout_selector.xml │ │ │ │ ├── tab_textcolor.xml │ │ │ │ ├── btn_selector.xml │ │ │ │ ├── btn_chat_add_selector.xml │ │ │ │ ├── btn_chat_emo_selector.xml │ │ │ │ ├── btn_chat_send_selector.xml │ │ │ │ ├── button_normal_shape.xml │ │ │ │ ├── btn_chat_voice_selector.xml │ │ │ │ ├── btn_chat_keyboard_selector.xml │ │ │ │ ├── btn_chat_fail_resend.xml │ │ │ │ ├── btn_chat_add_camera_selector.xml │ │ │ │ ├── base_action_bar_add_bg_selector.xml │ │ │ │ ├── btn_chat_add_location_selector.xml │ │ │ │ ├── btn_chat_add_picture_selector.xml │ │ │ │ ├── base_action_bar_more_bg_selector.xml │ │ │ │ ├── base_action_bar_true_bg_selector.xml │ │ │ │ ├── base_action_bar_back_bg_selector.xml │ │ │ │ ├── btn_chat_record_selector.xml │ │ │ │ ├── anim_chat_voice_right.xml │ │ │ │ └── anim_chat_voice_left.xml │ │ │ ├── mipmap-mdpi │ │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xhdpi │ │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxhdpi │ │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxxhdpi │ │ │ │ └── ic_launcher.png │ │ │ ├── menu │ │ │ │ └── menu_main.xml │ │ │ ├── values-v21 │ │ │ │ └── styles.xml │ │ │ ├── values-w820dp │ │ │ │ └── dimens.xml │ │ │ ├── layout │ │ │ │ ├── activity_splash.xml │ │ │ │ ├── fragment_conversation.xml │ │ │ │ ├── fragment_contact.xml │ │ │ │ ├── include_pullrefresh.xml │ │ │ │ ├── include_chat_voice_short.xml │ │ │ │ ├── item_chat_agree.xml │ │ │ │ ├── include_chat_add.xml │ │ │ │ ├── item_search_user.xml │ │ │ │ ├── activity_search_user.xml │ │ │ │ ├── item_contact.xml │ │ │ │ ├── activity_chat.xml │ │ │ │ ├── include_navi.xml │ │ │ │ ├── item_chat_received_message.xml │ │ │ │ ├── header_new_friend.xml │ │ │ │ ├── item_chat_received_image.xml │ │ │ │ ├── item_chat_received_location.xml │ │ │ │ ├── item_chat_received_voice.xml │ │ │ │ ├── activity_register.xml │ │ │ │ ├── item_chat_sent_image.xml │ │ │ │ ├── item_new_friend.xml │ │ │ │ ├── item_chat_sent_message.xml │ │ │ │ ├── activity_user_info.xml │ │ │ │ ├── item_chat_sent_location.xml │ │ │ │ ├── item_conversation.xml │ │ │ │ └── activity_login.xml │ │ │ └── values │ │ │ │ ├── dimens.xml │ │ │ │ ├── colors.xml │ │ │ │ ├── strings.xml │ │ │ │ └── styles.xml │ │ ├── java │ │ │ └── cn │ │ │ │ └── bmob │ │ │ │ └── imdemo │ │ │ │ ├── event │ │ │ │ ├── RefreshEvent.java │ │ │ │ └── FinishEvent.java │ │ │ │ ├── adapter │ │ │ │ ├── OnRecyclerViewListener.java │ │ │ │ ├── base │ │ │ │ │ ├── IMutlipleItem.java │ │ │ │ │ ├── BaseViewHolder.java │ │ │ │ │ └── BaseRecyclerHolder.java │ │ │ │ ├── AgreeHolder.java │ │ │ │ ├── SearchUserHolder.java │ │ │ │ ├── ContactAdapter.java │ │ │ │ ├── SearchUserAdapter.java │ │ │ │ ├── ConversationAdapter.java │ │ │ │ ├── ReceiveTextHolder.java │ │ │ │ ├── ReceiveVideoHolder.java │ │ │ │ ├── ReceiveLocationHolder.java │ │ │ │ └── ReceiveImageHolder.java │ │ │ │ ├── model │ │ │ │ ├── i │ │ │ │ │ ├── UpdateCacheListener.java │ │ │ │ │ └── QueryUserListener.java │ │ │ │ └── BaseModel.java │ │ │ │ ├── base │ │ │ │ ├── ImageLoaderFactory.java │ │ │ │ ├── ILoader.java │ │ │ │ ├── BaseFragment.java │ │ │ │ └── UniversalImageLoader.java │ │ │ │ ├── bean │ │ │ │ ├── User.java │ │ │ │ ├── Friend.java │ │ │ │ ├── AddFriendMessage.java │ │ │ │ ├── NewFriendConversation.java │ │ │ │ ├── AgreeAddFriendMessage.java │ │ │ │ ├── Conversation.java │ │ │ │ └── PrivateConversation.java │ │ │ │ ├── util │ │ │ │ ├── Util.java │ │ │ │ ├── LifecycleCallbacksAdapter.java │ │ │ │ ├── DisplayConfig.java │ │ │ │ └── TimeUtil.java │ │ │ │ ├── Config.java │ │ │ │ ├── ui │ │ │ │ ├── SplashActivity.java │ │ │ │ ├── RegisterActivity.java │ │ │ │ ├── LoginActivity.java │ │ │ │ ├── fragment │ │ │ │ │ └── SetFragment.java │ │ │ │ ├── SearchUserActivity.java │ │ │ │ └── UserInfoActivity.java │ │ │ │ ├── db │ │ │ │ ├── dao │ │ │ │ │ ├── DaoSession.java │ │ │ │ │ └── DaoMaster.java │ │ │ │ └── NewFriend.java │ │ │ │ └── BmobIMApplication.java │ │ └── AndroidManifest.xml │ ├── test │ │ └── java │ │ │ └── cn │ │ │ └── bmob │ │ │ └── imdemo │ │ │ └── ExampleUnitTest.java │ └── androidTest │ │ └── java │ │ └── cn │ │ └── bmob │ │ └── imdemo │ │ └── ApplicationTest.java ├── libs │ └── universal-image-loader-1.9.5.jar └── build.gradle ├── settings.gradle ├── .gitignore ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── .gitattributes ├── build.gradle ├── gradle.properties ├── NewIM.iml └── gradlew.bat /NewIM/.idea/.name: -------------------------------------------------------------------------------- 1 | NewIM -------------------------------------------------------------------------------- /NewIM/app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /NewIM/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | -------------------------------------------------------------------------------- /NewIM/.idea/copyright/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /NewIM/.gitignore: -------------------------------------------------------------------------------- 1 | .gradle 2 | /local.properties 3 | /.idea/workspace.xml 4 | /.idea/libraries 5 | .DS_Store 6 | /build 7 | /captures 8 | -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/on.png -------------------------------------------------------------------------------- /NewIM/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/head.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/head.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/off.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/input_bg.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/drawable/input_bg.9.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/pop_bg.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/drawable/pop_bg.9.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/top_bar.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/drawable/top_bar.9.png -------------------------------------------------------------------------------- /NewIM/app/libs/universal-image-loader-1.9.5.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/libs/universal-image-loader-1.9.5.jar -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/icon_geo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/icon_geo.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/icon_near.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/icon_near.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/login_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/login_bg.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/msg_tips.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/msg_tips.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/about_mid_bg.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/drawable/about_mid_bg.9.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/about_top_bg.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/drawable/about_top_bg.9.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/btn_login_n.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/drawable/btn_login_n.9.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/btn_login_p.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/drawable/btn_login_p.9.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/btn_logout_n.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/drawable/btn_logout_n.9.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/btn_logout_p.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/drawable/btn_logout_p.9.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/chat_left_qp.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/drawable/chat_left_qp.9.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/chat_right_qp.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/drawable/chat_right_qp.9.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/chat_voice_bg.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/drawable/chat_voice_bg.9.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/pop_bg_press.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/drawable/pop_bg_press.9.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/chat_send_n.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/chat_send_n.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/chat_send_p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/chat_send_p.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/default_head.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/default_head.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/login_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/login_logo.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/voice_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/voice_left.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/voice_left1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/voice_left1.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/voice_left2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/voice_left2.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/voice_left3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/voice_left3.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/voice_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/voice_right.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/voice_right1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/voice_right1.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/voice_right2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/voice_right2.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/voice_right3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/voice_right3.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/about_bottom_bg.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/drawable/about_bottom_bg.9.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/base_dialog_bg.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/drawable/base_dialog_bg.9.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/chat_add_press.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/chat_add_press.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/chat_emo_press.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/chat_emo_press.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/icon_set_press.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/icon_set_press.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/refresh_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/refresh_black.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/chat_top_voice_bg.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/drawable/chat_top_voice_bg.9.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/list_newmessage2.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/drawable/list_newmessage2.9.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/location_default.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/drawable/location_default.9.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/chat_add_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/chat_add_normal.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/chat_emo_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/chat_emo_normal.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/chat_icon_voice1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/chat_icon_voice1.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/chat_icon_voice2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/chat_icon_voice2.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/chat_icon_voice3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/chat_icon_voice3.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/chat_icon_voice4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/chat_icon_voice4.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/chat_icon_voice5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/chat_icon_voice5.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/chat_icon_voice6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/chat_icon_voice6.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/chat_voice_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/chat_voice_normal.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/chat_voice_press.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/chat_voice_press.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/icon_msg_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/icon_msg_search.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/icon_set_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/icon_set_normal.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/new_friends_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/new_friends_icon.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/base_comment_emo_bar.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/drawable/base_comment_emo_bar.9.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/base_horizontal_line.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/drawable/base_horizontal_line.9.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/chat_voice_bg_press.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/drawable/chat_voice_bg_press.9.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/chat_keyboard_press.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/chat_keyboard_press.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/icon_contact_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/icon_contact_normal.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/icon_contact_press.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/icon_contact_press.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/icon_message_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/icon_message_normal.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/icon_message_press.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/icon_message_press.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/login_icon_account.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/login_icon_account.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/login_icon_password.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/login_icon_password.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/list_conversation_press.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/drawable/list_conversation_press.9.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/base_horization_line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/base_horization_line.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/chat_add_camera_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/chat_add_camera_normal.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/chat_add_camera_press.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/chat_add_camera_press.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/chat_add_picture_press.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/chat_add_picture_press.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/chat_fail_resend_press.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/chat_fail_resend_press.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/chat_icon_voice_short.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/chat_icon_voice_short.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/chat_keyboard_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/chat_keyboard_normal.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/register_bottom_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/register_bottom_arrow.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/base_horizontal_line_red.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/drawable/base_horizontal_line_red.9.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/base_action_bar_add_bg_n.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/base_action_bar_add_bg_n.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/base_action_bar_add_bg_p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/base_action_bar_add_bg_p.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/chat_add_location_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/chat_add_location_normal.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/chat_add_location_press.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/chat_add_location_press.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/chat_add_picture_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/chat_add_picture_normal.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/chat_fail_resend_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/chat_fail_resend_normal.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/contact_list_buddy_item_bg.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/drawable/contact_list_buddy_item_bg.9.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/base_action_bar_back_bg_n.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/base_action_bar_back_bg_n.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/base_action_bar_back_bg_p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/base_action_bar_back_bg_p.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/base_action_bar_more_bg_n.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/base_action_bar_more_bg_n.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/base_action_bar_more_bg_p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/base_action_bar_more_bg_p.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/base_action_bar_true_bg_n.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/base_action_bar_true_bg_n.png -------------------------------------------------------------------------------- /NewIM/app/src/main/res/mipmap-hdpi/base_action_bar_true_bg_p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bodismile/bmob-newim-demo/HEAD/NewIM/app/src/main/res/mipmap-hdpi/base_action_bar_true_bg_p.png -------------------------------------------------------------------------------- /NewIM/.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /NewIM/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /NewIM/app/src/main/java/cn/bmob/imdemo/event/RefreshEvent.java: -------------------------------------------------------------------------------- 1 | package cn.bmob.imdemo.event; 2 | 3 | /** 4 | * Created by Administrator on 2016/4/28. 5 | */ 6 | public class RefreshEvent { 7 | public RefreshEvent(){} 8 | } 9 | -------------------------------------------------------------------------------- /NewIM/app/src/main/java/cn/bmob/imdemo/event/FinishEvent.java: -------------------------------------------------------------------------------- 1 | package cn.bmob.imdemo.event; 2 | 3 | /** 4 | * @author :smile 5 | * @project:FinishEvent 6 | * @date :2016-01-25-15:25 7 | */ 8 | public class FinishEvent { 9 | 10 | public FinishEvent(){} 11 | } 12 | -------------------------------------------------------------------------------- /NewIM/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jan 15 11:36:31 CST 2016 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-all.zip 7 | -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/tab_set_btn.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/drawable_edit_normal.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/tab_contact_btn.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/tab_message_btn.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/btn_login_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/btn_logout_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/tab_textcolor.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /NewIM/app/src/main/java/cn/bmob/imdemo/adapter/OnRecyclerViewListener.java: -------------------------------------------------------------------------------- 1 | package cn.bmob.imdemo.adapter; 2 | 3 | /**为RecycleView添加点击事件 4 | * @author smile 5 | * @project OnRecyclerViewListener 6 | * @date 2016-03-03-16:39 7 | */ 8 | public interface OnRecyclerViewListener { 9 | void onItemClick(int position); 10 | boolean onItemLongClick(int position); 11 | } 12 | -------------------------------------------------------------------------------- /NewIM/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /NewIM/app/src/main/res/menu/menu_main.xml: -------------------------------------------------------------------------------- 1 | 4 | 6 | 7 | -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/btn_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /NewIM/app/src/main/res/values-v21/styles.xml: -------------------------------------------------------------------------------- 1 | > 2 | 3 | 9 | 10 | -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/btn_chat_add_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/btn_chat_emo_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/btn_chat_send_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/button_normal_shape.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /NewIM/app/src/main/res/values-w820dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 64dp 6 | 7 | -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/btn_chat_voice_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /NewIM/app/src/test/java/cn/bmob/imdemo/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package cn.bmob.imdemo; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * To work on unit tests, switch the Test Artifact in the Build Variants view. 9 | */ 10 | public class ExampleUnitTest { 11 | @Test 12 | public void addition_isCorrect() throws Exception { 13 | assertEquals(4, 2 + 2); 14 | } 15 | } -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/btn_chat_keyboard_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/btn_chat_fail_resend.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/btn_chat_add_camera_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/base_action_bar_add_bg_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/btn_chat_add_location_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/btn_chat_add_picture_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /NewIM/app/src/androidTest/java/cn/bmob/imdemo/ApplicationTest.java: -------------------------------------------------------------------------------- 1 | package cn.bmob.imdemo; 2 | 3 | import android.app.Application; 4 | import android.test.ApplicationTestCase; 5 | 6 | /** 7 | * Testing Fundamentals 8 | */ 9 | public class ApplicationTest extends ApplicationTestCase { 10 | public ApplicationTest() { 11 | super(Application.class); 12 | } 13 | } -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/base_action_bar_more_bg_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/base_action_bar_true_bg_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/base_action_bar_back_bg_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /NewIM/.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | 7 | # Standard to msysgit 8 | *.doc diff=astextplain 9 | *.DOC diff=astextplain 10 | *.docx diff=astextplain 11 | *.DOCX diff=astextplain 12 | *.dot diff=astextplain 13 | *.DOT diff=astextplain 14 | *.pdf diff=astextplain 15 | *.PDF diff=astextplain 16 | *.rtf diff=astextplain 17 | *.RTF diff=astextplain 18 | -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/btn_chat_record_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /NewIM/app/src/main/java/cn/bmob/imdemo/model/i/UpdateCacheListener.java: -------------------------------------------------------------------------------- 1 | package cn.bmob.imdemo.model.i; 2 | 3 | import cn.bmob.v3.exception.BmobException; 4 | import cn.bmob.v3.listener.BmobListener; 5 | 6 | /** 7 | * @author :smile 8 | * @project:UpdateCacheListener 9 | * @date :2016-02-01-16:23 10 | */ 11 | public abstract class UpdateCacheListener extends BmobListener { 12 | public abstract void done(BmobException e); 13 | 14 | @Override 15 | protected void postDone(Object o, BmobException e) { 16 | done(e); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /NewIM/app/src/main/java/cn/bmob/imdemo/model/BaseModel.java: -------------------------------------------------------------------------------- 1 | package cn.bmob.imdemo.model; 2 | 3 | import android.content.Context; 4 | 5 | import cn.bmob.imdemo.BmobIMApplication; 6 | 7 | /** 8 | * @author :smile 9 | * @project:BaseModel 10 | * @date :2016-01-23-10:37 11 | */ 12 | public abstract class BaseModel { 13 | 14 | public int CODE_NULL=1000; 15 | public static int CODE_NOT_EQUAL=1001; 16 | 17 | public static final int DEFAULT_LIMIT=20; 18 | 19 | public Context getContext(){ 20 | return BmobIMApplication.INSTANCE(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /NewIM/app/src/main/java/cn/bmob/imdemo/model/i/QueryUserListener.java: -------------------------------------------------------------------------------- 1 | package cn.bmob.imdemo.model.i; 2 | 3 | import cn.bmob.imdemo.bean.User; 4 | import cn.bmob.v3.exception.BmobException; 5 | import cn.bmob.v3.listener.BmobListener; 6 | 7 | /** 8 | * @author :smile 9 | * @project:QueryUserListener 10 | * @date :2016-02-01-16:23 11 | */ 12 | public abstract class QueryUserListener extends BmobListener { 13 | 14 | public abstract void done(User s, BmobException e); 15 | 16 | @Override 17 | protected void postDone(User o, BmobException e) { 18 | done(o, e); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /NewIM/.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/anim_chat_voice_right.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 10 | 13 | 16 | -------------------------------------------------------------------------------- /NewIM/app/src/main/res/drawable/anim_chat_voice_left.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 10 | 13 | 16 | -------------------------------------------------------------------------------- /NewIM/app/src/main/java/cn/bmob/imdemo/base/ImageLoaderFactory.java: -------------------------------------------------------------------------------- 1 | package cn.bmob.imdemo.base; 2 | 3 | /** 4 | * Created by Administrator on 2016/5/24. 5 | */ 6 | public class ImageLoaderFactory { 7 | 8 | private static volatile ILoader sInstance; 9 | 10 | private ImageLoaderFactory() {} 11 | 12 | public static ILoader getLoader() { 13 | if (sInstance == null) { 14 | synchronized (ImageLoaderFactory.class) { 15 | if (sInstance == null) { 16 | sInstance = new UniversalImageLoader(); 17 | } 18 | } 19 | } 20 | return sInstance; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /NewIM/app/src/main/java/cn/bmob/imdemo/adapter/base/IMutlipleItem.java: -------------------------------------------------------------------------------- 1 | package cn.bmob.imdemo.adapter.base; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * Created by Administrator on 2016/5/6. 7 | */ 8 | public interface IMutlipleItem { 9 | 10 | /** 11 | * 多种布局的layout文件 12 | * @param viewtype 13 | * @return 14 | */ 15 | int getItemLayoutId(int viewtype); 16 | 17 | /** 18 | * 多种布局类型 19 | * @param postion 20 | * @param t 21 | * @return 22 | */ 23 | int getItemViewType(int postion, T t); 24 | 25 | /** 26 | * 返回布局个数 27 | * @param list 28 | * @return 29 | */ 30 | int getItemCount(List list); 31 | } 32 | -------------------------------------------------------------------------------- /NewIM/build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | repositories { 5 | jcenter() 6 | } 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:1.3.0' 9 | 10 | // NOTE: Do not place your application dependencies here; they belong 11 | // in the individual module build.gradle files 12 | } 13 | } 14 | 15 | allprojects { 16 | repositories { 17 | jcenter() 18 | //Bmob的maven仓库地址,必须填写 19 | maven { url "https://raw.github.com/bmob/bmob-android-sdk/master" } 20 | } 21 | } 22 | 23 | task clean(type: Delete) { 24 | delete rootProject.buildDir 25 | } 26 | -------------------------------------------------------------------------------- /NewIM/app/src/main/java/cn/bmob/imdemo/bean/User.java: -------------------------------------------------------------------------------- 1 | package cn.bmob.imdemo.bean; 2 | 3 | import cn.bmob.imdemo.db.NewFriend; 4 | import cn.bmob.v3.BmobUser; 5 | 6 | /** 7 | * @author :smile 8 | * @project:User 9 | * @date :2016-01-22-18:11 10 | */ 11 | public class User extends BmobUser { 12 | 13 | private String avatar; 14 | 15 | public User(){} 16 | 17 | public User(NewFriend friend){ 18 | setObjectId(friend.getUid()); 19 | setUsername(friend.getName()); 20 | setAvatar(friend.getAvatar()); 21 | } 22 | 23 | public String getAvatar() { 24 | return avatar; 25 | } 26 | 27 | public void setAvatar(String avatar) { 28 | this.avatar = avatar; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /NewIM/app/src/main/java/cn/bmob/imdemo/base/ILoader.java: -------------------------------------------------------------------------------- 1 | package cn.bmob.imdemo.base; 2 | 3 | import android.widget.ImageView; 4 | 5 | import com.nostra13.universalimageloader.core.listener.ImageLoadingListener; 6 | 7 | /** 8 | * 抽象的图片加载接口 9 | * @author smile 10 | */ 11 | public interface ILoader { 12 | 13 | /** 14 | * 加载圆形头像 15 | * @param iv 16 | * @param url 17 | * @param defaultRes 18 | */ 19 | void loadAvator(ImageView iv, String url, int defaultRes); 20 | 21 | /** 22 | * 加载图片,添加监听器 23 | * @param iv 24 | * @param url 25 | * @param defaultRes 26 | * @param listener 27 | */ 28 | void load(ImageView iv,String url,int defaultRes,ImageLoadingListener listener); 29 | 30 | } 31 | -------------------------------------------------------------------------------- /NewIM/.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /NewIM/app/src/main/java/cn/bmob/imdemo/util/Util.java: -------------------------------------------------------------------------------- 1 | package cn.bmob.imdemo.util; 2 | 3 | import android.graphics.Bitmap; 4 | import android.graphics.BitmapFactory; 5 | 6 | import java.io.BufferedInputStream; 7 | import java.io.BufferedOutputStream; 8 | import java.io.ByteArrayOutputStream; 9 | import java.io.IOException; 10 | import java.io.InputStream; 11 | import java.io.OutputStream; 12 | import java.net.URL; 13 | 14 | /** 15 | * @author smile 16 | * @project Util 17 | * @date 2016-03-01-14:55 18 | */ 19 | public class Util { 20 | public static boolean checkSdCard() { 21 | if (android.os.Environment.getExternalStorageState().equals( 22 | android.os.Environment.MEDIA_MOUNTED)) 23 | return true; 24 | else 25 | return false; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /NewIM/.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 23 | 24 | -------------------------------------------------------------------------------- /NewIM/app/src/main/res/layout/activity_splash.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /NewIM/app/src/main/java/cn/bmob/imdemo/bean/Friend.java: -------------------------------------------------------------------------------- 1 | package cn.bmob.imdemo.bean; 2 | 3 | import cn.bmob.v3.BmobObject; 4 | 5 | /**好友表 6 | * @author smile 7 | * @project Friend 8 | * @date 2016-04-26 9 | */ 10 | public class Friend extends BmobObject{ 11 | 12 | private User user; 13 | private User friendUser; 14 | 15 | //拼音 16 | private transient String pinyin; 17 | 18 | public String getPinyin() { 19 | return pinyin; 20 | } 21 | 22 | public void setPinyin(String pinyin) { 23 | this.pinyin = pinyin; 24 | } 25 | 26 | public User getUser() { 27 | return user; 28 | } 29 | 30 | public void setUser(User user) { 31 | this.user = user; 32 | } 33 | 34 | public User getFriendUser() { 35 | return friendUser; 36 | } 37 | 38 | public void setFriendUser(User friendUser) { 39 | this.friendUser = friendUser; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /NewIM/app/src/main/java/cn/bmob/imdemo/Config.java: -------------------------------------------------------------------------------- 1 | package cn.bmob.imdemo; 2 | 3 | /** 4 | * @author :smile 5 | * @project:Config 6 | * @date :2016-01-15-18:23 7 | */ 8 | public class Config { 9 | /** 10 | * Bmob应用key 11 | */ 12 | // public static final String DEFAULT_APPKEY="d6f44e8f1ba9d3dcf4fab7a487fa97dd";//内 13 | public static final String DEFAULT_APPKEY="87ab0f9bee41bce86dfadd69af692873";//外 14 | //是否是debug模式 15 | public static final boolean DEBUG=true; 16 | //好友请求:未读-未添加->接收到别人发给我的好友添加请求,初始状态 17 | public static final int STATUS_VERIFY_NONE=0; 18 | //好友请求:已读-未添加->点击查看了新朋友,则都变成已读状态 19 | public static final int STATUS_VERIFY_READED=2; 20 | //好友请求:已添加 21 | public static final int STATUS_VERIFIED=1; 22 | //好友请求:拒绝 23 | public static final int STATUS_VERIFY_REFUSE=3; 24 | //好友请求:我发出的好友请求-暂未存储到本地数据库中 25 | public static final int STATUS_VERIFY_ME_SEND=4; 26 | 27 | } 28 | -------------------------------------------------------------------------------- /NewIM/app/src/main/res/layout/fragment_conversation.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | 16 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /NewIM/app/src/main/res/layout/fragment_contact.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 10 | 16 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /NewIM/app/src/main/res/layout/include_pullrefresh.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 10 | 16 | 17 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /NewIM/gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the daemon process. 11 | # The setting is particularly useful for tweaking memory settings. 12 | # Default value: -Xmx10248m -XX:MaxPermSize=256m 13 | org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 14 | 15 | # When configured, Gradle will run in incubating parallel mode. 16 | # This option should only be used with decoupled projects. More details, visit 17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 18 | org.gradle.parallel=true 19 | org.gradle.daemon=true -------------------------------------------------------------------------------- /NewIM/NewIM.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /NewIM/app/src/main/java/cn/bmob/imdemo/util/LifecycleCallbacksAdapter.java: -------------------------------------------------------------------------------- 1 | package cn.bmob.imdemo.util; 2 | 3 | import android.app.Activity; 4 | import android.app.Application; 5 | import android.os.Bundle; 6 | 7 | /** Helper to avoid implementing all lifecycle callback methods. */ 8 | public class LifecycleCallbacksAdapter implements Application.ActivityLifecycleCallbacks { 9 | @Override public void onActivityCreated(Activity activity, Bundle savedInstanceState) { 10 | 11 | } 12 | 13 | @Override public void onActivityStarted(Activity activity) { 14 | 15 | } 16 | 17 | @Override public void onActivityResumed(Activity activity) { 18 | 19 | } 20 | 21 | @Override public void onActivityPaused(Activity activity) { 22 | 23 | } 24 | 25 | @Override public void onActivityStopped(Activity activity) { 26 | 27 | } 28 | 29 | @Override public void onActivitySaveInstanceState(Activity activity, Bundle outState) { 30 | 31 | } 32 | 33 | @Override public void onActivityDestroyed(Activity activity) { 34 | 35 | } 36 | } -------------------------------------------------------------------------------- /NewIM/app/src/main/res/layout/include_chat_voice_short.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 18 | 19 | 26 | 27 | -------------------------------------------------------------------------------- /NewIM/app/src/main/java/cn/bmob/imdemo/ui/SplashActivity.java: -------------------------------------------------------------------------------- 1 | package cn.bmob.imdemo.ui; 2 | 3 | import android.os.Bundle; 4 | import android.os.Handler; 5 | import android.os.Looper; 6 | 7 | import cn.bmob.imdemo.R; 8 | import cn.bmob.imdemo.bean.User; 9 | import cn.bmob.imdemo.base.BaseActivity; 10 | import cn.bmob.imdemo.model.UserModel; 11 | 12 | /**启动界面 13 | * @author :smile 14 | * @project:SplashActivity 15 | * @date :2016-01-15-18:23 16 | */ 17 | public class SplashActivity extends BaseActivity { 18 | 19 | @Override 20 | protected void onCreate(Bundle savedInstanceState) { 21 | super.onCreate(savedInstanceState); 22 | setContentView(R.layout.activity_splash); 23 | Handler handler =new Handler(Looper.getMainLooper()); 24 | handler.postDelayed(new Runnable() { 25 | @Override 26 | public void run() { 27 | User user = UserModel.getInstance().getCurrentUser(); 28 | if (user == null) { 29 | startActivity(LoginActivity.class,null,true); 30 | }else{ 31 | startActivity(MainActivity.class,null,true); 32 | } 33 | } 34 | },1000); 35 | 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /NewIM/app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16dp 4 | 16dp 5 | 16dp 6 | 48.0dip 7 | 8 | 13sp 9 | 10sp 10 | 14sp 11 | 16sp 12 | 18sp 13 | 14 | 2dip 15 | 1dip 16 | 40dip 17 | 50dip 18 | 75dp 19 | 70dp 20 | 21 | 3dp 22 | 5dp 23 | 8dp 24 | 10dp 25 | 11dp 26 | 12dp 27 | 16dp 28 | 15dp 29 | 18dp 30 | 30dp 31 | 40dp 32 | 33 | 34 | -------------------------------------------------------------------------------- /NewIM/app/src/main/res/layout/item_chat_agree.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 17 | 18 | 31 | 32 | -------------------------------------------------------------------------------- /NewIM/app/src/main/java/cn/bmob/imdemo/adapter/AgreeHolder.java: -------------------------------------------------------------------------------- 1 | package cn.bmob.imdemo.adapter; 2 | 3 | import android.content.Context; 4 | import android.view.View; 5 | import android.view.ViewGroup; 6 | import android.widget.TextView; 7 | 8 | import java.text.SimpleDateFormat; 9 | 10 | import butterknife.Bind; 11 | import cn.bmob.imdemo.R; 12 | import cn.bmob.imdemo.adapter.base.BaseViewHolder; 13 | import cn.bmob.newim.bean.BmobIMMessage; 14 | 15 | /** 16 | * 同意添加好友的agree类型 17 | */ 18 | public class AgreeHolder extends BaseViewHolder implements View.OnClickListener,View.OnLongClickListener { 19 | 20 | @Bind(R.id.tv_time) 21 | protected TextView tv_time; 22 | 23 | @Bind(R.id.tv_message) 24 | protected TextView tv_message; 25 | 26 | public AgreeHolder(Context context, ViewGroup root, OnRecyclerViewListener listener) { 27 | super(context, root, R.layout.item_chat_agree, listener); 28 | } 29 | 30 | @Override 31 | public void bindData(Object o) { 32 | final BmobIMMessage message = (BmobIMMessage)o; 33 | SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm"); 34 | String time = dateFormat.format(message.getCreateTime()); 35 | String content = message.getContent(); 36 | tv_message.setText(content); 37 | tv_time.setText(time); 38 | } 39 | 40 | public void showTime(boolean isShow) { 41 | tv_time.setVisibility(isShow ? View.VISIBLE : View.GONE); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /NewIM/app/src/main/java/cn/bmob/imdemo/db/dao/DaoSession.java: -------------------------------------------------------------------------------- 1 | package cn.bmob.imdemo.db.dao; 2 | 3 | import android.database.sqlite.SQLiteDatabase; 4 | 5 | import java.util.Map; 6 | 7 | import de.greenrobot.dao.AbstractDao; 8 | import de.greenrobot.dao.AbstractDaoSession; 9 | import de.greenrobot.dao.identityscope.IdentityScopeType; 10 | import de.greenrobot.dao.internal.DaoConfig; 11 | 12 | import cn.bmob.imdemo.db.NewFriend; 13 | 14 | import cn.bmob.imdemo.db.dao.NewFriendDao; 15 | 16 | // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. 17 | 18 | /** 19 | * {@inheritDoc} 20 | * 21 | * @see de.greenrobot.dao.AbstractDaoSession 22 | */ 23 | public class DaoSession extends AbstractDaoSession { 24 | 25 | private final DaoConfig newFriendDaoConfig; 26 | 27 | private final NewFriendDao newFriendDao; 28 | 29 | public DaoSession(SQLiteDatabase db, IdentityScopeType type, Map>, DaoConfig> 30 | daoConfigMap) { 31 | super(db); 32 | 33 | newFriendDaoConfig = daoConfigMap.get(NewFriendDao.class).clone(); 34 | newFriendDaoConfig.initIdentityScope(type); 35 | 36 | newFriendDao = new NewFriendDao(newFriendDaoConfig, this); 37 | 38 | registerDao(NewFriend.class, newFriendDao); 39 | } 40 | 41 | public void clear() { 42 | newFriendDaoConfig.getIdentityScope().clear(); 43 | } 44 | 45 | public NewFriendDao getNewFriendDao() { 46 | return newFriendDao; 47 | } 48 | 49 | } 50 | -------------------------------------------------------------------------------- /NewIM/app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3F51B5 4 | #303F9F 5 | #FF4081 6 | #00000000 7 | 8 | #3e3e39 9 | #9fa0a0 10 | #ffffff 11 | #489cfa 12 | 13 | #ffa1a1a1 14 | #272a2e 15 | #9da0a4 16 | #4f9ef6 17 | #969696 18 | #eceff4 19 | 20 | #f0f2f5 21 | #ed4e23 22 | #f4f6f6 23 | #f82c22 24 | #898989 25 | 26 | #fcfcfc 27 | #999999 28 | #dadada 29 | #818181 30 | #20000000 31 | #1e1e1e 32 | #b4b4b4 33 | 34 | 35 | -------------------------------------------------------------------------------- /NewIM/app/src/main/java/cn/bmob/imdemo/adapter/SearchUserHolder.java: -------------------------------------------------------------------------------- 1 | package cn.bmob.imdemo.adapter; 2 | 3 | import android.content.Context; 4 | import android.os.Bundle; 5 | import android.view.View; 6 | import android.view.ViewGroup; 7 | import android.widget.Button; 8 | import android.widget.ImageView; 9 | import android.widget.TextView; 10 | 11 | import butterknife.Bind; 12 | import cn.bmob.imdemo.R; 13 | import cn.bmob.imdemo.adapter.base.BaseViewHolder; 14 | import cn.bmob.imdemo.base.ImageLoaderFactory; 15 | import cn.bmob.imdemo.bean.User; 16 | import cn.bmob.imdemo.ui.UserInfoActivity; 17 | 18 | public class SearchUserHolder extends BaseViewHolder { 19 | 20 | @Bind(R.id.avatar) 21 | public ImageView avatar; 22 | @Bind(R.id.name) 23 | public TextView name; 24 | @Bind(R.id.btn_add) 25 | public Button btn_add; 26 | 27 | public SearchUserHolder(Context context, ViewGroup root,OnRecyclerViewListener onRecyclerViewListener) { 28 | super(context, root, R.layout.item_search_user,onRecyclerViewListener); 29 | } 30 | 31 | @Override 32 | public void bindData(Object o) { 33 | final User user =(User)o; 34 | ImageLoaderFactory.getLoader().loadAvator(avatar,user.getAvatar(), R.mipmap.head); 35 | name.setText(user.getUsername()); 36 | btn_add.setOnClickListener(new View.OnClickListener() { 37 | @Override 38 | public void onClick(View v) {//查看个人详情 39 | Bundle bundle = new Bundle(); 40 | bundle.putSerializable("u", user); 41 | startActivity(UserInfoActivity.class,bundle); 42 | } 43 | }); 44 | } 45 | } -------------------------------------------------------------------------------- /NewIM/app/src/main/res/layout/include_chat_add.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 20 | 30 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /NewIM/app/src/main/java/cn/bmob/imdemo/util/DisplayConfig.java: -------------------------------------------------------------------------------- 1 | package cn.bmob.imdemo.util; 2 | 3 | import android.graphics.Bitmap; 4 | 5 | import com.nostra13.universalimageloader.core.DisplayImageOptions; 6 | import com.nostra13.universalimageloader.core.assist.ImageScaleType; 7 | import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer; 8 | 9 | /** 10 | * @author :smile 11 | * @project:DisplayConfig 12 | * @date :2016-01-25-09:19 13 | * 注:由于Picasso圆角处理不够完美,故舍弃 14 | */ 15 | public class DisplayConfig { 16 | 17 | /**UIL默认的显示配置:圆角 18 | * @param defaultRes 19 | * @return 20 | */ 21 | public static DisplayImageOptions getDefaultOptions(boolean hasRounded,int defaultRes){ 22 | DisplayImageOptions.Builder builder = new DisplayImageOptions.Builder() 23 | .cacheInMemory(true)//设置下载的图片是否缓存在内存中 24 | .cacheOnDisc(true)//设置下载的图片是否缓存在SD卡中 25 | .considerExifParams(true) //是否考虑JPEG图像EXIF参数(旋转,翻转) 26 | .imageScaleType(ImageScaleType.EXACTLY_STRETCHED)//设置图片以如何的编码方式显示 27 | .bitmapConfig(Bitmap.Config.RGB_565)//设置图片的解码类型:设置为RGB565比起默认的ARGB_8888要节省大量的内存 28 | // .delayBeforeLoading(100)//载入图片前稍做延时可以提高整体滑动的流畅度 29 | .resetViewBeforeLoading(true);//设置图片在下载前是否重置,复位 30 | if(hasRounded){ 31 | builder.displayer(new RoundedBitmapDisplayer(12));//是否设置为圆角,弧度为多少 32 | } 33 | if(defaultRes!=0){ 34 | builder.showImageForEmptyUri(defaultRes)//设置图片Uri为空或是错误的时候显示的图片 35 | // .showImageOnLoading(defaultRes) //设置图片在下载期间显示的图片-->应该去掉-会造成ListView中图片闪烁 36 | .showImageOnFail(defaultRes); //设置图片加载/解码过程中错误时候显示的图片 37 | } 38 | return builder.build();//构建完成 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /NewIM/app/src/main/res/layout/item_search_user.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 13 | 14 | 22 | 23 | 32 | 33 |