├── .gitignore ├── .idea ├── .name ├── compiler.xml ├── copyright │ └── profiles_settings.xml ├── encodings.xml ├── misc.xml ├── modules.xml ├── runConfigurations.xml └── vcs.xml ├── LICENSE ├── README.md ├── app ├── .gitignore ├── build.gradle ├── libs │ └── BaiduLBS_Android.jar ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── rance │ │ └── chatui │ │ └── ApplicationTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── rance │ │ │ └── chatui │ │ │ ├── adapter │ │ │ ├── ChatAdapter.java │ │ │ ├── CommonFragmentPagerAdapter.java │ │ │ ├── ContactAdapter.java │ │ │ ├── EmotionGridViewAdapter.java │ │ │ ├── EmotionPagerAdapter.java │ │ │ └── holder │ │ │ │ ├── BaseViewHolder.java │ │ │ │ ├── ChatAcceptViewHolder.java │ │ │ │ └── ChatSendViewHolder.java │ │ │ ├── base │ │ │ ├── BaseFragment.java │ │ │ └── MyApplication.java │ │ │ ├── enity │ │ │ ├── FullImageInfo.java │ │ │ ├── IMContact.java │ │ │ ├── Link.java │ │ │ └── MessageInfo.java │ │ │ ├── ui │ │ │ ├── activity │ │ │ │ ├── ContactActivity.java │ │ │ │ ├── FullImageActivity.java │ │ │ │ └── IMActivity.java │ │ │ └── fragment │ │ │ │ ├── ChatEmotionFragment.java │ │ │ │ └── ChatFunctionFragment.java │ │ │ ├── util │ │ │ ├── AudioRecorderUtils.java │ │ │ ├── CheckPermissionUtils.java │ │ │ ├── Constants.java │ │ │ ├── EmotionUtils.java │ │ │ ├── FileUtils.java │ │ │ ├── GifOpenHelper.java │ │ │ ├── GlobalOnItemClickManagerUtils.java │ │ │ ├── MediaManager.java │ │ │ ├── MessageCenter.java │ │ │ ├── PhotoUtils.java │ │ │ ├── PopupWindowFactory.java │ │ │ └── Utils.java │ │ │ └── widget │ │ │ ├── BubbleDrawable.java │ │ │ ├── BubbleImageView.java │ │ │ ├── BubbleLinearLayout.java │ │ │ ├── ChatContextMenu.java │ │ │ ├── EmotionInputDetector.java │ │ │ ├── GifTextView.java │ │ │ ├── IndicatorView.java │ │ │ ├── NoScrollViewPager.java │ │ │ └── StateButton.java │ ├── jniLibs │ │ ├── arm64-v8a │ │ │ ├── libBaiduMapSDK_base_v4_3_2.so │ │ │ ├── libBaiduMapSDK_map_v4_3_2.so │ │ │ └── liblocSDK7a.so │ │ ├── armeabi-v7a │ │ │ ├── libBaiduMapSDK_base_v4_3_2.so │ │ │ ├── libBaiduMapSDK_map_v4_3_2.so │ │ │ └── liblocSDK7a.so │ │ ├── armeabi │ │ │ ├── libBaiduMapSDK_base_v4_3_2.so │ │ │ ├── libBaiduMapSDK_map_v4_3_2.so │ │ │ └── liblocSDK7a.so │ │ ├── x86 │ │ │ ├── libBaiduMapSDK_base_v4_3_2.so │ │ │ ├── libBaiduMapSDK_map_v4_3_2.so │ │ │ └── liblocSDK7a.so │ │ └── x86_64 │ │ │ ├── libBaiduMapSDK_base_v4_3_2.so │ │ │ ├── libBaiduMapSDK_map_v4_3_2.so │ │ │ └── liblocSDK7a.so │ └── res │ │ ├── drawable │ │ ├── bg_circle_gary.xml │ │ ├── bg_circle_white.xml │ │ ├── bg_message.9.png │ │ ├── bg_surname.xml │ │ ├── compose_emotion_delete.png │ │ ├── corners_edit.xml │ │ ├── corners_edit_white.xml │ │ ├── divider.xml │ │ ├── emotion_aini.png │ │ ├── emotion_aini_gif.gif │ │ ├── emotion_aiqing.png │ │ ├── emotion_aiqing_gif.gif │ │ ├── emotion_aixin.png │ │ ├── emotion_aixin_gif.gif │ │ ├── emotion_aoman.png │ │ ├── emotion_aoman_gif.gif │ │ ├── emotion_baiyan.png │ │ ├── emotion_baiyan_gif.gif │ │ ├── emotion_bangbangtang.png │ │ ├── emotion_bangbangtang_gif.gif │ │ ├── emotion_baobao.png │ │ ├── emotion_baobao_gif.gif │ │ ├── emotion_baojing.png │ │ ├── emotion_baojing_gif.gif │ │ ├── emotion_baoquan.png │ │ ├── emotion_baoquan_gif.gif │ │ ├── emotion_bianbian.png │ │ ├── emotion_bianbian_gif.gif │ │ ├── emotion_bianpao.png │ │ ├── emotion_bianpao_gif.gif │ │ ├── emotion_biezui.png │ │ ├── emotion_biezui_gif.gif │ │ ├── emotion_bishi.png │ │ ├── emotion_bishi_gif.gif │ │ ├── emotion_bizui.png │ │ ├── emotion_bizui_gif.gif │ │ ├── emotion_cahan.png │ │ ├── emotion_cahan_gif.gif │ │ ├── emotion_caidao.png │ │ ├── emotion_caidao_gif.gif │ │ ├── emotion_caiqiu.png │ │ ├── emotion_caiqiu_gif.gif │ │ ├── emotion_chajing.png │ │ ├── emotion_chajing_gif.gif │ │ ├── emotion_chaopiao.png │ │ ├── emotion_chaopiao_gif.gif │ │ ├── emotion_chexiang.png │ │ ├── emotion_chexiang_gif.gif │ │ ├── emotion_ciya.png │ │ ├── emotion_ciya_gif.gif │ │ ├── emotion_dabing.png │ │ ├── emotion_dabing_gif.gif │ │ ├── emotion_daku.png │ │ ├── emotion_daku_gif.gif │ │ ├── emotion_dangao.png │ │ ├── emotion_dangao_gif.gif │ │ ├── emotion_dao.png │ │ ├── emotion_dao_gif.gif │ │ ├── emotion_dashan.png │ │ ├── emotion_dashan_gif.gif │ │ ├── emotion_dashuai.png │ │ ├── emotion_dashuai_gif.gif │ │ ├── emotion_denglong.png │ │ ├── emotion_denglong_gif.gif │ │ ├── emotion_dengpao.png │ │ ├── emotion_dengpao_gif.gif │ │ ├── emotion_deyi.png │ │ ├── emotion_deyi_gif.gif │ │ ├── emotion_diaoxie.png │ │ ├── emotion_diaoxie_gif.gif │ │ ├── emotion_duoyun.png │ │ ├── emotion_duoyun_gif.gif │ │ ├── emotion_facai.png │ │ ├── emotion_facai_gif.gif │ │ ├── emotion_fadai.png │ │ ├── emotion_fadai_gif.gif │ │ ├── emotion_fadou.png │ │ ├── emotion_fadou_gif.gif │ │ ├── emotion_fakuang.png │ │ ├── emotion_fakuang_gif.gif │ │ ├── emotion_fan.png │ │ ├── emotion_fan_gif.gif │ │ ├── emotion_fanu.png │ │ ├── emotion_fanu_gif.gif │ │ ├── emotion_feiji.png │ │ ├── emotion_feiji_gif.gif │ │ ├── emotion_feiwen.png │ │ ├── emotion_feiwen_gif.gif │ │ ├── emotion_fendou.png │ │ ├── emotion_fendou_gif.gif │ │ ├── emotion_fengche.png │ │ ├── emotion_fengche_gif.gif │ │ ├── emotion_ganga.png │ │ ├── emotion_ganga_gif.gif │ │ ├── emotion_gouwu.png │ │ ├── emotion_gouwu_gif.gif │ │ ├── emotion_gouying.png │ │ ├── emotion_gouying_gif.gif │ │ ├── emotion_guzhang.png │ │ ├── emotion_guzhang_gif.gif │ │ ├── emotion_haixiu.png │ │ ├── emotion_haixiu_gif.gif │ │ ├── emotion_hanxiao.png │ │ ├── emotion_hanxiao_gif.gif │ │ ├── emotion_haqian.png │ │ ├── emotion_haqian_gif.gif │ │ ├── emotion_hecai.png │ │ ├── emotion_hecai_gif.gif │ │ ├── emotion_henai.png │ │ ├── emotion_henai_gif.gif │ │ ├── emotion_huaixiao.png │ │ ├── emotion_huaixiao_gif.gif │ │ ├── emotion_huishou.png │ │ ├── emotion_huishou_gif.gif │ │ ├── emotion_huitou.png │ │ ├── emotion_huitou_gif.gif │ │ ├── emotion_jidong.png │ │ ├── emotion_jidong_gif.gif │ │ ├── emotion_jie.png │ │ ├── emotion_jie_gif.gif │ │ ├── emotion_jiewu.png │ │ ├── emotion_jiewu_gif.gif │ │ ├── emotion_jingkong.png │ │ ├── emotion_jingkong_gif.gif │ │ ├── emotion_jingya.png │ │ ├── emotion_jingya_gif.gif │ │ ├── emotion_kafei.png │ │ ├── emotion_kafei_gif.gif │ │ ├── emotion_kaiche.png │ │ ├── emotion_kaiche_gif.gif │ │ ├── emotion_keai.png │ │ ├── emotion_keai_gif.gif │ │ ├── emotion_kelian.png │ │ ├── emotion_kelian_gif.gif │ │ ├── emotion_ketou.png │ │ ├── emotion_ketou_gif.gif │ │ ├── emotion_kge.png │ │ ├── emotion_kge_gif.gif │ │ ├── emotion_koubi.png │ │ ├── emotion_koubi_gif.gif │ │ ├── emotion_ku.png │ │ ├── emotion_ku_gif.gif │ │ ├── emotion_kuaikule.png │ │ ├── emotion_kuaikule_gif.gif │ │ ├── emotion_kulou.png │ │ ├── emotion_kulou_gif.gif │ │ ├── emotion_kun.png │ │ ├── emotion_kun_gif.gif │ │ ├── emotion_lanqiu.png │ │ ├── emotion_lanqiu_gif.gif │ │ ├── emotion_lenghan.png │ │ ├── emotion_lenghan_gif.gif │ │ ├── emotion_liuhan.png │ │ ├── emotion_liuhan_gif.gif │ │ ├── emotion_liulei.png │ │ ├── emotion_liulei_gif.gif │ │ ├── emotion_liwu.png │ │ ├── emotion_liwu_gif.gif │ │ ├── emotion_meigui.png │ │ ├── emotion_meigui_gif.gif │ │ ├── emotion_nanguo.png │ │ ├── emotion_nanguo_gif.gif │ │ ├── emotion_naozhong.png │ │ ├── emotion_naozhong_gif.gif │ │ ├── emotion_no.png │ │ ├── emotion_no_gif.gif │ │ ├── emotion_ok.png │ │ ├── emotion_ok_gif.gif │ │ ├── emotion_ouhuo.png │ │ ├── emotion_ouhuo_gif.gif │ │ ├── emotion_pachong.png │ │ ├── emotion_pachong_gif.gif │ │ ├── emotion_pijiu.png │ │ ├── emotion_pijiu_gif.gif │ │ ├── emotion_pingpang.png │ │ ├── emotion_pingpang_gif.gif │ │ ├── emotion_qiang.png │ │ ├── emotion_qiang_gif.gif │ │ ├── emotion_qiaoda.png │ │ ├── emotion_qiaoda_gif.gif │ │ ├── emotion_qidao.png │ │ ├── emotion_qidao_gif.gif │ │ ├── emotion_qingwa.png │ │ ├── emotion_qingwa_gif.gif │ │ ├── emotion_qinqin.png │ │ ├── emotion_qinqin_gif.gif │ │ ├── emotion_qiudale.png │ │ ├── emotion_qiudale_gif.gif │ │ ├── emotion_quantou.png │ │ ├── emotion_quantou_gif.gif │ │ ├── emotion_ruo.png │ │ ├── emotion_ruo_gif.gif │ │ ├── emotion_se.png │ │ ├── emotion_se_gif.gif │ │ ├── emotion_shafa.png │ │ ├── emotion_shafa_gif.gif │ │ ├── emotion_shandian.png │ │ ├── emotion_shandian_gif.gif │ │ ├── emotion_shengli.png │ │ ├── emotion_shengli_gif.gif │ │ ├── emotion_shiai.png │ │ ├── emotion_shiai_gif.gif │ │ ├── emotion_shouqiang.png │ │ ├── emotion_shouqiang_gif.gif │ │ ├── emotion_shuai.png │ │ ├── emotion_shuai_gif.gif │ │ ├── emotion_shuangxi.png │ │ ├── emotion_shuangxi_gif.gif │ │ ├── emotion_shui.png │ │ ├── emotion_shui_gif.gif │ │ ├── emotion_taiyang.png │ │ ├── emotion_taiyang_gif.gif │ │ ├── emotion_tiaopi.png │ │ ├── emotion_tiaopi_gif.gif │ │ ├── emotion_tiaosheng.png │ │ ├── emotion_tiaosheng_gif.gif │ │ ├── emotion_tiaotiao.png │ │ ├── emotion_tiaotiao_gif.gif │ │ ├── emotion_touxiao.png │ │ ├── emotion_touxiao_gif.gif │ │ ├── emotion_tu.png │ │ ├── emotion_tu_gif.gif │ │ ├── emotion_weiqu.png │ │ ├── emotion_weiqu_gif.gif │ │ ├── emotion_weixiao.png │ │ ├── emotion_weixiao_gif.gif │ │ ├── emotion_woshou.png │ │ ├── emotion_woshou_gif.gif │ │ ├── emotion_xia.png │ │ ├── emotion_xia_gif.gif │ │ ├── emotion_xiamian.png │ │ ├── emotion_xiamian_gif.gif │ │ ├── emotion_xiangjiao.png │ │ ├── emotion_xiangjiao_gif.gif │ │ ├── emotion_xianwen.png │ │ ├── emotion_xianwen_gif.gif │ │ ├── emotion_xiayu.png │ │ ├── emotion_xiayu_gif.gif │ │ ├── emotion_xigua.png │ │ ├── emotion_xigua_gif.gif │ │ ├── emotion_xinsui.png │ │ ├── emotion_xinsui_gif.gif │ │ ├── emotion_xiongmao.png │ │ ├── emotion_xiongmao_gif.gif │ │ ├── emotion_xu.png │ │ ├── emotion_xu_gif.gif │ │ ├── emotion_yao.png │ │ ├── emotion_yao_gif.gif │ │ ├── emotion_yingxian.png │ │ ├── emotion_yingxian_gif.gif │ │ ├── emotion_yiwen.png │ │ ├── emotion_yiwen_gif.gif │ │ ├── emotion_youchexiang.png │ │ ├── emotion_youchexiang_gif.gif │ │ ├── emotion_youhengheng.png │ │ ├── emotion_youhengheng_gif.gif │ │ ├── emotion_youjian.png │ │ ├── emotion_youjian_gif.gif │ │ ├── emotion_youtaiji.png │ │ ├── emotion_youtaiji_gif.gif │ │ ├── emotion_yueliang.png │ │ ├── emotion_yueliang_gif.gif │ │ ├── emotion_yun.png │ │ ├── emotion_yun_gif.gif │ │ ├── emotion_zaijian.png │ │ ├── emotion_zaijian_gif.gif │ │ ├── emotion_zhadan.png │ │ ├── emotion_zhadan_gif.gif │ │ ├── emotion_zhijing.png │ │ ├── emotion_zhijing_gif.gif │ │ ├── emotion_zhuakuang.png │ │ ├── emotion_zhuakuang_gif.gif │ │ ├── emotion_zhuanjie.png │ │ ├── emotion_zhuanjie_gif.gif │ │ ├── emotion_zhuanquan.png │ │ ├── emotion_zhuanquan_gif.gif │ │ ├── emotion_zhuqiu.png │ │ ├── emotion_zhuqiu_gif.gif │ │ ├── emotion_zhutou.png │ │ ├── emotion_zhutou_gif.gif │ │ ├── emotion_zouma.png │ │ ├── emotion_zouma_gif.gif │ │ ├── emotion_zuochetou.png │ │ ├── emotion_zuochetou_gif.gif │ │ ├── emotion_zuohengheng.png │ │ ├── emotion_zuohengheng_gif.gif │ │ ├── emotion_zuotaiji.png │ │ ├── emotion_zuotaiji_gif.gif │ │ ├── msg_state_fail_resend.png │ │ ├── record_microphone.xml │ │ ├── record_microphone_bj.xml │ │ ├── voice_left.xml │ │ └── voice_right.xml │ │ ├── layout │ │ ├── activity_contact.xml │ │ ├── activity_full_image.xml │ │ ├── activity_main.xml │ │ ├── dialog_contact.xml │ │ ├── fragment_chat_emotion.xml │ │ ├── fragment_chat_function.xml │ │ ├── include_reply_layout.xml │ │ ├── item_chat_accept.xml │ │ ├── item_chat_send.xml │ │ ├── item_contact.xml │ │ ├── layout_microphone.xml │ │ └── popup_context_menu.xml │ │ ├── mipmap-hdpi │ │ └── ic_launcher.png │ │ ├── mipmap-mdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ ├── icon_chat_add.png │ │ ├── icon_chat_expression.png │ │ ├── icon_chat_photo.png │ │ ├── icon_chat_photograph.png │ │ ├── icon_chat_voice.png │ │ ├── icon_voice_left1.png │ │ ├── icon_voice_left2.png │ │ ├── icon_voice_left3.png │ │ ├── icon_voice_right1.png │ │ ├── icon_voice_right2.png │ │ ├── icon_voice_right3.png │ │ ├── record_bottom.png │ │ └── record_top.png │ │ ├── mipmap-xxhdpi │ │ ├── bg1.png │ │ ├── ic_launcher.png │ │ ├── icon_add.png │ │ ├── icon_album.png │ │ ├── icon_capture.png │ │ ├── icon_cloud.png │ │ ├── icon_copy.png │ │ ├── icon_face.png │ │ ├── icon_file_excel.png │ │ ├── icon_file_other.png │ │ ├── icon_file_pdf.png │ │ ├── icon_file_ppt.png │ │ ├── icon_file_word.png │ │ ├── icon_im_contact.png │ │ ├── icon_im_file.png │ │ ├── icon_im_location.png │ │ ├── icon_keyboard.png │ │ ├── icon_transmit.png │ │ ├── icon_voice.png │ │ └── pic_preview.jpg │ │ ├── mipmap-xxxhdpi │ │ └── ic_launcher.png │ │ ├── values-w820dp │ │ └── dimens.xml │ │ ├── values │ │ ├── attr.xml │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── strings.xml │ │ └── styles.xml │ │ └── xml │ │ └── file_paths.xml │ └── test │ └── java │ └── com │ └── rance │ └── chatui │ └── ExampleUnitTest.java ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── images └── preview.png └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | # Built application files 2 | *.apk 3 | *.ap_ 4 | 5 | # Files for the ART/Dalvik VM 6 | *.dex 7 | 8 | # Java class files 9 | *.class 10 | 11 | # Generated files 12 | bin/ 13 | gen/ 14 | out/ 15 | 16 | # Gradle files 17 | .gradle/ 18 | build/ 19 | 20 | # Local configuration file (sdk path, etc) 21 | local.properties 22 | 23 | # Proguard folder generated by Eclipse 24 | proguard/ 25 | 26 | # Log Files 27 | *.log 28 | 29 | # Android Studio Navigation editor temp files 30 | .navigation/ 31 | 32 | # Android Studio captures folder 33 | captures/ 34 | 35 | # Intellij 36 | *.iml 37 | .idea/workspace.xml 38 | .idea/tasks.xml 39 | .idea/gradle.xml 40 | .idea/dictionaries 41 | .idea/libraries 42 | 43 | # Keystore files 44 | *.jks 45 | 46 | # External native build folder generated in Android Studio 2.2 and later 47 | .externalNativeBuild 48 | 49 | # Google Services (e.g. APIs or Firebase) 50 | google-services.json 51 | 52 | # Freeline 53 | freeline.py 54 | freeline/ 55 | freeline_project_description.json 56 | -------------------------------------------------------------------------------- /.idea/.name: -------------------------------------------------------------------------------- 1 | ChatUI -------------------------------------------------------------------------------- /.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 | -------------------------------------------------------------------------------- /.idea/copyright/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 19 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 46 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 修改自开源项目:https://github.com/Rance935/ChatUI 2 | 3 | ## 修改内容 4 | + 替换部分图片资源 5 | + 用源生RecyclerView替换了EasyRecyclerView,比较相信官方。 6 | + 修复拍照在7.0系统中无法获取权限问题。 7 | + 增加文件分享,点击文件打开。 8 | + 增加联系人信息分享。 9 | + 长按消息弹出上下文菜单 10 | + 注册app到系统分享面板,能够处理分享自外部的URL、图片、文档。 11 | 12 | ## 截图 13 | ![image](https://github.com/stridercheng/chatui/raw/master/images/preview.png) 14 | 15 | ## 问题 16 | 代码结构待优化 17 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 24 5 | buildToolsVersion "24.0.2" 6 | 7 | aaptOptions { 8 | cruncherEnabled = false 9 | } 10 | 11 | defaultConfig { 12 | applicationId "com.rance.chatui" 13 | minSdkVersion 15 14 | targetSdkVersion 24 15 | versionCode 1 16 | versionName "1.0" 17 | } 18 | buildTypes { 19 | release { 20 | minifyEnabled false 21 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 22 | } 23 | } 24 | } 25 | 26 | dependencies { 27 | compile fileTree(dir: 'libs', include: ['*.jar']) 28 | //noinspection GradleCompatible 29 | compile 'com.android.support:appcompat-v7:24.2.1' 30 | compile 'com.android.support:design:24.2.1' 31 | compile 'com.android.support:support-v4:24.2.1' 32 | compile 'org.greenrobot:eventbus:3.0.0' 33 | compile 'com.github.bumptech.glide:glide:3.7.0' 34 | compile 'com.labo.kaji:relativepopupwindow:0.3.1' 35 | compile 'com.android.support.constraint:constraint-layout:1.0.2' 36 | testCompile 'junit:junit:4.12' 37 | } 38 | -------------------------------------------------------------------------------- /app/libs/BaiduLBS_Android.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/libs/BaiduLBS_Android.jar -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in C:\Users\Administrator\AppData\Local\Android\Sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /app/src/androidTest/java/com/rance/chatui/ApplicationTest.java: -------------------------------------------------------------------------------- 1 | package com.rance.chatui; 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 | } -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 27 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 48 | 49 | 54 | 57 | 58 | 59 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /app/src/main/java/com/rance/chatui/adapter/ChatAdapter.java: -------------------------------------------------------------------------------- 1 | package com.rance.chatui.adapter; 2 | 3 | import android.os.Handler; 4 | import android.support.v7.widget.RecyclerView; 5 | import android.view.View; 6 | import android.view.ViewGroup; 7 | import android.widget.ImageView; 8 | 9 | import com.rance.chatui.adapter.holder.BaseViewHolder; 10 | import com.rance.chatui.adapter.holder.ChatAcceptViewHolder; 11 | import com.rance.chatui.adapter.holder.ChatSendViewHolder; 12 | import com.rance.chatui.enity.MessageInfo; 13 | import com.rance.chatui.util.Constants; 14 | 15 | import java.util.ArrayList; 16 | import java.util.List; 17 | 18 | /** 19 | * 作者:Rance on 2016/11/29 10:46 20 | * 邮箱:rance935@163.com 21 | */ 22 | public class ChatAdapter extends RecyclerView.Adapter { 23 | 24 | private onItemClickListener onItemClickListener; 25 | public Handler handler; 26 | private List messageInfoList; 27 | 28 | public ChatAdapter(List messageInfoList) { 29 | handler = new Handler(); 30 | this.messageInfoList = messageInfoList; 31 | } 32 | 33 | // @Override 34 | // public BaseViewHolder OnCreateViewHolder(ViewGroup parent, int viewType) { 35 | // BaseViewHolder viewHolder = null; 36 | // switch (viewType) { 37 | // case Constants.CHAT_ITEM_TYPE_LEFT: 38 | // viewHolder = new ChatAcceptViewHolder(parent, onItemClickListener, handler); 39 | // break; 40 | // case Constants.CHAT_ITEM_TYPE_RIGHT: 41 | // viewHolder = new ChatSendViewHolder(parent, onItemClickListener, handler); 42 | // break; 43 | // } 44 | // return viewHolder; 45 | // } 46 | // 47 | // @Override 48 | // public int getViewType(int position) { 49 | // return getAllData().get(position).getType(); 50 | // } 51 | 52 | public void addItemClickListener(onItemClickListener onItemClickListener) { 53 | this.onItemClickListener = onItemClickListener; 54 | } 55 | 56 | @Override 57 | public BaseViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 58 | BaseViewHolder viewHolder = null; 59 | switch (viewType) { 60 | case Constants.CHAT_ITEM_TYPE_LEFT: 61 | viewHolder = new ChatAcceptViewHolder(parent, onItemClickListener, handler); 62 | break; 63 | case Constants.CHAT_ITEM_TYPE_RIGHT: 64 | viewHolder = new ChatSendViewHolder(parent, onItemClickListener, handler); 65 | break; 66 | } 67 | return viewHolder; 68 | } 69 | 70 | @Override 71 | public void onBindViewHolder(BaseViewHolder holder, int position) { 72 | holder.itemView.setTag(position); 73 | holder.setData(messageInfoList.get(position)); 74 | } 75 | 76 | @Override 77 | public int getItemViewType(int position) { 78 | return messageInfoList.get(position).getType(); 79 | } 80 | 81 | @Override 82 | public int getItemCount() { 83 | if (messageInfoList == null) { 84 | return 0; 85 | } else { 86 | return messageInfoList.size(); 87 | } 88 | } 89 | 90 | public void addAll(List messageInfos) { 91 | if (messageInfoList == null) { 92 | messageInfoList = messageInfos; 93 | } else { 94 | messageInfoList.addAll(messageInfos); 95 | } 96 | 97 | notifyDataSetChanged(); 98 | } 99 | 100 | public void add(MessageInfo messageInfo) { 101 | if (messageInfoList == null) { 102 | messageInfoList = new ArrayList<>(); 103 | } 104 | 105 | messageInfoList.add(messageInfo); 106 | 107 | notifyDataSetChanged(); 108 | } 109 | 110 | public interface onItemClickListener { 111 | void onHeaderClick(int position); 112 | 113 | void onImageClick(View view, int position); 114 | 115 | void onVoiceClick(ImageView imageView, int position); 116 | 117 | void onFileClick(View view, int position); 118 | 119 | void onLinkClick(View view, int position); 120 | 121 | void onLongClickImage(View view, int position); 122 | 123 | void onLongClickText(View view, int position); 124 | 125 | void onLongClickItem(View view, int position); 126 | 127 | void onLongClickFile(View view, int position); 128 | 129 | void onLongClickLink(View view, int position); 130 | } 131 | } 132 | -------------------------------------------------------------------------------- /app/src/main/java/com/rance/chatui/adapter/CommonFragmentPagerAdapter.java: -------------------------------------------------------------------------------- 1 | package com.rance.chatui.adapter; 2 | 3 | import android.support.v4.app.Fragment; 4 | import android.support.v4.app.FragmentManager; 5 | import android.support.v4.app.FragmentPagerAdapter; 6 | 7 | import java.util.ArrayList; 8 | 9 | /** 10 | * 作者:Rance on 2016/11/25 16:36 11 | * 邮箱:rance935@163.com 12 | */ 13 | public class CommonFragmentPagerAdapter extends FragmentPagerAdapter { 14 | ArrayList list; 15 | 16 | public CommonFragmentPagerAdapter(FragmentManager fm, ArrayList list) { 17 | super(fm); 18 | this.list = list; 19 | } 20 | 21 | @Override 22 | public Fragment getItem(int position) { 23 | return list.get(position); 24 | } 25 | 26 | @Override 27 | public int getCount() { 28 | return list != null ? list.size() : 0; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /app/src/main/java/com/rance/chatui/adapter/ContactAdapter.java: -------------------------------------------------------------------------------- 1 | package com.rance.chatui.adapter; 2 | 3 | import android.support.v7.widget.RecyclerView; 4 | import android.view.LayoutInflater; 5 | import android.view.View; 6 | import android.view.ViewGroup; 7 | import android.widget.TextView; 8 | 9 | import com.rance.chatui.R; 10 | import com.rance.chatui.enity.IMContact; 11 | 12 | import java.util.List; 13 | 14 | 15 | /** 16 | * Created by chengz 17 | * 18 | * @date 2017/8/3. 19 | */ 20 | 21 | public class ContactAdapter extends RecyclerView.Adapter 22 | implements View.OnClickListener { 23 | private List imContactList; 24 | private OnContactClickListener mOnContactClickListener; 25 | 26 | public ContactAdapter(List imContactList) { 27 | this.imContactList = imContactList; 28 | } 29 | @Override 30 | public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 31 | View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_contact, parent, false); 32 | ViewHolder viewHolder = new ViewHolder(view); 33 | viewHolder.itemView.setOnClickListener(this); 34 | return viewHolder; 35 | } 36 | 37 | @Override 38 | public void onBindViewHolder(ViewHolder holder, int position) { 39 | IMContact imContact = imContactList.get(position); 40 | holder.tvName.setText(imContact.getName()); 41 | holder.tvPhone.setText(imContact.getPhonenumber()); 42 | 43 | holder.itemView.setTag(imContact); 44 | } 45 | 46 | @Override 47 | public int getItemCount() { 48 | return imContactList.size(); 49 | } 50 | 51 | @Override 52 | public void onClick(View v) { 53 | if (mOnContactClickListener == null) { 54 | return; 55 | } 56 | 57 | mOnContactClickListener.onContactClick(v, (IMContact) v.getTag()); 58 | } 59 | 60 | public class ViewHolder extends RecyclerView.ViewHolder { 61 | TextView tvName; 62 | TextView tvPhone; 63 | public ViewHolder(View itemView) { 64 | super(itemView); 65 | tvName = (TextView) itemView.findViewById(R.id.tv_name); 66 | tvPhone = (TextView) itemView.findViewById(R.id.tv_phone); 67 | } 68 | } 69 | 70 | public interface OnContactClickListener { 71 | void onContactClick(View view, IMContact imContact); 72 | } 73 | 74 | public void setOnContactClickListener(OnContactClickListener onContactClickListener) { 75 | this.mOnContactClickListener = onContactClickListener; 76 | } 77 | 78 | } 79 | -------------------------------------------------------------------------------- /app/src/main/java/com/rance/chatui/adapter/EmotionGridViewAdapter.java: -------------------------------------------------------------------------------- 1 | package com.rance.chatui.adapter; 2 | 3 | import android.content.Context; 4 | import android.view.View; 5 | import android.view.ViewGroup; 6 | import android.widget.AbsListView.LayoutParams; 7 | import android.widget.BaseAdapter; 8 | import android.widget.ImageView; 9 | 10 | import com.rance.chatui.R; 11 | import com.rance.chatui.util.EmotionUtils; 12 | 13 | import java.util.List; 14 | /** 15 | * 作者:Rance on 2016/11/29 10:47 16 | * 邮箱:rance935@163.com 17 | */ 18 | public class EmotionGridViewAdapter extends BaseAdapter { 19 | 20 | private Context context; 21 | private List emotionNames; 22 | private int itemWidth; 23 | 24 | public EmotionGridViewAdapter(Context context, List emotionNames, int itemWidth) { 25 | this.context = context; 26 | this.emotionNames = emotionNames; 27 | this.itemWidth = itemWidth; 28 | } 29 | 30 | @Override 31 | public int getCount() { 32 | // +1 最后一个为删除按钮 33 | return emotionNames.size() + 1; 34 | } 35 | 36 | @Override 37 | public String getItem(int position) { 38 | return emotionNames.get(position); 39 | } 40 | 41 | @Override 42 | public long getItemId(int position) { 43 | return position; 44 | } 45 | 46 | @Override 47 | public View getView(int position, View convertView, ViewGroup parent) { 48 | ImageView iv_emotion = new ImageView(context); 49 | // 设置内边距 50 | iv_emotion.setPadding(itemWidth / 8, itemWidth / 8, itemWidth / 8, itemWidth / 8); 51 | LayoutParams params = new LayoutParams(itemWidth, itemWidth); 52 | iv_emotion.setLayoutParams(params); 53 | 54 | //判断是否为最后一个item 55 | if (position == getCount() - 1) { 56 | iv_emotion.setImageResource(R.drawable.compose_emotion_delete); 57 | } else { 58 | String emotionName = emotionNames.get(position); 59 | iv_emotion.setImageResource(EmotionUtils.EMOTION_STATIC_MAP.get(emotionName)); 60 | } 61 | 62 | return iv_emotion; 63 | } 64 | 65 | } 66 | -------------------------------------------------------------------------------- /app/src/main/java/com/rance/chatui/adapter/EmotionPagerAdapter.java: -------------------------------------------------------------------------------- 1 | package com.rance.chatui.adapter; 2 | 3 | import android.support.v4.view.PagerAdapter; 4 | import android.support.v4.view.ViewPager; 5 | import android.view.View; 6 | import android.view.ViewGroup; 7 | import android.widget.GridView; 8 | 9 | import java.util.List; 10 | 11 | /** 12 | * 作者:Rance on 2016/11/29 10:47 13 | * 邮箱:rance935@163.com 14 | */ 15 | public class EmotionPagerAdapter extends PagerAdapter { 16 | 17 | private List gvs; 18 | 19 | public EmotionPagerAdapter(List gvs) { 20 | this.gvs = gvs; 21 | } 22 | 23 | @Override 24 | public int getCount() { 25 | return gvs.size(); 26 | } 27 | 28 | @Override 29 | public boolean isViewFromObject(View arg0, Object arg1) { 30 | return arg0 == arg1; 31 | } 32 | 33 | @Override 34 | public void destroyItem(ViewGroup container, int position, Object object) { 35 | ((ViewPager) container).removeView(gvs.get(position)); 36 | } 37 | 38 | @Override 39 | public Object instantiateItem(ViewGroup container, int position) { 40 | ((ViewPager) container).addView(gvs.get(position)); 41 | return gvs.get(position); 42 | } 43 | 44 | } 45 | -------------------------------------------------------------------------------- /app/src/main/java/com/rance/chatui/adapter/holder/BaseViewHolder.java: -------------------------------------------------------------------------------- 1 | package com.rance.chatui.adapter.holder; 2 | 3 | import android.support.v7.widget.RecyclerView; 4 | import android.view.View; 5 | 6 | /** 7 | * Created by chengz 8 | * 9 | * @date 2017/8/3. 10 | */ 11 | 12 | public class BaseViewHolder extends RecyclerView.ViewHolder { 13 | 14 | public BaseViewHolder(View itemView) { 15 | super(itemView); 16 | } 17 | 18 | public void setData(M data) { 19 | 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /app/src/main/java/com/rance/chatui/base/BaseFragment.java: -------------------------------------------------------------------------------- 1 | package com.rance.chatui.base; 2 | 3 | 4 | import android.app.Activity; 5 | import android.app.ProgressDialog; 6 | import android.os.Bundle; 7 | import android.support.annotation.Nullable; 8 | import android.support.v4.app.Fragment; 9 | import android.view.LayoutInflater; 10 | import android.view.View; 11 | import android.view.ViewGroup; 12 | import android.widget.Toast; 13 | 14 | /** 15 | * 作者:Rance on 2016/11/18 15:19 16 | * 邮箱:rance935@163.com 17 | */ 18 | public class BaseFragment extends Fragment { 19 | public Activity mActivity; 20 | 21 | @Nullable 22 | @Override 23 | public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 24 | mActivity = getActivity(); 25 | return super.onCreateView(inflater, container, savedInstanceState); 26 | } 27 | 28 | @Override 29 | public void onViewCreated(View view, Bundle savedInstanceState) { 30 | super.onViewCreated(view, savedInstanceState); 31 | mActivity = getActivity(); 32 | } 33 | 34 | public void toastShow(int resId) { 35 | Toast.makeText(mActivity, resId, Toast.LENGTH_SHORT).show(); 36 | } 37 | 38 | public void toastShow(String resId) { 39 | Toast.makeText(mActivity, resId, Toast.LENGTH_SHORT).show(); 40 | } 41 | 42 | public ProgressDialog progressDialog; 43 | 44 | public ProgressDialog showProgressDialog() { 45 | progressDialog = new ProgressDialog(mActivity); 46 | progressDialog.setMessage("加载中"); 47 | progressDialog.show(); 48 | return progressDialog; 49 | } 50 | 51 | public ProgressDialog showProgressDialog(CharSequence message) { 52 | progressDialog = new ProgressDialog(mActivity); 53 | progressDialog.setMessage(message); 54 | progressDialog.show(); 55 | return progressDialog; 56 | } 57 | 58 | public void dismissProgressDialog() { 59 | if (progressDialog != null && progressDialog.isShowing()) { 60 | // progressDialog.hide();会导致android.view.WindowLeaked 61 | progressDialog.dismiss(); 62 | } 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /app/src/main/java/com/rance/chatui/base/MyApplication.java: -------------------------------------------------------------------------------- 1 | package com.rance.chatui.base; 2 | 3 | import android.app.Application; 4 | import android.content.Context; 5 | import android.util.DisplayMetrics; 6 | 7 | /** 8 | * 作者:Rance on 2016/12/20 16:49 9 | * 邮箱:rance935@163.com 10 | */ 11 | public class MyApplication extends Application { 12 | private static MyApplication mInstance; 13 | public static Context mContext; 14 | /** 15 | * 屏幕宽度 16 | */ 17 | public static int screenWidth; 18 | /** 19 | * 屏幕高度 20 | */ 21 | public static int screenHeight; 22 | /** 23 | * 屏幕密度 24 | */ 25 | public static float screenDensity; 26 | 27 | @Override 28 | public void onCreate() { 29 | super.onCreate(); 30 | mContext = getApplicationContext(); 31 | mInstance = this; 32 | initScreenSize(); 33 | } 34 | 35 | public static Context getInstance() { 36 | return mInstance; 37 | } 38 | 39 | /** 40 | * 初始化当前设备屏幕宽高 41 | */ 42 | private void initScreenSize() { 43 | DisplayMetrics curMetrics = getApplicationContext().getResources().getDisplayMetrics(); 44 | screenWidth = curMetrics.widthPixels; 45 | screenHeight = curMetrics.heightPixels; 46 | screenDensity = curMetrics.density; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /app/src/main/java/com/rance/chatui/enity/FullImageInfo.java: -------------------------------------------------------------------------------- 1 | package com.rance.chatui.enity; 2 | 3 | /** 4 | * 作者:Rance on 2016/12/21 16:22 5 | * 邮箱:rance935@163.com 6 | */ 7 | public class FullImageInfo { 8 | private int locationX; 9 | private int locationY; 10 | private int width; 11 | private int height; 12 | private String imageUrl; 13 | 14 | public int getLocationX() { 15 | return locationX; 16 | } 17 | 18 | public void setLocationX(int locationX) { 19 | this.locationX = locationX; 20 | } 21 | 22 | public int getLocationY() { 23 | return locationY; 24 | } 25 | 26 | public void setLocationY(int locationY) { 27 | this.locationY = locationY; 28 | } 29 | 30 | public int getWidth() { 31 | return width; 32 | } 33 | 34 | public void setWidth(int width) { 35 | this.width = width; 36 | } 37 | 38 | public int getHeight() { 39 | return height; 40 | } 41 | 42 | public void setHeight(int height) { 43 | this.height = height; 44 | } 45 | 46 | public String getImageUrl() { 47 | return imageUrl; 48 | } 49 | 50 | public void setImageUrl(String imageUrl) { 51 | this.imageUrl = imageUrl; 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /app/src/main/java/com/rance/chatui/enity/IMContact.java: -------------------------------------------------------------------------------- 1 | package com.rance.chatui.enity; 2 | 3 | /** 4 | * Created by chengz 5 | * 6 | * @date 2017/8/3. 7 | */ 8 | 9 | public class IMContact { 10 | String name, phonenumber, surname; 11 | 12 | public IMContact(String name, String phonenumber) { 13 | this.name = name; 14 | this.phonenumber = phonenumber; 15 | } 16 | 17 | public String getName() { 18 | return name; 19 | } 20 | 21 | public void setName(String name) { 22 | this.name = name; 23 | } 24 | 25 | public String getPhonenumber() { 26 | return phonenumber; 27 | } 28 | 29 | public void setPhonenumber(String phonenumber) { 30 | this.phonenumber = phonenumber; 31 | } 32 | 33 | public String getSurname() { 34 | return surname; 35 | } 36 | 37 | public void setSurname(String surname) { 38 | this.surname = surname; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /app/src/main/java/com/rance/chatui/enity/Link.java: -------------------------------------------------------------------------------- 1 | package com.rance.chatui.enity; 2 | 3 | /** 4 | * Created by chengz 5 | * 6 | * @date 2017/8/4. 7 | */ 8 | 9 | public class Link { 10 | String subject, text, stream, url; 11 | 12 | public String getSubject() { 13 | return subject; 14 | } 15 | 16 | public void setSubject(String subject) { 17 | this.subject = subject; 18 | } 19 | 20 | public String getText() { 21 | return text; 22 | } 23 | 24 | public void setText(String text) { 25 | this.text = text; 26 | } 27 | 28 | public String getStream() { 29 | return stream; 30 | } 31 | 32 | public void setStream(String stream) { 33 | this.stream = stream; 34 | } 35 | 36 | public String getUrl() { 37 | return url; 38 | } 39 | 40 | public void setUrl(String url) { 41 | this.url = url; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /app/src/main/java/com/rance/chatui/enity/MessageInfo.java: -------------------------------------------------------------------------------- 1 | package com.rance.chatui.enity; 2 | 3 | /** 4 | * 作者:Rance on 2016/12/14 14:13 5 | * 邮箱:rance935@163.com 6 | */ 7 | public class MessageInfo { 8 | private int type; 9 | private String content; 10 | private String filepath; 11 | private int sendState; 12 | private String time; 13 | private String header; 14 | private long voiceTime; 15 | private String msgId; 16 | private String fileType; 17 | private Object object; 18 | private String mimeType; 19 | 20 | public Object getObject() { 21 | return object; 22 | } 23 | 24 | public void setObject(Object object) { 25 | this.object = object; 26 | } 27 | 28 | public String getFileType() { 29 | return fileType; 30 | } 31 | 32 | public void setFileType(String fileType) { 33 | this.fileType = fileType; 34 | } 35 | 36 | public int getType() { 37 | return type; 38 | } 39 | 40 | public void setType(int type) { 41 | this.type = type; 42 | } 43 | 44 | public String getContent() { 45 | return content; 46 | } 47 | 48 | public void setContent(String content) { 49 | this.content = content; 50 | } 51 | 52 | public String getFilepath() { 53 | return filepath; 54 | } 55 | 56 | public void setFilepath(String filepath) { 57 | this.filepath = filepath; 58 | } 59 | 60 | public int getSendState() { 61 | return sendState; 62 | } 63 | 64 | public void setSendState(int sendState) { 65 | this.sendState = sendState; 66 | } 67 | 68 | public String getTime() { 69 | return time; 70 | } 71 | 72 | public void setTime(String time) { 73 | this.time = time; 74 | } 75 | 76 | public String getHeader() { 77 | return header; 78 | } 79 | 80 | public void setHeader(String header) { 81 | this.header = header; 82 | } 83 | 84 | public long getVoiceTime() { 85 | return voiceTime; 86 | } 87 | 88 | public void setVoiceTime(long voiceTime) { 89 | this.voiceTime = voiceTime; 90 | } 91 | 92 | public String getMsgId() { 93 | return msgId; 94 | } 95 | 96 | public void setMsgId(String msgId) { 97 | this.msgId = msgId; 98 | } 99 | 100 | public String getMimeType() { 101 | return mimeType; 102 | } 103 | 104 | public void setMimeType(String mimeType) { 105 | this.mimeType = mimeType; 106 | } 107 | 108 | @Override 109 | public String toString() { 110 | return "MessageInfo{" + 111 | "type=" + type + 112 | ", content='" + content + '\'' + 113 | ", filepath='" + filepath + '\'' + 114 | ", sendState=" + sendState + 115 | ", time='" + time + '\'' + 116 | ", header='" + header + '\'' + 117 | ", mimeType='" + mimeType + '\'' + 118 | ", voiceTime=" + voiceTime + 119 | ", msgId='" + msgId + '\'' + 120 | ", fileType='" + fileType + '\'' + 121 | ", object=" + object + 122 | '}'; 123 | } 124 | } 125 | -------------------------------------------------------------------------------- /app/src/main/java/com/rance/chatui/ui/activity/FullImageActivity.java: -------------------------------------------------------------------------------- 1 | package com.rance.chatui.ui.activity; 2 | 3 | import android.animation.ObjectAnimator; 4 | import android.annotation.TargetApi; 5 | import android.app.Activity; 6 | import android.graphics.Color; 7 | import android.graphics.drawable.ColorDrawable; 8 | import android.graphics.drawable.Drawable; 9 | import android.os.Build; 10 | import android.os.Bundle; 11 | import android.view.View; 12 | import android.view.ViewTreeObserver; 13 | import android.view.Window; 14 | import android.view.WindowManager; 15 | import android.view.animation.DecelerateInterpolator; 16 | import android.widget.ImageView; 17 | import android.widget.LinearLayout; 18 | 19 | import com.bumptech.glide.Glide; 20 | import com.rance.chatui.R; 21 | import com.rance.chatui.enity.FullImageInfo; 22 | 23 | import org.greenrobot.eventbus.EventBus; 24 | import org.greenrobot.eventbus.Subscribe; 25 | import org.greenrobot.eventbus.ThreadMode; 26 | 27 | 28 | /** 29 | * 作者:Rance on 2016/12/15 15:56 30 | * 邮箱:rance935@163.com 31 | */ 32 | public class FullImageActivity extends Activity { 33 | 34 | ImageView fullImage; 35 | LinearLayout fullLay; 36 | private int mLeft; 37 | private int mTop; 38 | private float mScaleX; 39 | private float mScaleY; 40 | private Drawable mBackground; 41 | 42 | @Override 43 | protected void onCreate(Bundle savedInstanceState) { 44 | super.onCreate(savedInstanceState); 45 | requestWindowFeature(Window.FEATURE_NO_TITLE); 46 | setContentView(R.layout.activity_full_image); 47 | fullImage = (ImageView) findViewById(R.id.full_image); 48 | fullLay = (LinearLayout) findViewById(R.id.full_lay); 49 | 50 | fullImage.setOnClickListener(new View.OnClickListener() { 51 | @Override 52 | public void onClick(View v) { 53 | onImageClick(); 54 | } 55 | }); 56 | 57 | EventBus.getDefault().register(this); 58 | } 59 | 60 | @TargetApi(Build.VERSION_CODES.JELLY_BEAN) 61 | @Subscribe(threadMode = ThreadMode.MAIN, sticky = true) //在ui线程执行 62 | public void onDataSynEvent(final FullImageInfo fullImageInfo) { 63 | final int left = fullImageInfo.getLocationX(); 64 | final int top = fullImageInfo.getLocationY(); 65 | final int width = fullImageInfo.getWidth(); 66 | final int height = fullImageInfo.getHeight(); 67 | mBackground = new ColorDrawable(Color.BLACK); 68 | fullLay.setBackground(mBackground); 69 | fullImage.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { 70 | @Override 71 | public boolean onPreDraw() { 72 | fullImage.getViewTreeObserver().removeOnPreDrawListener(this); 73 | int location[] = new int[2]; 74 | fullImage.getLocationOnScreen(location); 75 | mLeft = left - location[0]; 76 | mTop = top - location[1]; 77 | mScaleX = width * 1.0f / fullImage.getWidth(); 78 | mScaleY = height * 1.0f / fullImage.getHeight(); 79 | activityEnterAnim(); 80 | return true; 81 | } 82 | }); 83 | Glide.with(this).load(fullImageInfo.getImageUrl()).into(fullImage); 84 | } 85 | 86 | private void activityEnterAnim() { 87 | fullImage.setPivotX(0); 88 | fullImage.setPivotY(0); 89 | fullImage.setScaleX(mScaleX); 90 | fullImage.setScaleY(mScaleY); 91 | fullImage.setTranslationX(mLeft); 92 | fullImage.setTranslationY(mTop); 93 | fullImage.animate().scaleX(1).scaleY(1).translationX(0).translationY(0). 94 | setDuration(500).setInterpolator(new DecelerateInterpolator()).start(); 95 | ObjectAnimator objectAnimator = ObjectAnimator.ofInt(mBackground, "alpha", 0, 255); 96 | objectAnimator.setInterpolator(new DecelerateInterpolator()); 97 | objectAnimator.setDuration(500); 98 | objectAnimator.start(); 99 | } 100 | 101 | @TargetApi(Build.VERSION_CODES.JELLY_BEAN) 102 | private void activityExitAnim(Runnable runnable) { 103 | fullImage.setPivotX(0); 104 | fullImage.setPivotY(0); 105 | fullImage.animate().scaleX(mScaleX).scaleY(mScaleY).translationX(mLeft).translationY(mTop). 106 | withEndAction(runnable). 107 | setDuration(500).setInterpolator(new DecelerateInterpolator()).start(); 108 | ObjectAnimator objectAnimator = ObjectAnimator.ofInt(mBackground, "alpha", 255, 0); 109 | objectAnimator.setInterpolator(new DecelerateInterpolator()); 110 | objectAnimator.setDuration(500); 111 | objectAnimator.start(); 112 | } 113 | 114 | @Override 115 | public void onBackPressed() { 116 | activityExitAnim(new Runnable() { 117 | @Override 118 | public void run() { 119 | finish(); 120 | overridePendingTransition(0, 0); 121 | } 122 | }); 123 | } 124 | 125 | public void onImageClick() { 126 | activityExitAnim(new Runnable() { 127 | @Override 128 | public void run() { 129 | finish(); 130 | overridePendingTransition(0, 0); 131 | } 132 | }); 133 | } 134 | 135 | @Override 136 | protected void onDestroy() { 137 | EventBus.getDefault().unregister(this); 138 | super.onDestroy(); 139 | } 140 | 141 | } 142 | -------------------------------------------------------------------------------- /app/src/main/java/com/rance/chatui/util/CheckPermissionUtils.java: -------------------------------------------------------------------------------- 1 | package com.rance.chatui.util; 2 | 3 | import android.content.Context; 4 | import android.content.DialogInterface; 5 | import android.content.Intent; 6 | import android.media.AudioFormat; 7 | import android.media.AudioRecord; 8 | import android.media.MediaRecorder; 9 | import android.provider.Settings; 10 | import android.support.v7.app.AlertDialog; 11 | 12 | /** 13 | * 作者:Rance on 2016/12/14 11:09 14 | * 邮箱:rance935@163.com 15 | */ 16 | public class CheckPermissionUtils { 17 | // 音频获取源 18 | public static int audioSource = MediaRecorder.AudioSource.MIC; 19 | // 设置音频采样率,44100是目前的标准,但是某些设备仍然支持22050,16000,11025 20 | public static int sampleRateInHz = 44100; 21 | // 设置音频的录制的声道CHANNEL_IN_STEREO为双声道,CHANNEL_CONFIGURATION_MONO为单声道 22 | public static int channelConfig = AudioFormat.CHANNEL_IN_STEREO; 23 | // 音频数据格式:PCM 16位每个样本。保证设备支持。PCM 8位每个样本。不一定能得到设备支持。 24 | public static int audioFormat = AudioFormat.ENCODING_PCM_16BIT; 25 | // 缓冲区字节大小 26 | public static int bufferSizeInBytes = 0; 27 | 28 | /** 29 | * 判断是是否有录音权限 30 | */ 31 | public static boolean isHasPermission(final Context context){ 32 | bufferSizeInBytes = 0; 33 | bufferSizeInBytes = AudioRecord.getMinBufferSize(sampleRateInHz, 34 | channelConfig, audioFormat); 35 | AudioRecord audioRecord = new AudioRecord(audioSource, sampleRateInHz, 36 | channelConfig, audioFormat, bufferSizeInBytes); 37 | //开始录制音频 38 | try{ 39 | // 防止某些手机崩溃,例如联想 40 | audioRecord.startRecording(); 41 | }catch (IllegalStateException e){ 42 | e.printStackTrace(); 43 | } 44 | /** 45 | * 根据开始录音判断是否有录音权限 46 | */ 47 | if (audioRecord.getRecordingState() != AudioRecord.RECORDSTATE_RECORDING) { 48 | new AlertDialog.Builder(context) 49 | .setTitle("提示") 50 | .setMessage("经检测语音权限未开启,设置方法:三方手机管理(应用宝、360)->安全->权限管理程序->应用程序->勾选语音权限。或去设置中心找到应用设置权限") 51 | .setNegativeButton("取消", new DialogInterface.OnClickListener() { 52 | @Override 53 | public void onClick(DialogInterface dialog, int which) { 54 | dialog.dismiss(); 55 | } 56 | }) 57 | .setPositiveButton("去设置", new DialogInterface.OnClickListener() { 58 | @Override 59 | public void onClick(DialogInterface dialog, int which) { 60 | dialog.dismiss(); 61 | context.startActivity(new Intent(Settings.ACTION_MANAGE_APPLICATIONS_SETTINGS)); 62 | } 63 | }) 64 | .show(); 65 | return false; 66 | } 67 | audioRecord.stop(); 68 | audioRecord.release(); 69 | audioRecord = null; 70 | return true; 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /app/src/main/java/com/rance/chatui/util/Constants.java: -------------------------------------------------------------------------------- 1 | package com.rance.chatui.util; 2 | 3 | /** 4 | * 作者:Rance on 2016/12/20 16:51 5 | * 邮箱:rance935@163.com 6 | */ 7 | public class Constants { 8 | public static final String TAG = "rance"; 9 | public static final String AUTHORITY = "com.chatui.fileprovider"; 10 | /** 0x001-接受消息 0x002-发送消息**/ 11 | public static final int CHAT_ITEM_TYPE_LEFT = 0x001; 12 | public static final int CHAT_ITEM_TYPE_RIGHT = 0x002; 13 | /** 0x003-发送中 0x004-发送失败 0x005-发送成功**/ 14 | public static final int CHAT_ITEM_SENDING = 0x003; 15 | public static final int CHAT_ITEM_SEND_ERROR = 0x004; 16 | public static final int CHAT_ITEM_SEND_SUCCESS = 0x005; 17 | 18 | public static final String CHAT_FILE_TYPE_TEXT = "text"; 19 | public static final String CHAT_FILE_TYPE_FILE = "file"; 20 | public static final String CHAT_FILE_TYPE_IMAGE = "image"; 21 | public static final String CHAT_FILE_TYPE_VOICE = "voice"; 22 | public static final String CHAT_FILE_TYPE_CONTACT = "contact"; 23 | public static final String CHAT_FILE_TYPE_LINK = "LINK"; 24 | } 25 | -------------------------------------------------------------------------------- /app/src/main/java/com/rance/chatui/util/GlobalOnItemClickManagerUtils.java: -------------------------------------------------------------------------------- 1 | package com.rance.chatui.util; 2 | 3 | import android.content.Context; 4 | import android.view.KeyEvent; 5 | import android.view.View; 6 | import android.widget.AdapterView; 7 | import android.widget.EditText; 8 | 9 | import com.rance.chatui.adapter.EmotionGridViewAdapter; 10 | 11 | /** 12 | * 作者:Rance on 2016/11/29 10:47 13 | * 邮箱:rance935@163.com 14 | * 点击表情的全局监听管理类 15 | */ 16 | public class GlobalOnItemClickManagerUtils { 17 | 18 | private static GlobalOnItemClickManagerUtils instance; 19 | private EditText mEditText;//输入框 20 | private static Context mContext; 21 | 22 | public static GlobalOnItemClickManagerUtils getInstance(Context context) { 23 | mContext = context; 24 | if (instance == null) { 25 | synchronized (GlobalOnItemClickManagerUtils.class) { 26 | if (instance == null) { 27 | instance = new GlobalOnItemClickManagerUtils(); 28 | } 29 | } 30 | } 31 | return instance; 32 | } 33 | 34 | public void attachToEditText(EditText editText) { 35 | mEditText = editText; 36 | } 37 | 38 | public AdapterView.OnItemClickListener getOnItemClickListener() { 39 | return new AdapterView.OnItemClickListener() { 40 | @Override 41 | public void onItemClick(AdapterView parent, View view, int position, long id) { 42 | Object itemAdapter = parent.getAdapter(); 43 | 44 | if (itemAdapter instanceof EmotionGridViewAdapter) { 45 | // 点击的是表情 46 | EmotionGridViewAdapter emotionGvAdapter = (EmotionGridViewAdapter) itemAdapter; 47 | 48 | if (position == emotionGvAdapter.getCount() - 1) { 49 | // 如果点击了最后一个回退按钮,则调用删除键事件 50 | mEditText.dispatchKeyEvent(new KeyEvent( 51 | KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DEL)); 52 | } else { 53 | // 如果点击了表情,则添加到输入框中 54 | String emotionName = emotionGvAdapter.getItem(position); 55 | 56 | // 获取当前光标位置,在指定位置上添加表情图片文本 57 | int curPosition = mEditText.getSelectionStart(); 58 | StringBuilder sb = new StringBuilder(mEditText.getText().toString()); 59 | sb.insert(curPosition, emotionName); 60 | 61 | // 特殊文字处理,将表情等转换一下 62 | mEditText.setText(Utils.getEmotionContent(mContext, mEditText, sb.toString())); 63 | 64 | // 将光标设置到新增完表情的右侧 65 | mEditText.setSelection(curPosition + emotionName.length()); 66 | } 67 | 68 | } 69 | } 70 | }; 71 | } 72 | 73 | } 74 | -------------------------------------------------------------------------------- /app/src/main/java/com/rance/chatui/util/MediaManager.java: -------------------------------------------------------------------------------- 1 | package com.rance.chatui.util; 2 | 3 | import android.media.AudioManager; 4 | import android.media.MediaPlayer; 5 | import android.media.MediaPlayer.OnCompletionListener; 6 | import android.media.MediaPlayer.OnErrorListener; 7 | 8 | /** 9 | * 作者:Rance on 2016/12/15 15:11 10 | * 邮箱:rance935@163.com 11 | */ 12 | public class MediaManager { 13 | 14 | private static MediaPlayer mMediaPlayer; 15 | private static boolean isPause; 16 | 17 | /** 18 | * 播放音乐 19 | * 20 | * @param filePath 21 | * @param onCompletionListener 22 | */ 23 | public static void playSound(final String filePath, final OnCompletionListener onCompletionListener) { 24 | if (mMediaPlayer == null) { 25 | mMediaPlayer = new MediaPlayer(); 26 | 27 | //设置一个error监听器 28 | mMediaPlayer.setOnErrorListener(new OnErrorListener() { 29 | 30 | public boolean onError(MediaPlayer arg0, int arg1, int arg2) { 31 | mMediaPlayer.reset(); 32 | return false; 33 | } 34 | }); 35 | } else { 36 | mMediaPlayer.reset(); 37 | } 38 | try { 39 | mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 40 | mMediaPlayer.setOnCompletionListener(onCompletionListener); 41 | mMediaPlayer.setDataSource(filePath); 42 | mMediaPlayer.prepare(); 43 | mMediaPlayer.start(); 44 | } catch (Exception e) { 45 | 46 | } 47 | } 48 | 49 | /** 50 | * 暂停播放 51 | */ 52 | public static void pause() { 53 | if (mMediaPlayer != null && mMediaPlayer.isPlaying()) { //正在播放的时候 54 | mMediaPlayer.pause(); 55 | isPause = true; 56 | } 57 | } 58 | 59 | /** 60 | * 当前是isPause状态 61 | */ 62 | public static void resume() { 63 | if (mMediaPlayer != null && isPause) { 64 | mMediaPlayer.start(); 65 | isPause = false; 66 | } 67 | } 68 | 69 | /** 70 | * 释放资源 71 | */ 72 | public static void release() { 73 | if (mMediaPlayer != null) { 74 | mMediaPlayer.release(); 75 | mMediaPlayer = null; 76 | } 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /app/src/main/java/com/rance/chatui/util/MessageCenter.java: -------------------------------------------------------------------------------- 1 | package com.rance.chatui.util; 2 | 3 | import android.app.Activity; 4 | import android.content.Intent; 5 | import android.net.Uri; 6 | import android.os.Bundle; 7 | import android.util.Log; 8 | 9 | import com.rance.chatui.enity.Link; 10 | import com.rance.chatui.enity.MessageInfo; 11 | 12 | import org.greenrobot.eventbus.EventBus; 13 | 14 | /** 15 | * Created by chengz 16 | * 17 | * @date 2017/8/4. 18 | */ 19 | 20 | public class MessageCenter { 21 | private static final String TAG = "MessageCenter"; 22 | //including images and links 23 | public final static String MIME_TYPE_IMAGE = "image/*"; 24 | public final static String MIME_TYPE_IMAGE_JPG = "image/jpg"; 25 | public final static String MIME_TYPE_IMAGE_JPEG = "image/jpeg"; 26 | public final static String MIME_TYPE_IMAGE_PNG = "image/png"; 27 | public final static String MIME_TYPE_IMAGE_BMP = "image/x-ms-bmp"; 28 | public final static String MIME_TYPE_IMAGE_OTHER = "image/x-adobe-dng"; 29 | public final static String MIME_TYPE_PDF = "application/pdf"; 30 | public final static String MIME_TYPE_XLS = "application/vnd.ms-excel"; 31 | public final static String MIME_TYPE_XLSX = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; 32 | public final static String MIME_TYPE_DOC = "application/msword"; 33 | public final static String MIME_TYPE_DOCX = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; 34 | public final static String MIME_TYPE_PPT = "application/vnd.ms-powerpoint"; 35 | public final static String MIME_TYPE_PPTX = "application/vnd.openxmlformats-officedocument.presentationml.presentation"; 36 | public final static String MIME_TYPE_TEXT = "text/plain"; 37 | /** 38 | * process received messages 39 | * @param bundle 40 | * @param mimeType 41 | */ 42 | public static void handleIncoming(Bundle bundle, String mimeType, Activity activity) { 43 | for (String key : bundle.keySet()) { 44 | Log.e(TAG, "handleIncomeAction: " + key + " => " + bundle.get(key) + ";"); 45 | } 46 | // 47 | // Log.e(TAG, "handleIncomeAction: ->" + mimeType); 48 | Log.e(TAG, "handleIncoming: mimeType->" + mimeType); 49 | if (mimeType == null) { 50 | return; 51 | } 52 | switch (mimeType) { 53 | case MIME_TYPE_IMAGE: 54 | case MIME_TYPE_IMAGE_JPG: 55 | case MIME_TYPE_IMAGE_JPEG: 56 | case MIME_TYPE_IMAGE_PNG: 57 | case MIME_TYPE_IMAGE_BMP: 58 | case MIME_TYPE_IMAGE_OTHER: 59 | if (bundle.containsKey("url") && bundle.getString("url") != null 60 | && !"" .equals(bundle.getString("url"))) { 61 | Log.e(TAG, "handleIncoming: url->" + bundle.getString("url") ); 62 | // link 63 | MessageInfo messageInfo = new MessageInfo(); 64 | messageInfo.setMimeType(mimeType); 65 | messageInfo.setFileType(Constants.CHAT_FILE_TYPE_LINK); 66 | Link link = new Link(); 67 | link.setSubject(bundle.getString(Intent.EXTRA_SUBJECT)); 68 | link.setText(bundle.getString(Intent.EXTRA_TEXT)); 69 | link.setStream(bundle.get(Intent.EXTRA_STREAM).toString()); 70 | link.setUrl(bundle.getString("url")); 71 | messageInfo.setObject(link); 72 | EventBus.getDefault().post(messageInfo); 73 | } else { 74 | // image 75 | Log.e(TAG, "handleIncoming: stream ->" + bundle.getString(Intent.EXTRA_STREAM) ); 76 | MessageInfo messageInfo = new MessageInfo(); 77 | messageInfo.setMimeType(mimeType); 78 | messageInfo.setFilepath(bundle.get(Intent.EXTRA_STREAM).toString()); 79 | messageInfo.setFileType(Constants.CHAT_FILE_TYPE_IMAGE); 80 | EventBus.getDefault().post(messageInfo); 81 | } 82 | break; 83 | case MIME_TYPE_PDF: 84 | case MIME_TYPE_DOC: 85 | case MIME_TYPE_DOCX: 86 | case MIME_TYPE_XLS: 87 | case MIME_TYPE_XLSX: 88 | case MIME_TYPE_PPT: 89 | case MIME_TYPE_PPTX: 90 | case MIME_TYPE_TEXT: 91 | MessageInfo messageInfo = new MessageInfo(); 92 | messageInfo.setMimeType(mimeType); 93 | messageInfo.setFileType(Constants.CHAT_FILE_TYPE_FILE); 94 | messageInfo.setFilepath(FileUtils.getFileAbsolutePath(activity, (Uri) bundle.get(Intent.EXTRA_STREAM))); 95 | EventBus.getDefault().post(messageInfo); 96 | break; 97 | default: 98 | break; 99 | } 100 | } 101 | } 102 | -------------------------------------------------------------------------------- /app/src/main/java/com/rance/chatui/util/PhotoUtils.java: -------------------------------------------------------------------------------- 1 | package com.rance.chatui.util; 2 | 3 | import android.app.Activity; 4 | import android.content.Intent; 5 | import android.graphics.Bitmap; 6 | import android.net.Uri; 7 | import android.os.Build; 8 | import android.provider.MediaStore; 9 | import android.support.v4.app.Fragment; 10 | import android.util.Log; 11 | 12 | import com.rance.chatui.base.BaseFragment; 13 | 14 | /** 15 | * Created by chengz 16 | * 17 | * @date 2017/8/1. 18 | */ 19 | 20 | public class PhotoUtils { 21 | private static final String TAG = "PhotoUtils"; 22 | 23 | /** 24 | * 拍照方法 25 | * @param baseFragment 26 | * @param imageUri 27 | * @param requestCodeCamera 28 | */ 29 | public static void takePicture(BaseFragment baseFragment, Uri imageUri, int requestCodeCamera) { 30 | Intent intentCamera = new Intent(); 31 | if (Build.VERSION.SDK_INT > Build.VERSION_CODES.N) { 32 | intentCamera.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 33 | } 34 | intentCamera.setAction(MediaStore.ACTION_IMAGE_CAPTURE); 35 | intentCamera.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); 36 | Log.e(TAG, "takePicture: ->" + requestCodeCamera); 37 | baseFragment.startActivityForResult(intentCamera, requestCodeCamera); 38 | } 39 | 40 | /** 41 | * 裁剪图片 42 | * @param activity 43 | * @param orgUri 44 | * @param desUri 45 | * @param aspectX 46 | * @param aspectY 47 | * @param width 48 | * @param height 49 | * @param requestCode 50 | */ 51 | public static void cropImageUri(Activity activity, Uri orgUri, Uri desUri, int aspectX, 52 | int aspectY, int width, int height, int requestCode) { 53 | Intent intent = new Intent("com.android.camera.action.CROP"); 54 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { 55 | intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 56 | } 57 | 58 | intent.setDataAndType(orgUri, "image/*"); 59 | intent.putExtra("crop", "true"); 60 | intent.putExtra("aspectX", aspectX); 61 | intent.putExtra("aspectY", aspectY); 62 | intent.putExtra("outputX", width); 63 | intent.putExtra("outputY", height); 64 | intent.putExtra("scale", true); 65 | intent.putExtra(MediaStore.EXTRA_OUTPUT, desUri); 66 | intent.putExtra("return-data", false); 67 | intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString()); 68 | intent.putExtra("noFaceDetection", true); 69 | activity.startActivityForResult(intent, requestCode); 70 | } 71 | 72 | /** 73 | * open picture 74 | * @param activity 75 | * @param requestCode 76 | */ 77 | public static void openPic(Activity activity, int requestCode) { 78 | Intent photoPickerIntent = new Intent(Intent.ACTION_GET_CONTENT); 79 | photoPickerIntent.setType("image/*"); 80 | activity.startActivityForResult(photoPickerIntent, requestCode); 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /app/src/main/java/com/rance/chatui/util/PopupWindowFactory.java: -------------------------------------------------------------------------------- 1 | package com.rance.chatui.util; 2 | 3 | import android.content.Context; 4 | import android.view.KeyEvent; 5 | import android.view.MotionEvent; 6 | import android.view.View; 7 | import android.view.ViewGroup; 8 | import android.widget.PopupWindow; 9 | 10 | 11 | /** 12 | * 作者:Rance on 2016/11/29 10:47 13 | * 邮箱:rance935@163.com 14 | */ 15 | public class PopupWindowFactory { 16 | 17 | private Context mContext; 18 | 19 | private PopupWindow mPop; 20 | 21 | /** 22 | * @param mContext 上下文 23 | * @param view PopupWindow显示的布局文件 24 | */ 25 | public PopupWindowFactory(Context mContext, View view){ 26 | this(mContext,view, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); 27 | } 28 | 29 | /** 30 | * @param mContext 上下文 31 | * @param view PopupWindow显示的布局文件 32 | * @param width PopupWindow的宽 33 | * @param heigth PopupWindow的高 34 | */ 35 | public PopupWindowFactory(Context mContext, View view, int width, int heigth){ 36 | init(mContext,view,width,heigth); 37 | } 38 | 39 | 40 | private void init(Context mContext, View view, int width, int heigth){ 41 | this.mContext = mContext; 42 | 43 | //下面这两个必须有!! 44 | view.setFocusable(true); 45 | view.setFocusableInTouchMode(true); 46 | 47 | // PopupWindow(布局,宽度,高度) 48 | mPop = new PopupWindow(view,width,heigth,true); 49 | mPop.setFocusable(true); 50 | 51 | // 重写onKeyListener,按返回键消失 52 | view.setOnKeyListener(new View.OnKeyListener() { 53 | @Override 54 | public boolean onKey(View v, int keyCode, KeyEvent event) { 55 | if (keyCode == KeyEvent.KEYCODE_BACK) { 56 | mPop.dismiss(); 57 | return true; 58 | } 59 | return false; 60 | } 61 | }); 62 | 63 | //点击其他地方消失 64 | view.setOnTouchListener(new View.OnTouchListener() { 65 | @Override 66 | public boolean onTouch(View v, MotionEvent event) { 67 | if (mPop != null && mPop.isShowing()) { 68 | mPop.dismiss(); 69 | return true; 70 | } 71 | return false; 72 | }}); 73 | 74 | 75 | } 76 | 77 | public PopupWindow getPopupWindow(){ 78 | return mPop; 79 | } 80 | 81 | 82 | /** 83 | * 以触发弹出窗的view为基准,出现在view的内部上面,弹出的pop_view左上角正对view的左上角 84 | * @param parent view 85 | * @param gravity 在view的什么位置 Gravity.CENTER、Gravity.TOP...... 86 | * @param x 与控件的x坐标距离 87 | * @param y 与控件的y坐标距离 88 | */ 89 | public void showAtLocation(View parent, int gravity, int x, int y){ 90 | 91 | if(mPop.isShowing()){ 92 | return ; 93 | } 94 | mPop.showAtLocation(parent, gravity, x, y); 95 | 96 | } 97 | 98 | /** 99 | * 以触发弹出窗的view为基准,出现在view的正下方,弹出的pop_view左上角正对view的左下角 100 | * @param anchor view 101 | */ 102 | public void showAsDropDown(View anchor){ 103 | showAsDropDown(anchor,0,0); 104 | } 105 | 106 | /** 107 | * 以触发弹出窗的view为基准,出现在view的正下方,弹出的pop_view左上角正对view的左下角 108 | * @param anchor view 109 | * @param xoff 与view的x坐标距离 110 | * @param yoff 与view的y坐标距离 111 | */ 112 | public void showAsDropDown(View anchor, int xoff, int yoff){ 113 | if(mPop.isShowing()){ 114 | return ; 115 | } 116 | 117 | mPop.showAsDropDown(anchor, xoff, yoff); 118 | } 119 | 120 | /** 121 | * 隐藏PopupWindow 122 | */ 123 | public void dismiss(){ 124 | if (mPop.isShowing()) { 125 | mPop.dismiss(); 126 | } 127 | } 128 | 129 | } 130 | -------------------------------------------------------------------------------- /app/src/main/java/com/rance/chatui/util/Utils.java: -------------------------------------------------------------------------------- 1 | package com.rance.chatui.util; 2 | 3 | import android.content.Context; 4 | import android.content.res.Resources; 5 | import android.graphics.Bitmap; 6 | import android.graphics.BitmapFactory; 7 | import android.text.Spannable; 8 | import android.text.SpannableString; 9 | import android.text.style.ImageSpan; 10 | import android.widget.TextView; 11 | 12 | import java.text.SimpleDateFormat; 13 | import java.util.regex.Matcher; 14 | import java.util.regex.Pattern; 15 | 16 | /** 17 | * 作者:Rance on 2016/12/20 16:41 18 | * 邮箱:rance935@163.com 19 | */ 20 | public class Utils { 21 | /** 22 | * dp转dip 23 | * 24 | * @param context 25 | * @param dp 26 | * @return 27 | */ 28 | public static int dp2px(Context context, float dp) { 29 | float density = context.getResources().getDisplayMetrics().density; 30 | return (int) (dp * density + 0.5F); 31 | } 32 | 33 | /** 34 | * 文本中的emojb字符处理为表情图片 35 | * 36 | * @param context 37 | * @param tv 38 | * @param source 39 | * @return 40 | */ 41 | public static SpannableString getEmotionContent(final Context context, final TextView tv, String source) { 42 | SpannableString spannableString = new SpannableString(source); 43 | Resources res = context.getResources(); 44 | 45 | String regexEmotion = "\\[([\u4e00-\u9fa5\\w])+\\]"; 46 | Pattern patternEmotion = Pattern.compile(regexEmotion); 47 | Matcher matcherEmotion = patternEmotion.matcher(spannableString); 48 | 49 | while (matcherEmotion.find()) { 50 | // 获取匹配到的具体字符 51 | String key = matcherEmotion.group(); 52 | // 匹配字符串的开始位置 53 | int start = matcherEmotion.start(); 54 | // 利用表情名字获取到对应的图片 55 | Integer imgRes = EmotionUtils.EMOTION_STATIC_MAP.get(key); 56 | if (imgRes != null) { 57 | // 压缩表情图片 58 | int size = (int) tv.getTextSize() * 13 / 8; 59 | Bitmap bitmap = BitmapFactory.decodeResource(res, imgRes); 60 | Bitmap scaleBitmap = Bitmap.createScaledBitmap(bitmap, size, size, true); 61 | 62 | ImageSpan span = new ImageSpan(context, scaleBitmap); 63 | spannableString.setSpan(span, start, start + key.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 64 | } 65 | } 66 | return spannableString; 67 | } 68 | 69 | /** 70 | * 返回当前时间的格式为 yyyyMMddHHmmss 71 | * 72 | * @return 73 | */ 74 | public static String getCurrentTime() { 75 | SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); 76 | return sdf.format(System.currentTimeMillis()); 77 | } 78 | 79 | //毫秒转秒 80 | public static String long2String(long time) { 81 | //毫秒转秒 82 | int sec = (int) time / 1000; 83 | int min = sec / 60; //分钟 84 | sec = sec % 60; //秒 85 | if (min < 10) { //分钟补0 86 | if (sec < 10) { //秒补0 87 | return "0" + min + ":0" + sec; 88 | } else { 89 | return "0" + min + ":" + sec; 90 | } 91 | } else { 92 | if (sec < 10) { //秒补0 93 | return min + ":0" + sec; 94 | } else { 95 | return min + ":" + sec; 96 | } 97 | } 98 | } 99 | 100 | /** 101 | * 毫秒转化时分秒毫秒 102 | * 103 | * @param ms 104 | * @return 105 | */ 106 | public static String formatTime(Long ms) { 107 | Integer ss = 1000; 108 | Integer mi = ss * 60; 109 | Integer hh = mi * 60; 110 | Integer dd = hh * 24; 111 | 112 | Long day = ms / dd; 113 | Long hour = (ms - day * dd) / hh; 114 | Long minute = (ms - day * dd - hour * hh) / mi; 115 | Long second = (ms - day * dd - hour * hh - minute * mi) / ss; 116 | 117 | StringBuffer sb = new StringBuffer(); 118 | if (day > 0) { 119 | sb.append(day + "d"); 120 | } 121 | if (hour > 0) { 122 | sb.append(hour + "h"); 123 | } 124 | if (minute > 0) { 125 | sb.append(minute + "′"); 126 | } 127 | if (second > 0) { 128 | sb.append(second + "″"); 129 | } 130 | return sb.toString(); 131 | } 132 | } 133 | -------------------------------------------------------------------------------- /app/src/main/java/com/rance/chatui/widget/BubbleLinearLayout.java: -------------------------------------------------------------------------------- 1 | package com.rance.chatui.widget; 2 | 3 | import android.content.Context; 4 | import android.content.res.TypedArray; 5 | import android.graphics.RectF; 6 | import android.util.AttributeSet; 7 | import android.widget.LinearLayout; 8 | 9 | import com.rance.chatui.R; 10 | 11 | /** 12 | * 作者:Rance on 2016/12/15 10:49 13 | * 邮箱:rance935@163.com 14 | * 自定义聊天气泡LinearLayout 15 | */ 16 | public class BubbleLinearLayout extends LinearLayout { 17 | private BubbleDrawable bubbleDrawable; 18 | private float mArrowWidth; 19 | private float mAngle; 20 | private float mArrowHeight; 21 | private float mArrowPosition; 22 | private BubbleDrawable.ArrowLocation mArrowLocation; 23 | private int bubbleColor; 24 | public BubbleLinearLayout(Context context) { 25 | super(context); 26 | initView(null); 27 | } 28 | 29 | public BubbleLinearLayout(Context context, AttributeSet attrs) { 30 | super(context, attrs); 31 | initView(attrs); 32 | } 33 | 34 | 35 | private void initView(AttributeSet attrs){ 36 | if (attrs != null){ 37 | TypedArray array = getContext().obtainStyledAttributes(attrs, R.styleable.BubbleView); 38 | mArrowWidth = array.getDimension(R.styleable.BubbleView_arrowWidth, 39 | BubbleDrawable.Builder.DEFAULT_ARROW_WITH); 40 | mArrowHeight = array.getDimension(R.styleable.BubbleView_arrowHeight, 41 | BubbleDrawable.Builder.DEFAULT_ARROW_HEIGHT); 42 | mAngle = array.getDimension(R.styleable.BubbleView_angle, 43 | BubbleDrawable.Builder.DEFAULT_ANGLE); 44 | mArrowPosition = array.getDimension(R.styleable.BubbleView_arrowPosition, 45 | BubbleDrawable.Builder.DEFAULT_ARROW_POSITION); 46 | bubbleColor = array.getColor(R.styleable.BubbleView_bubbleColor, 47 | BubbleDrawable.Builder.DEFAULT_BUBBLE_COLOR); 48 | int location = array.getInt(R.styleable.BubbleView_arrowLocation, 0); 49 | mArrowLocation = BubbleDrawable.ArrowLocation.mapIntToValue(location); 50 | array.recycle(); 51 | } 52 | } 53 | 54 | @Override 55 | protected void onSizeChanged(int w, int h, int oldw, int oldh) { 56 | super.onSizeChanged(w, h, oldw, oldh); 57 | if (w > 0 && h > 0){ 58 | setUp(w, h); 59 | } 60 | } 61 | 62 | private void setUp(int left, int right, int top, int bottom){ 63 | if (right < left || bottom < top) 64 | return; 65 | RectF rectF = new RectF(left, top, right, bottom); 66 | bubbleDrawable = new BubbleDrawable.Builder() 67 | .rect(rectF) 68 | .arrowLocation(mArrowLocation) 69 | .bubbleType(BubbleDrawable.BubbleType.COLOR) 70 | .angle(mAngle) 71 | .arrowHeight(mArrowHeight) 72 | .arrowWidth(mArrowWidth) 73 | .arrowPosition(mArrowPosition) 74 | .bubbleColor(bubbleColor) 75 | .build(); 76 | } 77 | 78 | private void setUp(int width, int height){ 79 | setUp(getPaddingLeft(), + width - getPaddingRight(), 80 | getPaddingTop(), height - getPaddingBottom()); 81 | setBackgroundDrawable(bubbleDrawable); 82 | } 83 | 84 | } 85 | -------------------------------------------------------------------------------- /app/src/main/java/com/rance/chatui/widget/ChatContextMenu.java: -------------------------------------------------------------------------------- 1 | package com.rance.chatui.widget; 2 | 3 | import android.animation.Animator; 4 | import android.annotation.TargetApi; 5 | import android.content.ClipData; 6 | import android.content.ClipboardManager; 7 | import android.content.Context; 8 | import android.graphics.Color; 9 | import android.graphics.drawable.ColorDrawable; 10 | import android.os.Build; 11 | import android.os.Message; 12 | import android.support.annotation.NonNull; 13 | import android.view.LayoutInflater; 14 | import android.view.View; 15 | import android.view.ViewAnimationUtils; 16 | import android.view.ViewGroup; 17 | import android.widget.TextView; 18 | 19 | import com.labo.kaji.relativepopupwindow.RelativePopupWindow; 20 | import com.rance.chatui.R; 21 | import com.rance.chatui.enity.MessageInfo; 22 | 23 | /** 24 | * Created by chengz 25 | * 26 | * @date 2017/7/31. 27 | */ 28 | 29 | public class ChatContextMenu extends RelativePopupWindow { 30 | 31 | private MessageInfo mMessageInfo; 32 | private Context mContext; 33 | public ChatContextMenu(Context context, MessageInfo messageInfo) { 34 | this.mMessageInfo = messageInfo; 35 | this.mContext = context; 36 | View view = LayoutInflater.from(context).inflate(R.layout.popup_context_menu, null); 37 | setContentView(view); 38 | 39 | setWidth(ViewGroup.LayoutParams.WRAP_CONTENT); 40 | setHeight(ViewGroup.LayoutParams.WRAP_CONTENT); 41 | setFocusable(true); 42 | setOutsideTouchable(true); 43 | setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 44 | 45 | // Disable default animation for circular reveal 46 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 47 | setAnimationStyle(0); 48 | } 49 | 50 | TextView tvCopy = (TextView) view.findViewById(R.id.tv_copy); 51 | TextView tvTransit = (TextView) view.findViewById(R.id.tv_transit); 52 | 53 | tvCopy.setOnClickListener(new View.OnClickListener() { 54 | @Override 55 | public void onClick(View v) { 56 | copyToClipboard(); 57 | } 58 | }); 59 | tvTransit.setOnClickListener(new View.OnClickListener() { 60 | @Override 61 | public void onClick(View v) { 62 | transitContent(); 63 | } 64 | }); 65 | } 66 | 67 | private void transitContent() { 68 | 69 | } 70 | 71 | private void copyToClipboard() { 72 | ClipboardManager cm = (ClipboardManager) mContext.getSystemService(Context.CLIPBOARD_SERVICE); 73 | ClipData data = ClipData.newPlainText("Moa", mMessageInfo.getContent()); 74 | cm.setPrimaryClip(data); 75 | } 76 | 77 | @Override 78 | public void showOnAnchor(@NonNull View anchor, int vertPos, int horizPos, int x, int y, boolean fitInScreen) { 79 | super.showOnAnchor(anchor, vertPos, horizPos, x, y, fitInScreen); 80 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 81 | circularReveal(anchor); 82 | } 83 | } 84 | 85 | @TargetApi(Build.VERSION_CODES.LOLLIPOP) 86 | private void circularReveal(@NonNull final View anchor) { 87 | final View contentView = getContentView(); 88 | contentView.post(new Runnable() { 89 | @Override 90 | public void run() { 91 | final int[] myLocation = new int[2]; 92 | final int[] anchorLocation = new int[2]; 93 | contentView.getLocationOnScreen(myLocation); 94 | anchor.getLocationOnScreen(anchorLocation); 95 | final int cx = anchorLocation[0] - myLocation[0] + anchor.getWidth()/2; 96 | final int cy = anchorLocation[1] - myLocation[1] + anchor.getHeight()/2; 97 | 98 | contentView.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED); 99 | final int dx = Math.max(cx, contentView.getMeasuredWidth() - cx); 100 | final int dy = Math.max(cy, contentView.getMeasuredHeight() - cy); 101 | final float finalRadius = (float) Math.hypot(dx, dy); 102 | Animator animator = ViewAnimationUtils.createCircularReveal(contentView, cx, cy, 0f, finalRadius); 103 | animator.setDuration(1); 104 | animator.start(); 105 | } 106 | }); 107 | } 108 | } 109 | -------------------------------------------------------------------------------- /app/src/main/java/com/rance/chatui/widget/IndicatorView.java: -------------------------------------------------------------------------------- 1 | package com.rance.chatui.widget; 2 | 3 | import android.content.Context; 4 | import android.util.AttributeSet; 5 | import android.view.View; 6 | import android.widget.LinearLayout; 7 | 8 | import com.rance.chatui.R; 9 | import com.rance.chatui.util.Utils; 10 | 11 | import java.util.ArrayList; 12 | 13 | /** 14 | * 作者:Rance on 2016/11/29 10:47 15 | * 邮箱:rance935@163.com 16 | * 自定义表情底部指示器 17 | */ 18 | public class IndicatorView extends LinearLayout { 19 | 20 | private Context mContext; 21 | private ArrayList mImageViews;//所有指示器集合 22 | private int size = 6; 23 | private int marginSize = 15; 24 | private int pointSize;//指示器的大小 25 | private int marginLeft;//间距 26 | 27 | public IndicatorView(Context context) { 28 | this(context, null); 29 | } 30 | 31 | public IndicatorView(Context context, AttributeSet attrs) { 32 | this(context, attrs, 0); 33 | } 34 | 35 | public IndicatorView(Context context, AttributeSet attrs, int defStyleAttr) { 36 | super(context, attrs, defStyleAttr); 37 | mContext = context; 38 | pointSize = Utils.dp2px(context, size); 39 | marginLeft = Utils.dp2px(context, marginSize); 40 | } 41 | 42 | /** 43 | * 初始化指示器 44 | * 45 | * @param count 指示器的数量 46 | */ 47 | public void initIndicator(int count) { 48 | mImageViews = new ArrayList<>(); 49 | this.removeAllViews(); 50 | LayoutParams lp; 51 | for (int i = 0; i < count; i++) { 52 | View v = new View(mContext); 53 | lp = new LayoutParams(pointSize, pointSize); 54 | if (i != 0) 55 | lp.leftMargin = marginLeft; 56 | v.setLayoutParams(lp); 57 | if (i == 0) { 58 | v.setBackgroundResource(R.drawable.bg_circle_white); 59 | } else { 60 | v.setBackgroundResource(R.drawable.bg_circle_gary); 61 | } 62 | mImageViews.add(v); 63 | this.addView(v); 64 | } 65 | } 66 | 67 | /** 68 | * 页面移动时切换指示器 69 | */ 70 | public void playByStartPointToNext(int startPosition, int nextPosition) { 71 | if (startPosition < 0 || nextPosition < 0 || nextPosition == startPosition) { 72 | startPosition = nextPosition = 0; 73 | } 74 | final View ViewStrat = mImageViews.get(startPosition); 75 | final View ViewNext = mImageViews.get(nextPosition); 76 | ViewNext.setBackgroundResource(R.drawable.bg_circle_white); 77 | ViewStrat.setBackgroundResource(R.drawable.bg_circle_gary); 78 | } 79 | 80 | } 81 | -------------------------------------------------------------------------------- /app/src/main/java/com/rance/chatui/widget/NoScrollViewPager.java: -------------------------------------------------------------------------------- 1 | package com.rance.chatui.widget; 2 | 3 | import android.content.Context; 4 | import android.support.v4.view.ViewPager; 5 | import android.util.AttributeSet; 6 | import android.view.MotionEvent; 7 | 8 | /** 9 | * 作者:Rance on 2016/11/25 16:55 10 | * 邮箱:rance935@163.com 11 | */ 12 | public class NoScrollViewPager extends ViewPager { 13 | 14 | public NoScrollViewPager(Context context) { 15 | super(context); 16 | } 17 | 18 | public NoScrollViewPager(Context context, AttributeSet attrs) { 19 | super(context, attrs); 20 | } 21 | 22 | @Override 23 | public boolean onTouchEvent(MotionEvent arg0) { 24 | return false; 25 | } 26 | 27 | @Override 28 | public boolean onInterceptTouchEvent(MotionEvent arg0) { 29 | return false; 30 | } 31 | } -------------------------------------------------------------------------------- /app/src/main/jniLibs/arm64-v8a/libBaiduMapSDK_base_v4_3_2.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/jniLibs/arm64-v8a/libBaiduMapSDK_base_v4_3_2.so -------------------------------------------------------------------------------- /app/src/main/jniLibs/arm64-v8a/libBaiduMapSDK_map_v4_3_2.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/jniLibs/arm64-v8a/libBaiduMapSDK_map_v4_3_2.so -------------------------------------------------------------------------------- /app/src/main/jniLibs/arm64-v8a/liblocSDK7a.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/jniLibs/arm64-v8a/liblocSDK7a.so -------------------------------------------------------------------------------- /app/src/main/jniLibs/armeabi-v7a/libBaiduMapSDK_base_v4_3_2.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/jniLibs/armeabi-v7a/libBaiduMapSDK_base_v4_3_2.so -------------------------------------------------------------------------------- /app/src/main/jniLibs/armeabi-v7a/libBaiduMapSDK_map_v4_3_2.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/jniLibs/armeabi-v7a/libBaiduMapSDK_map_v4_3_2.so -------------------------------------------------------------------------------- /app/src/main/jniLibs/armeabi-v7a/liblocSDK7a.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/jniLibs/armeabi-v7a/liblocSDK7a.so -------------------------------------------------------------------------------- /app/src/main/jniLibs/armeabi/libBaiduMapSDK_base_v4_3_2.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/jniLibs/armeabi/libBaiduMapSDK_base_v4_3_2.so -------------------------------------------------------------------------------- /app/src/main/jniLibs/armeabi/libBaiduMapSDK_map_v4_3_2.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/jniLibs/armeabi/libBaiduMapSDK_map_v4_3_2.so -------------------------------------------------------------------------------- /app/src/main/jniLibs/armeabi/liblocSDK7a.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/jniLibs/armeabi/liblocSDK7a.so -------------------------------------------------------------------------------- /app/src/main/jniLibs/x86/libBaiduMapSDK_base_v4_3_2.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/jniLibs/x86/libBaiduMapSDK_base_v4_3_2.so -------------------------------------------------------------------------------- /app/src/main/jniLibs/x86/libBaiduMapSDK_map_v4_3_2.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/jniLibs/x86/libBaiduMapSDK_map_v4_3_2.so -------------------------------------------------------------------------------- /app/src/main/jniLibs/x86/liblocSDK7a.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/jniLibs/x86/liblocSDK7a.so -------------------------------------------------------------------------------- /app/src/main/jniLibs/x86_64/libBaiduMapSDK_base_v4_3_2.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/jniLibs/x86_64/libBaiduMapSDK_base_v4_3_2.so -------------------------------------------------------------------------------- /app/src/main/jniLibs/x86_64/libBaiduMapSDK_map_v4_3_2.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/jniLibs/x86_64/libBaiduMapSDK_map_v4_3_2.so -------------------------------------------------------------------------------- /app/src/main/jniLibs/x86_64/liblocSDK7a.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/jniLibs/x86_64/liblocSDK7a.so -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_circle_gary.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 11 | 12 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_circle_white.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 11 | 12 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_message.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/bg_message.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_surname.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/compose_emotion_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/compose_emotion_delete.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/corners_edit.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 9 | 10 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/corners_edit_white.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 9 | 10 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/divider.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_aini.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_aini.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_aini_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_aini_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_aiqing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_aiqing.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_aiqing_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_aiqing_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_aixin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_aixin.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_aixin_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_aixin_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_aoman.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_aoman.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_aoman_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_aoman_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_baiyan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_baiyan.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_baiyan_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_baiyan_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_bangbangtang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_bangbangtang.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_bangbangtang_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_bangbangtang_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_baobao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_baobao.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_baobao_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_baobao_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_baojing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_baojing.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_baojing_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_baojing_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_baoquan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_baoquan.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_baoquan_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_baoquan_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_bianbian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_bianbian.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_bianbian_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_bianbian_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_bianpao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_bianpao.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_bianpao_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_bianpao_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_biezui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_biezui.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_biezui_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_biezui_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_bishi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_bishi.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_bishi_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_bishi_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_bizui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_bizui.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_bizui_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_bizui_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_cahan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_cahan.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_cahan_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_cahan_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_caidao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_caidao.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_caidao_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_caidao_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_caiqiu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_caiqiu.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_caiqiu_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_caiqiu_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_chajing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_chajing.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_chajing_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_chajing_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_chaopiao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_chaopiao.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_chaopiao_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_chaopiao_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_chexiang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_chexiang.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_chexiang_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_chexiang_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_ciya.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_ciya.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_ciya_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_ciya_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_dabing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_dabing.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_dabing_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_dabing_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_daku.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_daku.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_daku_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_daku_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_dangao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_dangao.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_dangao_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_dangao_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_dao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_dao.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_dao_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_dao_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_dashan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_dashan.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_dashan_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_dashan_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_dashuai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_dashuai.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_dashuai_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_dashuai_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_denglong.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_denglong.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_denglong_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_denglong_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_dengpao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_dengpao.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_dengpao_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_dengpao_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_deyi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_deyi.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_deyi_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_deyi_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_diaoxie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_diaoxie.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_diaoxie_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_diaoxie_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_duoyun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_duoyun.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_duoyun_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_duoyun_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_facai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_facai.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_facai_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_facai_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_fadai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_fadai.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_fadai_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_fadai_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_fadou.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_fadou.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_fadou_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_fadou_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_fakuang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_fakuang.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_fakuang_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_fakuang_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_fan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_fan.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_fan_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_fan_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_fanu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_fanu.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_fanu_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_fanu_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_feiji.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_feiji.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_feiji_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_feiji_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_feiwen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_feiwen.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_feiwen_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_feiwen_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_fendou.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_fendou.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_fendou_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_fendou_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_fengche.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_fengche.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_fengche_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_fengche_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_ganga.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_ganga.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_ganga_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_ganga_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_gouwu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_gouwu.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_gouwu_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_gouwu_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_gouying.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_gouying.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_gouying_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_gouying_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_guzhang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_guzhang.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_guzhang_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_guzhang_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_haixiu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_haixiu.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_haixiu_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_haixiu_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_hanxiao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_hanxiao.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_hanxiao_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_hanxiao_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_haqian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_haqian.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_haqian_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_haqian_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_hecai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_hecai.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_hecai_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_hecai_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_henai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_henai.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_henai_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_henai_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_huaixiao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_huaixiao.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_huaixiao_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_huaixiao_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_huishou.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_huishou.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_huishou_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_huishou_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_huitou.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_huitou.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_huitou_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_huitou_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_jidong.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_jidong.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_jidong_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_jidong_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_jie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_jie.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_jie_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_jie_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_jiewu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_jiewu.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_jiewu_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_jiewu_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_jingkong.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_jingkong.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_jingkong_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_jingkong_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_jingya.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_jingya.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_jingya_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_jingya_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_kafei.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_kafei.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_kafei_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_kafei_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_kaiche.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_kaiche.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_kaiche_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_kaiche_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_keai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_keai.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_keai_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_keai_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_kelian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_kelian.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_kelian_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_kelian_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_ketou.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_ketou.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_ketou_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_ketou_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_kge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_kge.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_kge_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_kge_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_koubi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_koubi.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_koubi_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_koubi_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_ku.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_ku.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_ku_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_ku_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_kuaikule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_kuaikule.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_kuaikule_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_kuaikule_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_kulou.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_kulou.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_kulou_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_kulou_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_kun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_kun.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_kun_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_kun_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_lanqiu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_lanqiu.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_lanqiu_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_lanqiu_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_lenghan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_lenghan.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_lenghan_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_lenghan_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_liuhan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_liuhan.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_liuhan_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_liuhan_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_liulei.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_liulei.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_liulei_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_liulei_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_liwu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_liwu.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_liwu_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_liwu_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_meigui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_meigui.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_meigui_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_meigui_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_nanguo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_nanguo.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_nanguo_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_nanguo_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_naozhong.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_naozhong.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_naozhong_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_naozhong_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_no.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_no.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_no_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_no_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_ok.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_ok.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_ok_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_ok_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_ouhuo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_ouhuo.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_ouhuo_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_ouhuo_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_pachong.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_pachong.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_pachong_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_pachong_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_pijiu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_pijiu.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_pijiu_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_pijiu_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_pingpang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_pingpang.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_pingpang_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_pingpang_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_qiang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_qiang.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_qiang_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_qiang_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_qiaoda.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_qiaoda.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_qiaoda_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_qiaoda_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_qidao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_qidao.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_qidao_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_qidao_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_qingwa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_qingwa.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_qingwa_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_qingwa_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_qinqin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_qinqin.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_qinqin_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_qinqin_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_qiudale.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_qiudale.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_qiudale_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_qiudale_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_quantou.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_quantou.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_quantou_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_quantou_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_ruo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_ruo.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_ruo_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_ruo_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_se.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_se.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_se_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_se_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_shafa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_shafa.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_shafa_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_shafa_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_shandian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_shandian.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_shandian_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_shandian_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_shengli.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_shengli.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_shengli_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_shengli_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_shiai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_shiai.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_shiai_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_shiai_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_shouqiang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_shouqiang.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_shouqiang_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_shouqiang_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_shuai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_shuai.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_shuai_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_shuai_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_shuangxi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_shuangxi.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_shuangxi_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_shuangxi_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_shui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_shui.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_shui_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_shui_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_taiyang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_taiyang.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_taiyang_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_taiyang_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_tiaopi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_tiaopi.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_tiaopi_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_tiaopi_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_tiaosheng.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_tiaosheng.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_tiaosheng_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_tiaosheng_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_tiaotiao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_tiaotiao.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_tiaotiao_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_tiaotiao_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_touxiao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_touxiao.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_touxiao_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_touxiao_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_tu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_tu.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_tu_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_tu_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_weiqu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_weiqu.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_weiqu_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_weiqu_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_weixiao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_weixiao.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_weixiao_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_weixiao_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_woshou.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_woshou.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_woshou_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_woshou_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_xia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_xia.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_xia_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_xia_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_xiamian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_xiamian.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_xiamian_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_xiamian_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_xiangjiao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_xiangjiao.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_xiangjiao_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_xiangjiao_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_xianwen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_xianwen.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_xianwen_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_xianwen_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_xiayu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_xiayu.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_xiayu_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_xiayu_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_xigua.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_xigua.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_xigua_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_xigua_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_xinsui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_xinsui.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_xinsui_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_xinsui_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_xiongmao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_xiongmao.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_xiongmao_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_xiongmao_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_xu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_xu.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_xu_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_xu_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_yao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_yao.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_yao_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_yao_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_yingxian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_yingxian.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_yingxian_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_yingxian_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_yiwen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_yiwen.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_yiwen_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_yiwen_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_youchexiang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_youchexiang.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_youchexiang_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_youchexiang_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_youhengheng.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_youhengheng.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_youhengheng_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_youhengheng_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_youjian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_youjian.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_youjian_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_youjian_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_youtaiji.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_youtaiji.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_youtaiji_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_youtaiji_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_yueliang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_yueliang.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_yueliang_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_yueliang_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_yun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_yun.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_yun_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_yun_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_zaijian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_zaijian.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_zaijian_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_zaijian_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_zhadan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_zhadan.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_zhadan_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_zhadan_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_zhijing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_zhijing.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_zhijing_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_zhijing_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_zhuakuang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_zhuakuang.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_zhuakuang_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_zhuakuang_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_zhuanjie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_zhuanjie.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_zhuanjie_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_zhuanjie_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_zhuanquan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_zhuanquan.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_zhuanquan_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_zhuanquan_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_zhuqiu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_zhuqiu.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_zhuqiu_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_zhuqiu_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_zhutou.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_zhutou.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_zhutou_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_zhutou_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_zouma.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_zouma.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_zouma_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_zouma_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_zuochetou.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_zuochetou.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_zuochetou_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_zuochetou_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_zuohengheng.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_zuohengheng.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_zuohengheng_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_zuohengheng_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_zuotaiji.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_zuotaiji.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/emotion_zuotaiji_gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/emotion_zuotaiji_gif.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/msg_state_fail_resend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/drawable/msg_state_fail_resend.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/record_microphone.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/record_microphone_bj.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 7 | 8 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/voice_left.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 10 | 13 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/voice_right.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 10 | 13 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_contact.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_full_image.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 15 | 16 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/layout/dialog_contact.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 22 | 23 | 30 | 37 | 38 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_chat_emotion.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 13 | 14 | 19 | 20 | 21 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_chat_function.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 14 | 15 | 22 | 23 | 30 | 31 | 38 | 39 | 40 | 47 | 48 | 49 | 55 | 56 | 57 | 64 | 65 | 72 | 73 | 78 | 79 | 84 | 85 | -------------------------------------------------------------------------------- /app/src/main/res/layout/include_reply_layout.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 12 | 13 | 23 | 24 | 32 | 33 | 44 | 45 | 58 | 59 | 66 | 67 | 75 | 76 | 88 | 89 | 90 | 91 | 95 | 96 | 103 | 104 | 108 | 109 | 110 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_contact.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 15 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/layout/layout_microphone.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 14 | 15 | 20 | 21 | 30 | 31 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /app/src/main/res/layout/popup_context_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | 23 | 24 | 35 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/icon_chat_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/mipmap-xhdpi/icon_chat_add.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/icon_chat_expression.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/mipmap-xhdpi/icon_chat_expression.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/icon_chat_photo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/mipmap-xhdpi/icon_chat_photo.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/icon_chat_photograph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/mipmap-xhdpi/icon_chat_photograph.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/icon_chat_voice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/mipmap-xhdpi/icon_chat_voice.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/icon_voice_left1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/mipmap-xhdpi/icon_voice_left1.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/icon_voice_left2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/mipmap-xhdpi/icon_voice_left2.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/icon_voice_left3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/mipmap-xhdpi/icon_voice_left3.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/icon_voice_right1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/mipmap-xhdpi/icon_voice_right1.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/icon_voice_right2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/mipmap-xhdpi/icon_voice_right2.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/icon_voice_right3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/mipmap-xhdpi/icon_voice_right3.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/record_bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/mipmap-xhdpi/record_bottom.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/record_top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/mipmap-xhdpi/record_top.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/bg1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/mipmap-xxhdpi/bg1.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/icon_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/mipmap-xxhdpi/icon_add.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/icon_album.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/mipmap-xxhdpi/icon_album.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/icon_capture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/mipmap-xxhdpi/icon_capture.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/icon_cloud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/mipmap-xxhdpi/icon_cloud.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/icon_copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/mipmap-xxhdpi/icon_copy.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/icon_face.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/mipmap-xxhdpi/icon_face.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/icon_file_excel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/mipmap-xxhdpi/icon_file_excel.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/icon_file_other.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/mipmap-xxhdpi/icon_file_other.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/icon_file_pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/mipmap-xxhdpi/icon_file_pdf.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/icon_file_ppt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/mipmap-xxhdpi/icon_file_ppt.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/icon_file_word.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/mipmap-xxhdpi/icon_file_word.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/icon_im_contact.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/mipmap-xxhdpi/icon_im_contact.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/icon_im_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/mipmap-xxhdpi/icon_im_file.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/icon_im_location.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/mipmap-xxhdpi/icon_im_location.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/icon_keyboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/mipmap-xxhdpi/icon_keyboard.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/icon_transmit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/mipmap-xxhdpi/icon_transmit.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/icon_voice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/mipmap-xxhdpi/icon_voice.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/pic_preview.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/mipmap-xxhdpi/pic_preview.jpg -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/values-w820dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 64dp 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/values/attr.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3F51B5 4 | #303F9F 5 | #3F51B5 6 | #FFFFFF 7 | #000000 8 | 9 | 10 | #f3f3f3 11 | #d9d9d9 12 | 13 | 14 | #1b1b1b 15 | #818181 16 | #919191 17 | #c7c7c7 18 | #404040 19 | 20 | #E4F4FE 21 | #000000 22 | 23 | #EBEFF0 24 | #000000 25 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16dp 4 | 16dp 5 | 10dp 6 | 10dp 7 | 5dp 8 | 9 | 10 | 19sp 11 | 17sp 12 | 12sp 13 | 13sp 14 | 1dp 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | ChatUI 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 17 | 24 | 30 | 36 | 41 | 42 | -------------------------------------------------------------------------------- /app/src/main/res/xml/file_paths.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/test/java/com/rance/chatui/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.rance.chatui; 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 | } -------------------------------------------------------------------------------- /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:2.1.2' 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 | } 19 | } 20 | 21 | task clean(type: Delete) { 22 | delete rootProject.buildDir 23 | } 24 | -------------------------------------------------------------------------------- /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 -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Mon Dec 28 10:00:20 PST 2015 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.10-all.zip 7 | -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- 1 | @if "%DEBUG%" == "" @echo off 2 | @rem ########################################################################## 3 | @rem 4 | @rem Gradle startup script for Windows 5 | @rem 6 | @rem ########################################################################## 7 | 8 | @rem Set local scope for the variables with windows NT shell 9 | if "%OS%"=="Windows_NT" setlocal 10 | 11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 12 | set DEFAULT_JVM_OPTS= 13 | 14 | set DIRNAME=%~dp0 15 | if "%DIRNAME%" == "" set DIRNAME=. 16 | set APP_BASE_NAME=%~n0 17 | set APP_HOME=%DIRNAME% 18 | 19 | @rem Find java.exe 20 | if defined JAVA_HOME goto findJavaFromJavaHome 21 | 22 | set JAVA_EXE=java.exe 23 | %JAVA_EXE% -version >NUL 2>&1 24 | if "%ERRORLEVEL%" == "0" goto init 25 | 26 | echo. 27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 28 | echo. 29 | echo Please set the JAVA_HOME variable in your environment to match the 30 | echo location of your Java installation. 31 | 32 | goto fail 33 | 34 | :findJavaFromJavaHome 35 | set JAVA_HOME=%JAVA_HOME:"=% 36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 37 | 38 | if exist "%JAVA_EXE%" goto init 39 | 40 | echo. 41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 42 | echo. 43 | echo Please set the JAVA_HOME variable in your environment to match the 44 | echo location of your Java installation. 45 | 46 | goto fail 47 | 48 | :init 49 | @rem Get command-line arguments, handling Windowz variants 50 | 51 | if not "%OS%" == "Windows_NT" goto win9xME_args 52 | if "%@eval[2+2]" == "4" goto 4NT_args 53 | 54 | :win9xME_args 55 | @rem Slurp the command line arguments. 56 | set CMD_LINE_ARGS= 57 | set _SKIP=2 58 | 59 | :win9xME_args_slurp 60 | if "x%~1" == "x" goto execute 61 | 62 | set CMD_LINE_ARGS=%* 63 | goto execute 64 | 65 | :4NT_args 66 | @rem Get arguments from the 4NT Shell from JP Software 67 | set CMD_LINE_ARGS=%$ 68 | 69 | :execute 70 | @rem Setup the command line 71 | 72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 73 | 74 | @rem Execute Gradle 75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 76 | 77 | :end 78 | @rem End local scope for the variables with windows NT shell 79 | if "%ERRORLEVEL%"=="0" goto mainEnd 80 | 81 | :fail 82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 83 | rem the _cmd.exe /c_ return code! 84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 85 | exit /b 1 86 | 87 | :mainEnd 88 | if "%OS%"=="Windows_NT" endlocal 89 | 90 | :omega 91 | -------------------------------------------------------------------------------- /images/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/stridercheng/chatui/5d9ac4d1d16f65c947ce635d8e4021d054805878/images/preview.png -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | --------------------------------------------------------------------------------