├── .gitignore ├── .idea ├── compiler.xml ├── copyright │ └── profiles_settings.xml ├── dictionaries │ └── Administrator.xml ├── encodings.xml ├── gradle.xml ├── misc.xml ├── modules.xml ├── runConfigurations.xml └── vcs.xml ├── LICENSE ├── README.md ├── app ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── assets │ └── weibo_list.json │ ├── java │ └── com │ │ └── jackchan │ │ └── wechat │ │ ├── base │ │ ├── App.java │ │ └── Global.java │ │ ├── bean │ │ └── WeChat.java │ │ ├── ui │ │ ├── activity │ │ │ ├── MainActivity.java │ │ │ ├── TextViewActivity.java │ │ │ ├── TopicActivity.java │ │ │ └── UserActivity.java │ │ ├── adapter │ │ │ ├── BaseAdapterRV.java │ │ │ ├── ImageAdapter.java │ │ │ └── WeiboAdapter.java │ │ └── holder │ │ │ ├── BaseHolderRV.java │ │ │ ├── ImageHolder.java │ │ │ └── WeiboHolder.java │ │ └── util │ │ ├── EmojiParser.java │ │ ├── EmojiUtil.java │ │ └── LinkifyUtil.java │ └── res │ ├── drawable-hdpi │ ├── avatar_01.jpg │ ├── avatar_02.jpg │ ├── avatar_03.jpg │ ├── avatar_04.jpg │ ├── avatar_05.jpg │ ├── home_apps.png │ ├── home_callmsgsafe.png │ ├── home_netmanager.png │ ├── home_safe.png │ ├── home_settings.png │ ├── home_sysoptimize.png │ ├── home_taskmanager.png │ ├── home_tools.png │ ├── home_trojan.png │ ├── ic_launcher.png │ ├── menu_icon_cmt_normal.png │ ├── menu_icon_cmt_press.png │ ├── menu_icon_fwd_normal.png │ ├── menu_icon_fwd_press.png │ ├── menu_icon_prz_normal.png │ ├── menu_icon_prz_press.png │ ├── pic_1.jpg │ ├── pic_10.jpg │ ├── pic_11.jpg │ ├── pic_12.jpg │ ├── pic_13.jpg │ ├── pic_14.jpg │ ├── pic_15.jpg │ ├── pic_16.jpg │ ├── pic_17.jpg │ ├── pic_18.jpg │ ├── pic_19.jpg │ ├── pic_2.jpg │ ├── pic_20.jpg │ ├── pic_21.jpg │ ├── pic_22.jpg │ ├── pic_23.jpg │ ├── pic_24.jpg │ ├── pic_25.jpg │ ├── pic_26.jpg │ ├── pic_27.jpg │ ├── pic_28.jpg │ ├── pic_29.jpg │ ├── pic_3.jpg │ ├── pic_30.jpg │ ├── pic_31.jpg │ ├── pic_32.jpg │ ├── pic_33.jpg │ ├── pic_34.jpg │ ├── pic_35.jpg │ ├── pic_36.jpg │ ├── pic_37.jpg │ ├── pic_38.jpg │ ├── pic_39.jpg │ ├── pic_4.jpg │ ├── pic_5.jpg │ ├── pic_6.jpg │ ├── pic_7.jpg │ ├── pic_8.jpg │ ├── pic_9.jpg │ ├── pic_small_01.jpg │ ├── pic_small_02.jpg │ ├── pic_small_03.jpg │ ├── pic_small_04.jpg │ ├── pic_small_05.jpg │ ├── pic_small_06.jpg │ ├── pic_small_07.jpg │ ├── pic_small_08.jpg │ ├── pic_small_09.jpg │ ├── pic_small_10.jpg │ ├── pic_small_100.jpg │ ├── pic_small_101.jpg │ ├── pic_small_102.jpg │ ├── pic_small_11.jpg │ ├── pic_small_12.jpg │ ├── pic_small_13.jpg │ ├── pic_small_14.jpg │ ├── pic_small_15.jpg │ ├── pic_small_16.jpg │ ├── pic_small_17.jpg │ ├── pic_small_18.jpg │ ├── pic_small_19.jpg │ ├── pic_small_20.jpg │ ├── pic_small_21.jpg │ ├── pic_small_22.jpg │ ├── pic_small_23.jpg │ ├── pic_small_24.jpg │ ├── pic_small_25.jpg │ ├── pic_small_26.jpg │ ├── pic_small_27.jpg │ ├── pic_small_40.jpg │ ├── pic_small_41.jpg │ ├── pic_small_42.jpg │ ├── pic_small_43.jpg │ ├── pic_small_44.jpg │ ├── pic_small_45.jpg │ ├── pic_small_46.jpg │ ├── pic_small_47.jpg │ ├── pic_small_48.jpg │ ├── pic_small_50.jpg │ ├── pic_small_51.jpg │ ├── pic_small_52.jpg │ ├── pic_small_53.jpg │ ├── pic_small_54.jpg │ ├── pic_small_55.jpg │ ├── pic_small_56.jpg │ ├── pic_small_57.jpg │ ├── pic_small_58.jpg │ ├── pic_small_60.jpg │ ├── pic_small_61.jpg │ ├── pic_small_62.jpg │ ├── pic_small_63.jpg │ ├── pic_small_64.jpg │ ├── pic_small_65.jpg │ ├── pic_small_66.jpg │ ├── pic_small_67.jpg │ ├── pic_small_68.jpg │ ├── pic_small_70.jpg │ ├── pic_small_71.jpg │ ├── pic_small_72.jpg │ ├── pic_small_73.jpg │ ├── pic_small_74.jpg │ ├── pic_small_75.jpg │ ├── pic_small_76.jpg │ ├── pic_small_77.jpg │ ├── pic_small_78.jpg │ ├── smiley_0.png │ ├── smiley_1.png │ ├── smiley_10.png │ ├── smiley_100.png │ ├── smiley_101.png │ ├── smiley_102.png │ ├── smiley_103.png │ ├── smiley_104.png │ ├── smiley_11.png │ ├── smiley_12.png │ ├── smiley_13.png │ ├── smiley_14.png │ ├── smiley_15.png │ ├── smiley_16.png │ ├── smiley_17.png │ ├── smiley_18.png │ ├── smiley_19.png │ ├── smiley_2.png │ ├── smiley_20.png │ ├── smiley_21.png │ ├── smiley_22.png │ ├── smiley_23.png │ ├── smiley_24.png │ ├── smiley_25.png │ ├── smiley_26.png │ ├── smiley_27.png │ ├── smiley_28.png │ ├── smiley_29.png │ ├── smiley_3.png │ ├── smiley_30.png │ ├── smiley_31.png │ ├── smiley_32.png │ ├── smiley_33.png │ ├── smiley_34.png │ ├── smiley_35.png │ ├── smiley_36.png │ ├── smiley_37.png │ ├── smiley_38.png │ ├── smiley_39.png │ ├── smiley_4.png │ ├── smiley_40.png │ ├── smiley_41.png │ ├── smiley_42.png │ ├── smiley_43.png │ ├── smiley_44.png │ ├── smiley_45.png │ ├── smiley_46.png │ ├── smiley_47.png │ ├── smiley_48.png │ ├── smiley_49.png │ ├── smiley_5.png │ ├── smiley_50.png │ ├── smiley_51.png │ ├── smiley_52.png │ ├── smiley_53.png │ ├── smiley_54.png │ ├── smiley_55.png │ ├── smiley_56.png │ ├── smiley_57.png │ ├── smiley_58.png │ ├── smiley_59.png │ ├── smiley_6.png │ ├── smiley_60.png │ ├── smiley_61.png │ ├── smiley_62.png │ ├── smiley_63.png │ ├── smiley_64.png │ ├── smiley_65.png │ ├── smiley_66.png │ ├── smiley_67.png │ ├── smiley_68.png │ ├── smiley_69.png │ ├── smiley_7.png │ ├── smiley_70.png │ ├── smiley_71.png │ ├── smiley_72.png │ ├── smiley_73.png │ ├── smiley_74.png │ ├── smiley_75.png │ ├── smiley_76.png │ ├── smiley_77.png │ ├── smiley_78.png │ ├── smiley_79.png │ ├── smiley_8.png │ ├── smiley_80.png │ ├── smiley_81.png │ ├── smiley_82.png │ ├── smiley_83.png │ ├── smiley_84.png │ ├── smiley_85.png │ ├── smiley_86.png │ ├── smiley_87.png │ ├── smiley_88.png │ ├── smiley_89.png │ ├── smiley_9.png │ ├── smiley_90.png │ ├── smiley_91.png │ ├── smiley_92.png │ ├── smiley_93.png │ ├── smiley_94.png │ ├── smiley_95.png │ ├── smiley_96.png │ ├── smiley_97.png │ ├── smiley_98.png │ └── smiley_99.png │ ├── drawable │ ├── selector_btn.xml │ ├── selector_btn_comment.xml │ ├── selector_btn_prize.xml │ ├── selector_btn_share.xml │ ├── selector_image_view.xml │ ├── selector_list_item.xml │ ├── shape_btn_normal.xml │ └── shape_btn_pressed.xml │ ├── layout │ ├── activity_main.xml │ ├── activity_textview.xml │ ├── item_image.xml │ └── item_weibo.xml │ ├── mipmap-hdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── mipmap-mdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── mipmap-xhdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── mipmap-xxhdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── mipmap-xxxhdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ └── values │ ├── color.xml │ ├── strings.xml │ └── styles.xml ├── art ├── ActivityNotFoundException.png └── 朋友圈列表的实现.png ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/workspace.xml 5 | /.idea/libraries 6 | .DS_Store 7 | /build 8 | /captures 9 | .externalNativeBuild 10 | 11 | # Built application files 12 | *.apk 13 | *.ap_ 14 | 15 | # Files for the ART/Dalvik VM 16 | *.dex 17 | 18 | # Java class files 19 | *.class 20 | 21 | # Generated files 22 | bin/ 23 | gen/ 24 | out/ 25 | 26 | # Gradle files 27 | .gradle/ 28 | build/ 29 | 30 | # Local configuration file (sdk path, etc) 31 | local.properties 32 | 33 | # Proguard folder generated by Eclipse 34 | proguard/ 35 | 36 | # Log Files 37 | *.log 38 | 39 | # Android Studio Navigation editor temp files 40 | .navigation/ 41 | 42 | # Android Studio captures folder 43 | captures/ 44 | 45 | # Intellij 46 | *.iml 47 | .idea/workspace.xml 48 | .idea/tasks.xml 49 | .idea/gradle.xml 50 | .idea/dictionaries 51 | .idea/libraries 52 | 53 | # Keystore files 54 | *.jks 55 | 56 | # External native build folder generated in Android Studio 2.2 and later 57 | .externalNativeBuild 58 | 59 | # Google Services (e.g. APIs or Firebase) 60 | google-services.json 61 | 62 | # Freeline 63 | freeline.py 64 | freeline/ 65 | freeline_project_description.json -------------------------------------------------------------------------------- /.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/dictionaries/Administrator.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 19 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 19 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | Android 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 62 | 63 | 64 | 65 | 66 | Android API 25 Platform 67 | 68 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 84 | 85 | 86 | 87 | 88 | 89 | -------------------------------------------------------------------------------- /.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 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "{}" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright {yyyy} {name of copyright owner} 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## 内容摘要 2 | 3 | 该控件能够应用于内容资讯展示的功能模块中,如:腾讯和新浪微博的微博列表,微信朋友圈及其它社交类应用的好友动态展示列表等;实现了类似腾讯微博的微博列表展示功能,包含微博文本内容,表情,图片,话题和用户可点超链接等(请参见如下效果图)。该功能在实际项目开发中非常常见,除微博应用外,微信的朋友圈,陌陌、QQ空间的好友动态等也都有类似功能 4 | 5 | 1. RecyclerView使用和嵌套问题 6 | 2. 动态设置图片网格宽高 7 | 3. 正则表达式的使用 8 | 4. Linkify实现自定义超链接 9 | 5. TextView富文本显示 10 | 6. 点赞动画渐变动画效果 11 | 12 | ## 效果图 13 | 14 | ![朋友圈列表的实现](art/朋友圈列表的实现.png) 15 | 16 | ## 列表的item布局文件 17 | 18 | ```xml 19 | 20 | 28 | 29 | 35 | 36 | 43 | 44 | 51 | 52 | 60 | 61 | 70 | 71 | 72 | 81 | 82 | 83 | 84 | 94 | 95 | 96 | 105 | 106 | 110 | 111 | 115 | 116 | 121 | 122 | 132 | 133 | 134 | 135 | 140 | 141 | 151 | 152 | 153 | 154 | 160 | 161 | 173 | 174 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | ``` 187 | 188 | item中的RecyclerView用于显示0-9张图片,根据服务器返回的图片数量不同显示的行列数和图片的大小也不同,需要动态设置,由于这个列表是RecyclerView,item中也使用了RecyclerView,这就产生了RecyclerView的嵌套 189 | 190 | id为tv_content的TextView用于显示内容,内容中包含了表情图片和超链接 191 | 192 | ## json数据格式 193 | 194 | ```json 195 | { 196 | "result":true, 197 | "weibo":[ 198 | { 199 | "avatar":"avatar_01", 200 | "comment":5, 201 | "content":"我装作看不懂的样子[呲牙][偷笑][偷笑],单身狗保重 [再见][再见] @冷笑话精选", 202 | "date":1489223423501, 203 | "forward":8, 204 | "imageUrls":[ 205 | "pic_1", 206 | "pic_2", 207 | "pic_3", 208 | "pic_4", 209 | "pic_5", 210 | "pic_6", 211 | "pic_7", 212 | "pic_8", 213 | "pic_9" 214 | ], 215 | "like":10, 216 | "user_introduction":"最冷笑话精选,每天分享笑话N枚,你的贴身开心果。", 217 | "username":"冷笑话精选" 218 | } 219 | ] 220 | } 221 | ``` 222 | 223 | 对应的实体类 224 | 225 | ```java 226 | public class WeChat { 227 | 228 | public boolean result; 229 | public List weibo; 230 | 231 | public static class WeiboEntity { 232 | public String avatar; 233 | public int comment; 234 | public String content; 235 | public long date; 236 | public int forward; 237 | public int like; 238 | public String user_introduction; 239 | public String username; 240 | public List imageUrls; 241 | } 242 | } 243 | ``` 244 | ## 动态设置图片宫格数 245 | 246 | 根据图片的数量,动态设置RecyclerView的列数和宽度 247 | 248 | - 如果图片数量为0,则隐藏RecyclerView 249 | - 如果图片数量为1,RecyclerView列数设为1列,宽度设为WRAP_CONTENT 250 | - 如果图片数量为4,RecyclerView列数设为2列,宽度设为两个图片宫格的宽度 251 | - 其它,RecyclerView列数设为3列,宽度设为MATCH_PARENT 252 | 253 | ```java 254 | // 刷新item布局中子控件的显示 255 | @Override 256 | protected void onRefreshView(WeChat.WeiboBean bean, int position) { 257 | // 显示用户名 258 | tvUser.setText(bean.getUsername()); 259 | 260 | // 显示用户介绍 261 | if (TextUtils.isEmpty(bean.getUser_introduction())) { 262 | tvUserIntroduction.setVisibility(View.GONE); 263 | } else { 264 | tvUserIntroduction.setVisibility(View.VISIBLE); 265 | tvUserIntroduction.setText(bean.getUser_introduction()); 266 | } 267 | // 显示头像 268 | int imageResId = Global.getResId(context, bean.getAvatar()); 269 | ivAvatar.setBackgroundResource(imageResId); 270 | 271 | // 微博内容 272 | // tvContent.setText(bean.getContent()); 273 | EmojiUtil.setText(tvContent, bean.getContent()); 274 | LinkifyUtil.addCustomLink(tvContent); 275 | LinkifyUtil.addCustomLink2(tvContent); 276 | 277 | // 发表时间 278 | tvDate.setText(Global.formatDate(bean.getDate())); 279 | 280 | // 显示微博图片 281 | int imageCount = bean.getImageUrls() == null 282 | ? 0 : bean.getImageUrls().size(); 283 | if (imageCount == 0) { // 没有微博图片 284 | rvWeiboImages.setVisibility(View.GONE); 285 | } else { // 有微博图片 286 | rvWeiboImages.setVisibility(View.VISIBLE); 287 | imageAdapter.setDatas(bean.getImageUrls()); // 刷新图片显示 288 | 289 | // 动态的指定图片宫格的宽高和RecyclerView的宽度 290 | // 1张图片 -> 1列 291 | // 4张图片 -> 2列 292 | // 其它 -> 3列 293 | ViewGroup.LayoutParams param = rvWeiboImages.getLayoutParams(); 294 | if (imageCount == 1) { 295 | layoutManager.setSpanCount(1); 296 | param.width = ViewGroup.LayoutParams.WRAP_CONTENT; 297 | } else if (imageCount == 4) { 298 | layoutManager.setSpanCount(2); 299 | // 两个图片宫格的宽度 300 | param.width = Global.getGridWidth() * 2; 301 | } else { // 3列 302 | layoutManager.setSpanCount(3); 303 | param.width = ViewGroup.LayoutParams.MATCH_PARENT; 304 | } 305 | } 306 | } 307 | ``` 308 | 309 | ## 动态设置图片的大小 310 | 311 | - 1张图片,宫格的宽高为图片的宽高 312 | - 其它情况,宫格的宽高为屏幕宽度的三分之一 313 | 314 | ```java 315 | // 刷新item子控件的显示 316 | @Override 317 | protected void onRefreshView(String imagePath, int position) { 318 | // 动态设置图片宫格的宽高 319 | // 1张图片 -> 宫格的宽高为图片的宽高 320 | // 其它情况 -> 宫格的宽高为Global.getGridWidth() 321 | ViewGroup.LayoutParams param = super.itemView.getLayoutParams(); 322 | if (super.adapter.getItemCount() == 1) { // 一张图片 323 | // 图片资源id 324 | int imageResId = Global.getResId(context, imagePath); 325 | Bitmap bitmap = BitmapFactory.decodeResource( 326 | context.getResources(), imageResId); 327 | // 指定宫格的宽高为图片的宽高 328 | param.width = bitmap.getWidth(); 329 | param.height = bitmap.getHeight(); 330 | // 显示图片 331 | ivImage.setBackgroundResource(imageResId); 332 | } else { // 多张图片 333 | // 显示宫格图片 334 | int imageResId = Global.getResId(context, imagePath); 335 | ivImage.setBackgroundResource(imageResId); 336 | 337 | param.width = Global.getGridWidth(); // 指定宫格图片的宽 338 | param.height = Global.getGridWidth(); 339 | } 340 | } 341 | ``` 342 | 343 | ## TextView富文本显示 344 | 345 | 显示文本中的表情,把文本中如`[呲牙][偷笑][偷笑]`的文字替换成表情图片,实现TextView的富文本显示(图文混排)。需要用正则去匹配文本中是否包含表情,匹配成功,表示文本中包含表情,用ImageSpan封装表情图片,再ImageSpan将设置给SpannableString,把文本中的表示表情的文字替换掉,最后将SpannableString设置给TextView即可。 346 | 347 | 正则参考: 348 | 349 | ``` 350 | [高兴] \\[([A-Za-z\u4E00-\u9FA5]+)\\] 351 | @用户 \\@([A-Za-z0-9\u4E00-\u9FA5]+) 352 | #话题# \\#([A-Za-z0-9\u4E00-\u9FA5]+)\\# 353 | ``` 354 | 355 | ```java 356 | public class EmojiUtil { 357 | 358 | /** 显示文本和表情 */ 359 | public static void setText(TextView textView, String text) { 360 | Context context = textView.getContext(); 361 | Resources resources = context.getResources(); 362 | SpannableString ss = new SpannableString(text); 363 | 364 | // 正则表达式: [高兴] 365 | Pattern p = Pattern.compile("\\[([A-Za-z\u4E00-\u9FA5]+)\\]"); 366 | Matcher matcher = p.matcher(ss); 367 | while (matcher.find()) { 368 | // 匹配到一个表情字符串 369 | String emoji = matcher.group(); 370 | // 过滤非表情符,比如: [xxx] 371 | if (EMOJI_DATAS.containsKey(emoji)) { // 是表情才处理 372 | // System.out.println("----------" + emoji); 373 | // 指定了一张图片 374 | Bitmap bitmap = BitmapFactory.decodeResource(resources, EMOJI_DATAS.get(emoji)); 375 | bitmap = Global.createBitmap(bitmap, Global.dp2px(20)); // 图片的宽高为20dp 376 | ImageSpan span = new ImageSpan(context, bitmap, ImageSpan.ALIGN_BOTTOM); 377 | int start = matcher.start(); 378 | int end = matcher.end(); 379 | ss.setSpan(span, start, end, 0); 380 | } 381 | } 382 | textView.setText(ss); 383 | } 384 | 385 | private static final HashMap EMOJI_DATAS = new HashMap(); 386 | 387 | static { 388 | EMOJI_DATAS.put("[微笑]", R.drawable.smiley_0); 389 | ... 390 | } 391 | } 392 | ``` 393 | ### 让文字显示颜色 394 | 395 | ```java 396 | /** 397 | * 让某几个文字显示颜色 398 | * @param string 399 | * @param color 400 | * @return 401 | */ 402 | private CharSequence showTextWithColor(String string,int color) { 403 | SpannableString ss = new SpannableString(string); 404 | // BackgroundColorSpan 背景色 405 | ForegroundColorSpan colorSpan = new ForegroundColorSpan(color); 406 | int end = string.indexOf("等"); 407 | ss.setSpan(colorSpan, 0, end, SpannableString.SPAN_INCLUSIVE_EXCLUSIVE); 408 | return ss; 409 | } 410 | ``` 411 | 412 | ### 让图片和文字一起显示 413 | 414 | ```java 415 | /** 416 | * 让图片和文字一起显示 417 | * @param text 418 | * @param imageRes 419 | * @return 420 | */ 421 | private SpannableString showTextWithImage(String text,int imageRes){ 422 | SpannableString ss = new SpannableString(text); 423 | Drawable drawable = getResources().getDrawable(imageRes); 424 | 425 | //设置边界 426 | // drawable.setBounds(0,0,drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight()); 427 | drawable.setBounds(0,0,20,20); 428 | ImageSpan span = new ImageSpan(drawable); 429 | 430 | int start = text.indexOf("["); 431 | int end = text.indexOf("]")+1; 432 | ss.setSpan(span, start,end,SpannableString.SPAN_INCLUSIVE_EXCLUSIVE); 433 | 434 | return ss; 435 | } 436 | ``` 437 | 438 | ### 设置超链接 439 | 440 | ```java 441 | // 让某段文字可以被点击并跳转超链接 442 | String text = "详情请点击百度"; 443 | Spanned spanned = Html.fromHtml(text); 444 | text3.setText(spanned); 445 | text3.setMovementMethod(LinkMovementMethod.getInstance());//设置可以点击超链接 446 | ``` 447 | 448 | ### 让某段文字可以被点击并自定义点击的逻辑操作 449 | 450 | ```java 451 | // 让某段文字可以被点击并自定义点击的逻辑操作 452 | String string = "王二,小明,大兵等觉得很赞"; 453 | SpannableString ss= new SpannableString(string); 454 | MyUrlSpan urlSpan= new MyUrlSpan(string.substring(0, string.indexOf(","))); 455 | ss.setSpan(urlSpan, 0, 2, SpannableString.SPAN_INCLUSIVE_EXCLUSIVE); 456 | text4.setText(ss); 457 | text4.setMovementMethod(LinkMovementMethod.getInstance()); 458 | ``` 459 | 460 | ```java 461 | class MyUrlSpan extends URLSpan{ 462 | public MyUrlSpan(String url) { 463 | super(url); 464 | } 465 | 466 | @Override 467 | public void onClick(View widget) { 468 | // 自定义点击的操作逻辑,默认实现是获取url,打开浏览器 469 | Toast.makeText(MainActivity.this, getURL(), 0).show(); 470 | widget.clearFocus(); 471 | } 472 | 473 | @Override 474 | public void updateDrawState(TextPaint ds) { 475 | super.updateDrawState(ds); 476 | ds.setColor(Color.RED); // 设置文字颜色 477 | ds.setUnderlineText(false); // 设置是否显示下划线 478 | } 479 | } 480 | ``` 481 | ## 自定义超链接 482 | 483 | 关于TextView 网页,电话,邮箱的自动识别。设置android:autoLink="email|web|phone|map"属性后,TextView 可自动识别电话、邮箱、网址、地图为超链接。 484 | 485 | ```xml 486 | 494 | ``` 495 | 496 | 添加自定义超链接,把内容中如`@冷笑话精选`、`#编程#`、`#讲故事#`的文本显示为超链接,高亮显示并支持点击。先使用Linkify.MatchFilter 匹配过滤器过滤内容中的超链接,TextView在显示的内容要识别链接时,调用Linkify.addLinks() 497 | 498 | ```java 499 | public class LinkifyUtil { 500 | 501 | /** 502 | * 添加自定义超链接 503 | */ 504 | public static void addCustomLink(TextView textView) { 505 | // @用户: 506 | Pattern pattern = Pattern.compile("\\@([A-Za-z0-9\u4E00-\u9FA5]+)\\.?"); 507 | // http://www.qq.com/path?uid=1&username=xx 508 | String scheme = "weibo://user?uid="; 509 | 510 | // 匹配过滤器 511 | Linkify.MatchFilter matchFilter = new Linkify.MatchFilter() { 512 | @Override 513 | public boolean acceptMatch(CharSequence s, int start, int end) { 514 | String text = s.subSequence(start, end).toString(); 515 | // System.out.println("----text: " + text); 516 | if (text.endsWith(".")) { // 邮箱,不需要匹配 517 | return false; 518 | } else { 519 | return true; // 返回true会显示为超链接 520 | } 521 | } 522 | }; 523 | Linkify.TransformFilter transformFilter = null; 524 | Linkify.addLinks(textView, pattern, scheme, matchFilter, transformFilter); 525 | } 526 | 527 | public static void addCustomLink2(TextView textView) { 528 | // @用户: 529 | Pattern pattern = Pattern.compile("\\#([A-Za-z0-9\u4E00-\u9FA5]+)\\#"); 530 | // http://www.qq.com/path?uid=1&username=xx 531 | String scheme = "weibo://topic?uid="; 532 | // 匹配过滤器 533 | Linkify.MatchFilter matchFilter = new Linkify.MatchFilter() { 534 | @Override 535 | public boolean acceptMatch(CharSequence s, int start, int end) { 536 | String text = s.subSequence(start, end).toString(); 537 | System.out.println("----text: " + text); 538 | return true; 539 | } 540 | }; 541 | Linkify.TransformFilter transformFilter = new Linkify.TransformFilter() { 542 | @Override 543 | public String transformUrl(Matcher match, String url) { 544 | return match.group(1); 545 | } 546 | }; 547 | Linkify.addLinks(textView, pattern, scheme, matchFilter, transformFilter); 548 | } 549 | } 550 | ``` 551 | 设置自定义的链接后,点击超链接后会出错。 因为没有找到Activity可以处理发起的Intent, 需要定义两个Activity来接收意图中的参数。 552 | 553 | ![](art/ActivityNotFoundException.png) 554 | 555 | 当点击超链接的时候,会调起/启动一个与Linkify.addLinks()方法中的scheme对应的Activity 556 | 557 | ```java 558 | public class TopicActivity extends AppCompatActivity { 559 | 560 | @Override 561 | protected void onCreate(Bundle savedInstanceState) { 562 | super.onCreate(savedInstanceState); 563 | 564 | // weibo://user?uid=@冷笑话精选 565 | Uri uri = getIntent().getData(); 566 | String topic = uri.getQueryParameter("uid"); 567 | 568 | TextView textView = new TextView(this); 569 | textView.setGravity(Gravity.CENTER); 570 | textView.setTextColor(Color.RED); 571 | textView.setText(topic); 572 | textView.setTextSize(20); 573 | 574 | setContentView(textView); 575 | } 576 | 577 | } 578 | ``` 579 | 580 | ```java 581 | public class UserActivity extends AppCompatActivity { 582 | 583 | @Override 584 | protected void onCreate(Bundle savedInstanceState) { 585 | super.onCreate(savedInstanceState); 586 | 587 | // weibo://user?uid=@冷笑话精选 588 | Uri uri = getIntent().getData(); 589 | String username = uri.getQueryParameter("uid"); 590 | 591 | TextView textView = new TextView(this); 592 | textView.setGravity(Gravity.CENTER); 593 | textView.setTextColor(Color.GRAY); 594 | textView.setText(username); 595 | textView.setTextSize(20); 596 | 597 | setContentView(textView); 598 | } 599 | 600 | } 601 | ``` 602 | 603 | 在清单文件中配置以上Activity,给Activity设置action、category、data 604 | 605 | ```xml 606 | 607 | 608 | 609 | 610 | 611 | 612 | 613 | 614 | 615 | 616 | 617 | 618 | 619 | 620 | 621 | ``` 622 | ## 点赞动画 623 | 624 | 在MainActivity的布局文件中,有一个TextView,是用来执行点赞后的+1的动画(向上平移,透明度变小,放大)。 该控件开始时隐藏,执行点赞动画时,注意不是列表项中的控件执行动画。 625 | 626 | ```java 627 | // WeiboHolder.java 628 | cbLike.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 629 | @Override 630 | public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 631 | if (isChecked) { 632 | // 获取当前点击控件相对于窗口的所在位置 633 | int[] locations = new int[2]; 634 | tvLike.getLocationInWindow(locations); 635 | ((MainActivity) context).animateUp(locations); 636 | } 637 | } 638 | }); 639 | ``` 640 | 641 | ```java 642 | public void animateUp(int[] locations) { 643 | // 减去状态栏高度24dp 644 | int currentY = locations[1] - Global.dp2px(24); 645 | tvLike.setVisibility(View.VISIBLE); 646 | tvLike.setTranslationX(locations[0]); 647 | tvLike.setTranslationY(currentY); 648 | tvLike.setScaleY(1); 649 | tvLike.setScaleX(1); 650 | tvLike.setAlpha(1f); 651 | 652 | // 往上移动30dp 653 | int top = currentY - Global.dp2px(30); 654 | tvLike.animate().alpha(0).translationY(top) 655 | .setInterpolator(new DecelerateInterpolator()) 656 | .scaleX(1.2f).scaleY(1.2f).setDuration(1000); 657 | } 658 | ``` -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 25 5 | buildToolsVersion "25.0.2" 6 | defaultConfig { 7 | applicationId "com.jackchan.wechat" 8 | minSdkVersion 14 9 | targetSdkVersion 25 10 | versionCode 1 11 | versionName "1.0" 12 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 13 | } 14 | buildTypes { 15 | release { 16 | minifyEnabled false 17 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 18 | } 19 | } 20 | } 21 | 22 | dependencies { 23 | compile fileTree(include: ['*.jar'], dir: 'libs') 24 | androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 25 | exclude group: 'com.android.support', module: 'support-annotations' 26 | }) 27 | testCompile 'junit:junit:4.12' 28 | 29 | compile 'com.android.support:appcompat-v7:25.3.1' 30 | compile 'com.android.support:recyclerview-v7:25.3.1' 31 | compile 'com.google.code.gson:gson:2.8.0' 32 | } 33 | -------------------------------------------------------------------------------- /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:\MyProgram\green\android-sdk-windows/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 | 19 | # Uncomment this to preserve the line number information for 20 | # debugging stack traces. 21 | #-keepattributes SourceFile,LineNumberTable 22 | 23 | # If you keep the line number information, uncomment this to 24 | # hide the original source file name. 25 | #-renamesourcefileattribute SourceFile 26 | -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 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 | -------------------------------------------------------------------------------- /app/src/main/assets/weibo_list.json: -------------------------------------------------------------------------------- 1 | { 2 | "result":true, 3 | "weibo":[ 4 | { 5 | "avatar":"avatar_01", 6 | "comment":5, 7 | "content":"我装作看不懂的样子[呲牙][偷笑][偷笑],单身狗保重 [再见][再见] @冷笑话精选", 8 | "date":1489223423501, 9 | "forward":8, 10 | "imageUrls":[ 11 | "pic_1", 12 | "pic_2", 13 | "pic_3", 14 | "pic_4", 15 | "pic_5", 16 | "pic_6", 17 | "pic_7", 18 | "pic_8", 19 | "pic_9" 20 | ], 21 | "like":10, 22 | "user_introduction":"最冷笑话精选,每天分享笑话N枚,你的贴身开心果。", 23 | "username":"冷笑话精选" 24 | }, 25 | { 26 | "avatar":"avatar_01", 27 | "comment":5, 28 | "content":"我装作看不懂的样子话题 #编程# #黑马程序员# 用户 @冷笑话精选 ", 29 | "date":1489223423501, 30 | "forward":8, 31 | "like":10, 32 | "user_introduction":"最冷笑话精选,每天分享笑话N枚,你的贴身开心果。", 33 | "username":"冷笑话精选" 34 | }, 35 | { 36 | "avatar":"avatar_02", 37 | "comment":5, 38 | "content":"#讲故事# 今天看见一个老人摔倒,于是就过去扶, 没想到他一把抓住我的手,我急忙说:监控会还我清白! 老人说:嘿嘿别傻了这里没监控! 我直接一脚踹过去。TMD没监控也敢这么吊。 他儿子及时出现说,我们在边上录下你踹人的视频。 我冷笑一声出示了南京人民医院提供的急性短暂性精神障碍证明。", 39 | "date":1489223423501, 40 | "forward":8, 41 | "imageUrls":[], 42 | "like":10, 43 | "user_introduction":"", 44 | "username":"作家崔成浩" 45 | }, 46 | { 47 | "avatar":"avatar_03", 48 | "comment":5, 49 | "content":"#心理学# 我曾在四十度的高温下扬言, 我宁可冻死也不愿热成狗 ,直到今天我被冻成狗 ,我才明白太美的承诺因为太年轻。。。", 50 | "date":1489223423501, 51 | "forward":8, 52 | "imageUrls":["pic_small_101"], 53 | "like":10, 54 | "username":"犯罪心理学" 55 | }, 56 | { 57 | "avatar":"avatar_02", 58 | "comment":5, 59 | "content":"在北京大阅兵之际,奥巴马跑到一处不毛之地录制什么《荒野求生》,这说明什么?这说明奥巴马感受到了来自东方的威慑,为自己悲惨的未来慌忙做打算。", 60 | "date":1489223423501, 61 | "forward":8, 62 | "imageUrls":[ 63 | "pic_small_100", 64 | "pic_small_102" 65 | ], 66 | "like":10, 67 | "user_introduction":"", 68 | "username":"作家崔成浩" 69 | }, 70 | { 71 | "avatar":"avatar_04", 72 | "comment":5, 73 | "content":"【乌镇】隶属浙江省嘉兴市桐乡,西临湖州市,北界江苏苏州市吴江区,为二省三市交界之处。乌镇 曾名乌墩和青墩,具有六千余年悠久历史,同时是”中国最后的枕水人家“。是典型的江南地区汉族水乡古镇,有“鱼米之乡,丝绸之府”之称。", 74 | "date":1489223423501, 75 | "forward":8, 76 | "imageUrls":[ 77 | "pic_small_45", 78 | "pic_small_46", 79 | "pic_small_47" 80 | ], 81 | "like":10, 82 | "user_introduction":"一介文盲,半个愤青,糊乱涂墨", 83 | "username":"西门吹雪" 84 | }, 85 | { 86 | "avatar":"avatar_04", 87 | "comment":5, 88 | "content":"冬日西湖美景(1)", 89 | "date":1489223423501, 90 | "forward":8, 91 | "imageUrls":[ 92 | "pic_small_70", 93 | "pic_small_71", 94 | "pic_small_72", 95 | "pic_small_73" 96 | ], 97 | "like":10, 98 | "user_introduction":"一介文盲,半个愤青,糊乱涂墨", 99 | "username":"西门吹雪" 100 | }, 101 | { 102 | "avatar":"avatar_04", 103 | "comment":5, 104 | "content":"水墨宏村 ——位于安徽省黄山西南麓,距黟县县城11公里,始建于南宋绍兴年间(公元1131——1162年),距今约有900年的历史。", 105 | "date":1489223423501, 106 | "forward":8, 107 | "imageUrls":[ 108 | "pic_small_40", 109 | "pic_small_41", 110 | "pic_small_42", 111 | "pic_small_43", 112 | "pic_small_44" 113 | ], 114 | "like":10, 115 | "user_introduction":"一介文盲,半个愤青,糊乱涂墨", 116 | "username":"西门吹雪" 117 | }, 118 | { 119 | "avatar":"avatar_04", 120 | "comment":5, 121 | "content":"【乌镇】隶属浙江省嘉兴市桐乡,西临湖州市,北界江苏苏州市吴江区,为二省三市交界之处。乌镇 曾名乌墩和青墩,具有六千余年悠久历史,同时是“中国最后的枕水人家”。是典型的江南地区汉族水乡古镇,有“鱼米之乡,丝绸之府”之称。", 122 | "date":1489223423501, 123 | "forward":8, 124 | "imageUrls":[ 125 | "pic_small_13", 126 | "pic_small_14", 127 | "pic_small_15", 128 | "pic_small_16", 129 | "pic_small_17", 130 | "pic_small_18" 131 | ], 132 | "like":10, 133 | "user_introduction":"一介文盲,半个愤青,糊乱涂墨", 134 | "username":"西门吹雪" 135 | }, 136 | { 137 | "avatar":"avatar_01", 138 | "comment":5, 139 | "content":"记得上学的时候考试将至,全寝室的人都在看书,只有大哥在气定神闲地在打着游戏。我问道:“你看完了?” 他说:“我看开了。”", 140 | "date":1489223423501, 141 | "forward":8, 142 | "imageUrls":[], 143 | "like":10, 144 | "user_introduction":"最冷笑话精选,每天分享笑话N枚,你的贴身开心果。", 145 | "username":"冷笑话精选" 146 | }, 147 | { 148 | "avatar":"avatar_04", 149 | "comment":5, 150 | "content":"冬日西湖美景(2)", 151 | "date":1489223423501, 152 | "forward":8, 153 | "imageUrls":[ 154 | "pic_small_74", 155 | "pic_small_75", 156 | "pic_small_76", 157 | "pic_small_77" 158 | ], 159 | "like":10, 160 | "user_introduction":"一介文盲,半个愤青,糊乱涂墨", 161 | "username":"西门吹雪" 162 | }, 163 | { 164 | "avatar":"avatar_04", 165 | "comment":5, 166 | "content":"驾孤叶一片,荡人世沧桑,孤独和寂寥其实是人生的另一种宁静。", 167 | "date":1489223423501, 168 | "forward":8, 169 | "imageUrls":[ 170 | "pic_small_01", 171 | "pic_small_02", 172 | "pic_small_03", 173 | "pic_small_04", 174 | "pic_small_05", 175 | "pic_small_06", 176 | "pic_small_07", 177 | "pic_small_08", 178 | "pic_small_09" 179 | ], 180 | "like":10, 181 | "user_introduction":"一介文盲,半个愤青,糊乱涂墨", 182 | "username":"西门吹雪" 183 | }, 184 | { 185 | "avatar":"avatar_04", 186 | "comment":5, 187 | "content":"心中无缺叫富,被人需要叫贵;快乐不是一种性格,而是一种能力。解决烦恼的最佳办法,就是忘掉烦恼;笑看风云淡,坐看云起时,不争就是慈悲,不辩就是智慧,不闻就是清净,不看就是自在,原谅就是解脱,知足就是放下;不乱于心,不困于情。不畏将来,不念过往。如此,安好!", 188 | "date":1489223423501, 189 | "forward":8, 190 | "imageUrls":[ 191 | "pic_small_19", 192 | "pic_small_20", 193 | "pic_small_21", 194 | "pic_small_22", 195 | "pic_small_23", 196 | "pic_small_24", 197 | "pic_small_25", 198 | "pic_small_26", 199 | "pic_small_27" 200 | ], 201 | "like":10, 202 | "user_introduction":"一介文盲,半个愤青,糊乱涂墨", 203 | "username":"西门吹雪" 204 | }, 205 | { 206 | "avatar":"avatar_05", 207 | "comment":5, 208 | "content":"远离雾霾的净土,这里是西藏。", 209 | "date":1489223423501, 210 | "forward":8, 211 | "imageUrls":[ 212 | "pic_small_50", 213 | "pic_small_51", 214 | "pic_small_52", 215 | "pic_small_53", 216 | "pic_small_54", 217 | "pic_small_55", 218 | "pic_small_56", 219 | "pic_small_57", 220 | "pic_small_58" 221 | ], 222 | "like":10, 223 | "user_introduction":"", 224 | "username":"暖心画报" 225 | }, 226 | { 227 | "avatar":"avatar_04", 228 | "comment":5, 229 | "content":"月落乌啼霜满天,江枫渔火对愁眠。 姑苏城外寒山寺,夜半钟声到客船。", 230 | "date":1489223423501, 231 | "forward":8, 232 | "imageUrls":[ 233 | "pic_small_60", 234 | "pic_small_61", 235 | "pic_small_62", 236 | "pic_small_63", 237 | "pic_small_64", 238 | "pic_small_65", 239 | "pic_small_66", 240 | "pic_small_67", 241 | "pic_small_68" 242 | ], 243 | "like":10, 244 | "user_introduction":"一介文盲,半个愤青,糊乱涂墨", 245 | "username":"西门吹雪" 246 | } 247 | ] 248 | } -------------------------------------------------------------------------------- /app/src/main/java/com/jackchan/wechat/base/App.java: -------------------------------------------------------------------------------- 1 | package com.jackchan.wechat.base; 2 | 3 | import android.app.Application; 4 | 5 | /** 6 | * ============================================================ 7 | * Copyright:JackChan和他的朋友们有限公司版权所有 (c) 2017 8 | * Author: JackChan 9 | * Email: 815712739@qq.com 10 | * GitHub: https://github.com/JackChan1999 11 | * GitBook: https://www.gitbook.com/@alleniverson 12 | * CSDN博客: http://blog.csdn.net/axi295309066 13 | * 个人博客: https://jackchan1999.github.io/ 14 | * 微博: AndroidDeveloper 15 | *

16 | * Project_Name:WeChatDemo 17 | * Package_Name:com.jackchan.wechat 18 | * Version:1.0 19 | * time:2017/5/16 12:39 20 | * des :微信朋友圈,QQ空间,微博等列表展示的功能实现 21 | * gitVersion:2.12.0.windows.1 22 | * updateAuthor:AllenIverson 23 | * updateDate:2017/5/16 12:39 24 | * updateDes:${TODO} 25 | * ============================================================ 26 | */ 27 | public class App extends Application { 28 | 29 | @Override 30 | public void onCreate() { 31 | super.onCreate(); 32 | 33 | // 初始化Global类 34 | Global.init(this); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /app/src/main/java/com/jackchan/wechat/base/Global.java: -------------------------------------------------------------------------------- 1 | package com.jackchan.wechat.base; 2 | 3 | import android.content.Context; 4 | import android.graphics.Bitmap; 5 | import android.graphics.Matrix; 6 | import android.text.format.DateFormat; 7 | import android.util.DisplayMetrics; 8 | import android.widget.Toast; 9 | 10 | import java.io.ByteArrayOutputStream; 11 | import java.io.InputStream; 12 | 13 | /** 14 | * ============================================================ 15 | * Copyright:JackChan和他的朋友们有限公司版权所有 (c) 2017 16 | * Author: JackChan 17 | * Email: 815712739@qq.com 18 | * GitHub: https://github.com/JackChan1999 19 | * GitBook: https://www.gitbook.com/@alleniverson 20 | * CSDN博客: http://blog.csdn.net/axi295309066 21 | * 个人博客: https://jackchan1999.github.io/ 22 | * 微博: AndroidDeveloper 23 | *

24 | * Project_Name:WeChatDemo 25 | * Package_Name:com.jackchan.wechat 26 | * Version:1.0 27 | * time:2017/5/16 12:39 28 | * des :微信朋友圈,QQ空间,微博等列表展示的功能实现 29 | * gitVersion:2.12.0.windows.1 30 | * updateAuthor:AllenIverson 31 | * updateDate:2017/5/16 12:39 32 | * updateDes:${TODO} 33 | * ============================================================ 34 | */ 35 | public class Global { 36 | 37 | private static Context context; 38 | 39 | private static int mScreenWidth; 40 | private static int mScreenHeight; 41 | private static float mDensity; 42 | 43 | public static void init(Context context) { 44 | Global.context = context; 45 | 46 | DisplayMetrics dm = context.getResources().getDisplayMetrics(); 47 | mScreenWidth = dm.widthPixels; 48 | mScreenHeight = dm.heightPixels; 49 | mDensity = dm.density; 50 | } 51 | 52 | /** 单位转换dp转px */ 53 | public static int dp2px(int dp) { 54 | return (int) (dp * mDensity + 0.5f); 55 | } 56 | 57 | public static void showToast(String msg) { 58 | Toast.makeText(context, msg, Toast.LENGTH_SHORT).show(); 59 | } 60 | 61 | /** 62 | * 读取assets目录下的文件 63 | * @param fileName 文件名 64 | * @return 65 | */ 66 | public static String readAssets(String fileName) { 67 | String str = ""; 68 | try { 69 | InputStream stream = context.getResources().getAssets().open(fileName); 70 | byte[] buffer = new byte[1024]; 71 | int len = -1; 72 | ByteArrayOutputStream baos = new ByteArrayOutputStream(); 73 | while ((len = stream.read(buffer)) != -1) { 74 | // 读取数据到内存中 75 | baos.write(buffer, 0, len); 76 | } 77 | str = baos.toString("utf-8"); 78 | stream.close(); 79 | baos.close(); 80 | } catch (Exception e) { 81 | e.printStackTrace(); 82 | } 83 | return str; 84 | } 85 | 86 | public static String formatDate(long time) { 87 | return DateFormat.format("yyyy-MM-dd kk:mm:ss", time).toString(); 88 | } 89 | 90 | /** 91 | * 根据图片名称获取资源id 92 | * 例如:传入"avatar_01", 表示获取整数值R.drawable.avatar_01 93 | * @param context 94 | * @param drawableName 95 | * @return 96 | */ 97 | public static int getResId(Context context, String drawableName) { 98 | return context.getResources().getIdentifier( 99 | drawableName, "drawable", context.getPackageName()); 100 | } 101 | 102 | /** 获取宫格图片的宽高 */ 103 | public static int getGridWidth() { 104 | // 左边距: 10dp 105 | // 右边距: 10dp 106 | // 图片宫格的宽度 = (屏幕宽度-左边距-右边距) / 3 107 | return (Global.mScreenWidth - Global.dp2px(10 + 10)) / 3; 108 | } 109 | 110 | /** 111 | * 根据一张原图生成一张指定宽高的图片 112 | * 113 | * @param bitmap 原图 114 | * @param width 要生成图片的宽高 115 | * @return 116 | */ 117 | public static Bitmap createBitmap(Bitmap bitmap, int width) { 118 | float scaleX = ((float)width) / bitmap.getWidth(); 119 | float scaleY = ((float)width) / bitmap.getHeight(); 120 | Matrix matrix = new Matrix(); 121 | matrix.postScale(scaleX, scaleY); 122 | return Bitmap.createBitmap(bitmap, 0, 0, 123 | bitmap.getWidth(), bitmap.getHeight(), matrix, true); 124 | } 125 | } 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | -------------------------------------------------------------------------------- /app/src/main/java/com/jackchan/wechat/bean/WeChat.java: -------------------------------------------------------------------------------- 1 | package com.jackchan.wechat.bean; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * ============================================================ 7 | * Copyright:JackChan和他的朋友们有限公司版权所有 (c) 2017 8 | * Author: JackChan 9 | * Email: 815712739@qq.com 10 | * GitHub: https://github.com/JackChan1999 11 | * GitBook: https://www.gitbook.com/@alleniverson 12 | * CSDN博客: http://blog.csdn.net/axi295309066 13 | * 个人博客: https://jackchan1999.github.io/ 14 | * 微博: AndroidDeveloper 15 | *

16 | * Project_Name:WeChatDemo 17 | * Package_Name:com.jackchan.wechat 18 | * Version:1.0 19 | * time:2017/5/16 12:39 20 | * des :微信朋友圈,QQ空间,微博等列表展示的功能实现 21 | * gitVersion:2.12.0.windows.1 22 | * updateAuthor:AllenIverson 23 | * updateDate:2017/5/16 12:39 24 | * updateDes:${TODO} 25 | * ============================================================ 26 | */ 27 | public class WeChat { 28 | 29 | /** 30 | * result : true 31 | * weibo : [{"avatar":"avatar_01","comment":5, 32 | * "content":"我装作看不懂的样子[呲牙][偷笑][偷笑],单身狗保重 [再见][再见] @冷笑话精选","date":1489223423501, 33 | * "forward":8,"imageUrls":["pic_1","pic_2","pic_3","pic_4","pic_5","pic_6", 34 | * "pic_7","pic_8","pic_9"],"like":10, 35 | * "user_introduction":"最冷笑话精选,每天分享笑话N枚,你的贴身开心果。","username":"冷笑话精选"}, 36 | * {"avatar":"avatar_01","comment":5,"content":"我装作看不懂的样子话题 #编程# #黑马程序员# 用户 @冷笑话精选 37 | * ","date":1489223423501,"forward":8,"like":10, 38 | * "user_introduction":"最冷笑话精选,每天分享笑话N枚,你的贴身开心果。","username":"冷笑话精选"}, 39 | * {"avatar":"avatar_02","comment":5,"content":"#讲故事# 今天看见一个老人摔倒,于是就过去扶, 40 | * 没想到他一把抓住我的手,我急忙说:监控会还我清白! 老人说:嘿嘿别傻了这里没监控! 我直接一脚踹过去。TMD没监控也敢这么吊。 41 | * 他儿子及时出现说,我们在边上录下你踹人的视频。 我冷笑一声出示了南京人民医院提供的急性短暂性精神障碍证明。","date":1489223423501, 42 | * "forward":8,"imageUrls":[],"like":10,"user_introduction":"","username":"作家崔成浩"}, 43 | * {"avatar":"avatar_03","comment":5,"content":"#心理学# 我曾在四十度的高温下扬言, 我宁可冻死也不愿热成狗 44 | * ,直到今天我被冻成狗 ,我才明白太美的承诺因为太年轻。。。","date":1489223423501,"forward":8, 45 | * "imageUrls":["pic_small_101"],"like":10,"username":"犯罪心理学"}, 46 | * {"avatar":"avatar_02","comment":5, 47 | * "content":"在北京大阅兵之际,奥巴马跑到一处不毛之地录制什么《荒野求生》,这说明什么?这说明奥巴马感受到了来自东方的威慑,为自己悲惨的未来慌忙做打算。","date":1489223423501,"forward":8,"imageUrls":["pic_small_100","pic_small_102"],"like":10,"user_introduction":"","username":"作家崔成浩"},{"avatar":"avatar_04","comment":5,"content":"【乌镇】隶属浙江省嘉兴市桐乡,西临湖州市,北界江苏苏州市吴江区,为二省三市交界之处。乌镇 曾名乌墩和青墩,具有六千余年悠久历史,同时是\u201d中国最后的枕水人家\u201c。是典型的江南地区汉族水乡古镇,有\u201c鱼米之乡,丝绸之府\u201d之称。","date":1489223423501,"forward":8,"imageUrls":["pic_small_45","pic_small_46","pic_small_47"],"like":10,"user_introduction":"一介文盲,半个愤青,糊乱涂墨","username":"鸡汤"},{"avatar":"avatar_04","comment":5,"content":"冬日西湖美景(1)","date":1489223423501,"forward":8,"imageUrls":["pic_small_70","pic_small_71","pic_small_72","pic_small_73"],"like":10,"user_introduction":"一介文盲,半个愤青,糊乱涂墨","username":"鸡汤"},{"avatar":"avatar_04","comment":5,"content":"水墨宏村 \u2014\u2014位于安徽省黄山西南麓,距黟县县城11公里,始建于南宋绍兴年间(公元1131\u2014\u20141162年),距今约有900年的历史。","date":1489223423501,"forward":8,"imageUrls":["pic_small_40","pic_small_41","pic_small_42","pic_small_43","pic_small_44"],"like":10,"user_introduction":"一介文盲,半个愤青,糊乱涂墨","username":"鸡汤"},{"avatar":"avatar_04","comment":5,"content":"【乌镇】隶属浙江省嘉兴市桐乡,西临湖州市,北界江苏苏州市吴江区,为二省三市交界之处。乌镇 曾名乌墩和青墩,具有六千余年悠久历史,同时是\u201c中国最后的枕水人家\u201d。是典型的江南地区汉族水乡古镇,有\u201c鱼米之乡,丝绸之府\u201d之称。","date":1489223423501,"forward":8,"imageUrls":["pic_small_13","pic_small_14","pic_small_15","pic_small_16","pic_small_17","pic_small_18"],"like":10,"user_introduction":"一介文盲,半个愤青,糊乱涂墨","username":"鸡汤"},{"avatar":"avatar_01","comment":5,"content":"记得上学的时候考试将至,全寝室的人都在看书,只有大哥在气定神闲地在打着游戏。我问道:\u201c你看完了?\u201d 他说:\u201c我看开了。\u201d","date":1489223423501,"forward":8,"imageUrls":[],"like":10,"user_introduction":"最冷笑话精选,每天分享笑话N枚,你的贴身开心果。","username":"冷笑话精选"},{"avatar":"avatar_04","comment":5,"content":"冬日西湖美景(2)","date":1489223423501,"forward":8,"imageUrls":["pic_small_74","pic_small_75","pic_small_76","pic_small_77"],"like":10,"user_introduction":"一介文盲,半个愤青,糊乱涂墨","username":"鸡汤"},{"avatar":"avatar_04","comment":5,"content":"驾孤叶一片,荡人世沧桑,孤独和寂寥其实是人生的另一种宁静。","date":1489223423501,"forward":8,"imageUrls":["pic_small_01","pic_small_02","pic_small_03","pic_small_04","pic_small_05","pic_small_06","pic_small_07","pic_small_08","pic_small_09"],"like":10,"user_introduction":"一介文盲,半个愤青,糊乱涂墨","username":"鸡汤"},{"avatar":"avatar_04","comment":5,"content":"心中无缺叫富,被人需要叫贵;快乐不是一种性格,而是一种能力。解决烦恼的最佳办法,就是忘掉烦恼;笑看风云淡,坐看云起时,不争就是慈悲,不辩就是智慧,不闻就是清净,不看就是自在,原谅就是解脱,知足就是放下;不乱于心,不困于情。不畏将来,不念过往。如此,安好!","date":1489223423501,"forward":8,"imageUrls":["pic_small_19","pic_small_20","pic_small_21","pic_small_22","pic_small_23","pic_small_24","pic_small_25","pic_small_26","pic_small_27"],"like":10,"user_introduction":"一介文盲,半个愤青,糊乱涂墨","username":"鸡汤"},{"avatar":"avatar_05","comment":5,"content":"远离雾霾的净土,这里是西藏。","date":1489223423501,"forward":8,"imageUrls":["pic_small_50","pic_small_51","pic_small_52","pic_small_53","pic_small_54","pic_small_55","pic_small_56","pic_small_57","pic_small_58"],"like":10,"user_introduction":"","username":"暖心画报"},{"avatar":"avatar_04","comment":5,"content":"月落乌啼霜满天,江枫渔火对愁眠。 姑苏城外寒山寺,夜半钟声到客船。","date":1489223423501,"forward":8,"imageUrls":["pic_small_60","pic_small_61","pic_small_62","pic_small_63","pic_small_64","pic_small_65","pic_small_66","pic_small_67","pic_small_68"],"like":10,"user_introduction":"一介文盲,半个愤青,糊乱涂墨","username":"鸡汤"}] 48 | */ 49 | 50 | private boolean result; 51 | private List weibo; 52 | 53 | public boolean isResult() { 54 | return result; 55 | } 56 | 57 | public void setResult(boolean result) { 58 | this.result = result; 59 | } 60 | 61 | public List getWeibo() { 62 | return weibo; 63 | } 64 | 65 | public void setWeibo(List weibo) { 66 | this.weibo = weibo; 67 | } 68 | 69 | public static class WeiboBean { 70 | /** 71 | * avatar : avatar_01 72 | * comment : 5 73 | * content : 我装作看不懂的样子[呲牙][偷笑][偷笑],单身狗保重 [再见][再见] @冷笑话精选 74 | * date : 1489223423501 75 | * forward : 8 76 | * imageUrls : ["pic_1","pic_2","pic_3","pic_4","pic_5","pic_6","pic_7", 77 | * "pic_8","pic_9"] 78 | * like : 10 79 | * user_introduction : 最冷笑话精选,每天分享笑话N枚,你的贴身开心果。 80 | * username : 冷笑话精选 81 | */ 82 | 83 | private String avatar; 84 | private int comment; 85 | private String content; 86 | private long date; 87 | private int forward; 88 | private int like; 89 | private String user_introduction; 90 | private String username; 91 | private List imageUrls; 92 | 93 | public String getAvatar() { 94 | return avatar; 95 | } 96 | 97 | public void setAvatar(String avatar) { 98 | this.avatar = avatar; 99 | } 100 | 101 | public int getComment() { 102 | return comment; 103 | } 104 | 105 | public void setComment(int comment) { 106 | this.comment = comment; 107 | } 108 | 109 | public String getContent() { 110 | return content; 111 | } 112 | 113 | public void setContent(String content) { 114 | this.content = content; 115 | } 116 | 117 | public long getDate() { 118 | return date; 119 | } 120 | 121 | public void setDate(long date) { 122 | this.date = date; 123 | } 124 | 125 | public int getForward() { 126 | return forward; 127 | } 128 | 129 | public void setForward(int forward) { 130 | this.forward = forward; 131 | } 132 | 133 | public int getLike() { 134 | return like; 135 | } 136 | 137 | public void setLike(int like) { 138 | this.like = like; 139 | } 140 | 141 | public String getUser_introduction() { 142 | return user_introduction; 143 | } 144 | 145 | public void setUser_introduction(String user_introduction) { 146 | this.user_introduction = user_introduction; 147 | } 148 | 149 | public String getUsername() { 150 | return username; 151 | } 152 | 153 | public void setUsername(String username) { 154 | this.username = username; 155 | } 156 | 157 | public List getImageUrls() { 158 | return imageUrls; 159 | } 160 | 161 | public void setImageUrls(List imageUrls) { 162 | this.imageUrls = imageUrls; 163 | } 164 | } 165 | } 166 | -------------------------------------------------------------------------------- /app/src/main/java/com/jackchan/wechat/ui/activity/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.jackchan.wechat.ui.activity; 2 | 3 | import android.os.Bundle; 4 | import android.support.v7.app.AppCompatActivity; 5 | import android.support.v7.widget.LinearLayoutManager; 6 | import android.support.v7.widget.RecyclerView; 7 | import android.view.View; 8 | import android.view.animation.DecelerateInterpolator; 9 | import android.widget.LinearLayout; 10 | import android.widget.TextView; 11 | 12 | import com.google.gson.Gson; 13 | import com.jackchan.wechat.R; 14 | import com.jackchan.wechat.base.Global; 15 | import com.jackchan.wechat.bean.WeChat; 16 | import com.jackchan.wechat.ui.adapter.WeiboAdapter; 17 | /** 18 | * ============================================================ 19 | * Copyright:JackChan和他的朋友们有限公司版权所有 (c) 2017 20 | * Author: JackChan 21 | * Email: 815712739@qq.com 22 | * GitHub: https://github.com/JackChan1999 23 | * GitBook: https://www.gitbook.com/@alleniverson 24 | * CSDN博客: http://blog.csdn.net/axi295309066 25 | * 个人博客: https://jackchan1999.github.io/ 26 | * 微博: AndroidDeveloper 27 | *

28 | * Project_Name:WeChatDemo 29 | * Package_Name:com.jackchan.wechat 30 | * Version:1.0 31 | * time:2017/5/16 12:39 32 | * des :微信朋友圈,QQ空间,微博等列表展示的功能实现 33 | * gitVersion:2.12.0.windows.1 34 | * updateAuthor:AllenIverson 35 | * updateDate:2017/5/16 12:39 36 | * updateDes:${TODO} 37 | * ============================================================ 38 | */ 39 | public class MainActivity extends AppCompatActivity { 40 | 41 | private LinearLayout llTitleBar; 42 | private TextView tvTitle; 43 | private RecyclerView recyclerView; 44 | private TextView tvLike; 45 | 46 | 47 | @Override 48 | protected void onCreate(Bundle savedInstanceState) { 49 | super.onCreate(savedInstanceState); 50 | setContentView(R.layout.activity_main); 51 | 52 | llTitleBar = (LinearLayout) findViewById(R.id.ll_title_bar); 53 | tvTitle = (TextView) findViewById(R.id.tv_title); 54 | recyclerView = (RecyclerView) findViewById(R.id.recycler_view); 55 | tvLike = (TextView) findViewById(R.id.tv_like); 56 | 57 | initRecyclerView(); 58 | } 59 | 60 | private void initRecyclerView() { 61 | // 加载微博数据 62 | String json = Global.readAssets("weibo_list.json"); 63 | Gson gson = new Gson(); 64 | WeChat weibo = gson.fromJson(json, WeChat.class); 65 | Global.showToast("微博条数:" + weibo.getWeibo().size()); 66 | 67 | // 显示微博列表 68 | recyclerView.setLayoutManager(new LinearLayoutManager(this)); 69 | recyclerView.setAdapter(new WeiboAdapter(this, weibo.getWeibo())); 70 | } 71 | 72 | public void animateUp(int[] locations) { 73 | // 减去状态栏高度24dp 74 | int currentY = locations[1] - Global.dp2px(24); 75 | tvLike.setVisibility(View.VISIBLE); 76 | tvLike.setTranslationX(locations[0]); 77 | tvLike.setTranslationY(currentY); 78 | tvLike.setScaleY(1); 79 | tvLike.setScaleX(1); 80 | tvLike.setAlpha(1f); 81 | 82 | // 往上移动30dp 83 | int top = currentY - Global.dp2px(30); 84 | tvLike.animate().alpha(0).translationY(top) 85 | .setInterpolator(new DecelerateInterpolator()) 86 | .scaleX(1.2f).scaleY(1.2f).setDuration(1000); 87 | } 88 | } 89 | -------------------------------------------------------------------------------- /app/src/main/java/com/jackchan/wechat/ui/activity/TextViewActivity.java: -------------------------------------------------------------------------------- 1 | package com.jackchan.wechat.ui.activity; 2 | 3 | import android.graphics.Bitmap; 4 | import android.graphics.BitmapFactory; 5 | import android.os.Bundle; 6 | import android.support.v7.app.AppCompatActivity; 7 | import android.text.SpannableString; 8 | import android.text.style.ImageSpan; 9 | import android.widget.TextView; 10 | 11 | import com.jackchan.wechat.R; 12 | import com.jackchan.wechat.base.Global; 13 | import com.jackchan.wechat.util.EmojiUtil; 14 | import com.jackchan.wechat.util.LinkifyUtil; 15 | 16 | /** 17 | * ============================================================ 18 | * Copyright:JackChan和他的朋友们有限公司版权所有 (c) 2017 19 | * Author: JackChan 20 | * Email: 815712739@qq.com 21 | * GitHub: https://github.com/JackChan1999 22 | * GitBook: https://www.gitbook.com/@alleniverson 23 | * CSDN博客: http://blog.csdn.net/axi295309066 24 | * 个人博客: https://jackchan1999.github.io/ 25 | * 微博: AndroidDeveloper 26 | *

27 | * Project_Name:WeChatDemo 28 | * Package_Name:com.jackchan.wechat 29 | * Version:1.0 30 | * time:2017/5/16 12:39 31 | * des :微信朋友圈,QQ空间,微博等列表展示的功能实现 32 | * gitVersion:2.12.0.windows.1 33 | * updateAuthor:AllenIverson 34 | * updateDate:2017/5/16 12:39 35 | * updateDes:${TODO} 36 | * ============================================================ 37 | */ 38 | /** 39 | * 演示TextView展示表情和链接(TextView富文本) 40 | */ 41 | public class TextViewActivity extends AppCompatActivity { 42 | 43 | private TextView tv01; 44 | private TextView tv02; 45 | private TextView tv03; 46 | private TextView tv04; 47 | 48 | @Override 49 | protected void onCreate(Bundle savedInstanceState) { 50 | super.onCreate(savedInstanceState); 51 | setContentView(R.layout.activity_textview); 52 | 53 | tv01 = (TextView) findViewById(R.id.tv_01); 54 | tv02 = (TextView) findViewById(R.id.tv_02); 55 | tv03 = (TextView) findViewById(R.id.tv_03); 56 | tv04 = (TextView) findViewById(R.id.tv_04); 57 | 58 | test01(); 59 | test02(); 60 | test03(); 61 | } 62 | 63 | private void test03() { 64 | LinkifyUtil.addCustomLink(tv04); 65 | LinkifyUtil.addCustomLink2(tv04); 66 | } 67 | 68 | private void test02() { 69 | String text = "高兴[高兴] 再见 [再见] 大兵 [大兵] xxx [xxx]"; 70 | EmojiUtil.setText(tv02, text); 71 | } 72 | 73 | // 显示表情 74 | private void test01() { 75 | String text = "高兴[高兴] 富文本显示"; 76 | SpannableString ss = new SpannableString(text); 77 | 78 | // 指定了一张图片 79 | Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher); 80 | bitmap = Global.createBitmap(bitmap, Global.dp2px(20)); // 图片的宽高为20dp 81 | ImageSpan span = new ImageSpan(this, bitmap, ImageSpan.ALIGN_BOTTOM); 82 | ss.setSpan(span, 2, 6, 0); 83 | 84 | tv01.setText(ss); // 显示图文混排(文本中包含表情) 85 | } 86 | 87 | } 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | -------------------------------------------------------------------------------- /app/src/main/java/com/jackchan/wechat/ui/activity/TopicActivity.java: -------------------------------------------------------------------------------- 1 | package com.jackchan.wechat.ui.activity; 2 | 3 | import android.graphics.Color; 4 | import android.net.Uri; 5 | import android.os.Bundle; 6 | import android.support.v7.app.AppCompatActivity; 7 | import android.view.Gravity; 8 | import android.widget.TextView; 9 | /** 10 | * ============================================================ 11 | * Copyright:JackChan和他的朋友们有限公司版权所有 (c) 2017 12 | * Author: JackChan 13 | * Email: 815712739@qq.com 14 | * GitHub: https://github.com/JackChan1999 15 | * GitBook: https://www.gitbook.com/@alleniverson 16 | * CSDN博客: http://blog.csdn.net/axi295309066 17 | * 个人博客: https://jackchan1999.github.io/ 18 | * 微博: AndroidDeveloper 19 | *

20 | * Project_Name:WeChatDemo 21 | * Package_Name:com.jackchan.wechat 22 | * Version:1.0 23 | * time:2017/5/16 12:39 24 | * des :微信朋友圈,QQ空间,微博等列表展示的功能实现 25 | * gitVersion:2.12.0.windows.1 26 | * updateAuthor:AllenIverson 27 | * updateDate:2017/5/16 12:39 28 | * updateDes:${TODO} 29 | * ============================================================ 30 | */ 31 | public class TopicActivity extends AppCompatActivity { 32 | 33 | @Override 34 | protected void onCreate(Bundle savedInstanceState) { 35 | super.onCreate(savedInstanceState); 36 | 37 | // weibo://user?uid=@冷笑话精选 38 | Uri uri = getIntent().getData(); 39 | String topic = uri.getQueryParameter("uid"); 40 | 41 | TextView textView = new TextView(this); 42 | textView.setGravity(Gravity.CENTER); 43 | textView.setTextColor(Color.RED); 44 | textView.setText(topic); 45 | textView.setTextSize(20); 46 | 47 | setContentView(textView); 48 | } 49 | 50 | } 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /app/src/main/java/com/jackchan/wechat/ui/activity/UserActivity.java: -------------------------------------------------------------------------------- 1 | package com.jackchan.wechat.ui.activity; 2 | 3 | import android.graphics.Color; 4 | import android.net.Uri; 5 | import android.os.Bundle; 6 | import android.support.v7.app.AppCompatActivity; 7 | import android.view.Gravity; 8 | import android.widget.TextView; 9 | /** 10 | * ============================================================ 11 | * Copyright:JackChan和他的朋友们有限公司版权所有 (c) 2017 12 | * Author: JackChan 13 | * Email: 815712739@qq.com 14 | * GitHub: https://github.com/JackChan1999 15 | * GitBook: https://www.gitbook.com/@alleniverson 16 | * CSDN博客: http://blog.csdn.net/axi295309066 17 | * 个人博客: https://jackchan1999.github.io/ 18 | * 微博: AndroidDeveloper 19 | *

20 | * Project_Name:WeChatDemo 21 | * Package_Name:com.jackchan.wechat 22 | * Version:1.0 23 | * time:2017/5/16 12:39 24 | * des :微信朋友圈,QQ空间,微博等列表展示的功能实现 25 | * gitVersion:2.12.0.windows.1 26 | * updateAuthor:AllenIverson 27 | * updateDate:2017/5/16 12:39 28 | * updateDes:${TODO} 29 | * ============================================================ 30 | */ 31 | public class UserActivity extends AppCompatActivity { 32 | 33 | @Override 34 | protected void onCreate(Bundle savedInstanceState) { 35 | super.onCreate(savedInstanceState); 36 | 37 | // weibo://user?uid=@冷笑话精选 38 | Uri uri = getIntent().getData(); 39 | String username = uri.getQueryParameter("uid"); 40 | 41 | TextView textView = new TextView(this); 42 | textView.setGravity(Gravity.CENTER); 43 | textView.setTextColor(Color.GRAY); 44 | textView.setText(username); 45 | textView.setTextSize(20); 46 | 47 | setContentView(textView); 48 | } 49 | 50 | } 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /app/src/main/java/com/jackchan/wechat/ui/adapter/BaseAdapterRV.java: -------------------------------------------------------------------------------- 1 | package com.jackchan.wechat.ui.adapter; 2 | 3 | import android.content.Context; 4 | import android.support.v7.widget.RecyclerView; 5 | import android.view.ViewGroup; 6 | 7 | import com.jackchan.wechat.ui.holder.BaseHolderRV; 8 | 9 | import java.util.List; 10 | /** 11 | * ============================================================ 12 | * Copyright:JackChan和他的朋友们有限公司版权所有 (c) 2017 13 | * Author: JackChan 14 | * Email: 815712739@qq.com 15 | * GitHub: https://github.com/JackChan1999 16 | * GitBook: https://www.gitbook.com/@alleniverson 17 | * CSDN博客: http://blog.csdn.net/axi295309066 18 | * 个人博客: https://jackchan1999.github.io/ 19 | * 微博: AndroidDeveloper 20 | *

21 | * Project_Name:WeChatDemo 22 | * Package_Name:com.jackchan.wechat 23 | * Version:1.0 24 | * time:2017/5/16 12:39 25 | * des :适配器基类封装(RecyclerView) 26 | * gitVersion:2.12.0.windows.1 27 | * updateAuthor:AllenIverson 28 | * updateDate:2017/5/16 12:39 29 | * updateDes:${TODO} 30 | * ============================================================ 31 | */ 32 | 33 | public abstract class BaseAdapterRV extends RecyclerView.Adapter { 34 | 35 | private Context context; 36 | 37 | /** 列表显示的数据集合 */ 38 | public List listData; 39 | 40 | public BaseAdapterRV(Context context, List listData) { 41 | this.context = context; 42 | this.listData = listData; 43 | } 44 | 45 | // RV.Adapter重写方法1: 46 | @Override 47 | public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 48 | // 创建holder对象 49 | return createViewHolder(context, parent, viewType); 50 | } 51 | 52 | // RV.Adapter重写方法2: 53 | @Override 54 | public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { 55 | BaseHolderRV baseHolder = (BaseHolderRV) holder; 56 | T bean = getItem(position); 57 | baseHolder.refreshView(bean, position); 58 | } 59 | 60 | // RV.Adapter重写方法3: 61 | @Override 62 | public int getItemCount() { 63 | return listData == null ? 0 : listData.size(); 64 | } 65 | 66 | /** 67 | * 创建holder对象 68 | * 69 | * @param context 70 | * @param parent 71 | * @return 72 | */ 73 | public abstract BaseHolderRV createViewHolder( 74 | Context context, ViewGroup parent, int viewType); 75 | 76 | /** 77 | * 获取列表项对应的实体对象 78 | */ 79 | public T getItem(int i) { 80 | return listData.get(i); 81 | } 82 | 83 | /** 84 | * 刷新数据显示 85 | * 86 | * @param newData 要显示的新数据 87 | */ 88 | public void setDatas(List newData) { 89 | this.listData = newData; 90 | notifyDataSetChanged(); 91 | } 92 | 93 | /** 94 | * 删除一个对象, 并刷新界面 95 | * @param bean 96 | */ 97 | public void remove(T bean) { 98 | listData.remove(bean); 99 | notifyDataSetChanged(); 100 | } 101 | } 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | -------------------------------------------------------------------------------- /app/src/main/java/com/jackchan/wechat/ui/adapter/ImageAdapter.java: -------------------------------------------------------------------------------- 1 | package com.jackchan.wechat.ui.adapter; 2 | 3 | import android.content.Context; 4 | import android.view.ViewGroup; 5 | 6 | import com.jackchan.wechat.ui.holder.BaseHolderRV; 7 | import com.jackchan.wechat.ui.holder.ImageHolder; 8 | 9 | import java.util.List; 10 | /** 11 | * ============================================================ 12 | * Copyright:JackChan和他的朋友们有限公司版权所有 (c) 2017 13 | * Author: JackChan 14 | * Email: 815712739@qq.com 15 | * GitHub: https://github.com/JackChan1999 16 | * GitBook: https://www.gitbook.com/@alleniverson 17 | * CSDN博客: http://blog.csdn.net/axi295309066 18 | * 个人博客: https://jackchan1999.github.io/ 19 | * 微博: AndroidDeveloper 20 | *

21 | * Project_Name:WeChatDemo 22 | * Package_Name:com.jackchan.wechat 23 | * Version:1.0 24 | * time:2017/5/16 12:39 25 | * des :微博中的图片展示(九宫格图片) 26 | * gitVersion:2.12.0.windows.1 27 | * updateAuthor:AllenIverson 28 | * updateDate:2017/5/16 12:39 29 | * updateDes:${TODO} 30 | * ============================================================ 31 | */ 32 | 33 | public class ImageAdapter extends BaseAdapterRV { 34 | 35 | public ImageAdapter(Context context, List listData) { 36 | super(context, listData); 37 | } 38 | 39 | @Override 40 | public BaseHolderRV createViewHolder( 41 | Context context, ViewGroup parent, int viewType) { 42 | return new ImageHolder(context, parent, this, viewType); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /app/src/main/java/com/jackchan/wechat/ui/adapter/WeiboAdapter.java: -------------------------------------------------------------------------------- 1 | package com.jackchan.wechat.ui.adapter; 2 | 3 | import android.content.Context; 4 | import android.view.ViewGroup; 5 | 6 | import com.jackchan.wechat.bean.WeChat; 7 | import com.jackchan.wechat.ui.holder.BaseHolderRV; 8 | import com.jackchan.wechat.ui.holder.WeiboHolder; 9 | 10 | import java.util.List; 11 | /** 12 | * ============================================================ 13 | * Copyright:JackChan和他的朋友们有限公司版权所有 (c) 2017 14 | * Author: JackChan 15 | * Email: 815712739@qq.com 16 | * GitHub: https://github.com/JackChan1999 17 | * GitBook: https://www.gitbook.com/@alleniverson 18 | * CSDN博客: http://blog.csdn.net/axi295309066 19 | * 个人博客: https://jackchan1999.github.io/ 20 | * 微博: AndroidDeveloper 21 | *

22 | * Project_Name:WeChatDemo 23 | * Package_Name:com.jackchan.wechat 24 | * Version:1.0 25 | * time:2017/5/16 12:39 26 | * des :朋友圈列表的适配器 27 | * gitVersion:2.12.0.windows.1 28 | * updateAuthor:AllenIverson 29 | * updateDate:2017/5/16 12:39 30 | * updateDes:${TODO} 31 | * ============================================================ 32 | */ 33 | 34 | public class WeiboAdapter extends BaseAdapterRV { 35 | 36 | public WeiboAdapter(Context context, List listData) { 37 | super(context, listData); 38 | } 39 | 40 | @Override 41 | public BaseHolderRV createViewHolder( 42 | Context context, ViewGroup parent, int viewType) { 43 | return new WeiboHolder(context, parent, this, viewType); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /app/src/main/java/com/jackchan/wechat/ui/holder/BaseHolderRV.java: -------------------------------------------------------------------------------- 1 | package com.jackchan.wechat.ui.holder; 2 | 3 | import android.content.Context; 4 | import android.support.v7.widget.RecyclerView; 5 | import android.view.LayoutInflater; 6 | import android.view.View; 7 | import android.view.ViewGroup; 8 | 9 | import com.jackchan.wechat.ui.adapter.BaseAdapterRV; 10 | /** 11 | * ============================================================ 12 | * Copyright:JackChan和他的朋友们有限公司版权所有 (c) 2017 13 | * Author: JackChan 14 | * Email: 815712739@qq.com 15 | * GitHub: https://github.com/JackChan1999 16 | * GitBook: https://www.gitbook.com/@alleniverson 17 | * CSDN博客: http://blog.csdn.net/axi295309066 18 | * 个人博客: https://jackchan1999.github.io/ 19 | * 微博: AndroidDeveloper 20 | *

21 | * Project_Name:WeChatDemo 22 | * Package_Name:com.jackchan.wechat 23 | * Version:1.0 24 | * time:2017/5/16 12:39 25 | * des :封装适配器中的getView方法:填充布局,查找子控件,setTag, 刷新子控件显示 26 | * gitVersion:2.12.0.windows.1 27 | * updateAuthor:AllenIverson 28 | * updateDate:2017/5/16 12:39 29 | * updateDes:${TODO} 30 | * ============================================================ 31 | */ 32 | 33 | public abstract class BaseHolderRV extends RecyclerView.ViewHolder { 34 | 35 | public Context context; 36 | 37 | /** 指ListView */ 38 | public ViewGroup parent; 39 | 40 | /** ListView的适配器 */ 41 | public BaseAdapterRV adapter; 42 | 43 | /** 列表项位置 */ 44 | public int position; 45 | 46 | /** 列表项实体 */ 47 | public T bean; 48 | 49 | private View.OnClickListener mOnRootClickListener = new View.OnClickListener() { 50 | 51 | @Override 52 | public void onClick(View v) { 53 | onItemClick(itemView, position, bean); 54 | } 55 | }; 56 | 57 | /** 58 | * 列表项点击事件 59 | * 60 | * @param itemView 列表项根布局 61 | * @param position 列表项位置 62 | * @param bean 列表项对应的javabean 63 | */ 64 | protected void onItemClick(View itemView, int position, T bean){ 65 | // empty 66 | } 67 | 68 | private static View inflate(Context context, int layoutId, ViewGroup parent) { 69 | return LayoutInflater.from(context).inflate(layoutId, parent, false); 70 | } 71 | 72 | public BaseHolderRV(Context context, ViewGroup parent, 73 | BaseAdapterRV adapter, 74 | int itemType, int layoutId) { 75 | 76 | super(inflate(context, layoutId, parent)); 77 | this.context = context; 78 | this.parent = parent; 79 | this.adapter = adapter; 80 | 81 | onFindViews(super.itemView); 82 | 83 | // 设置列表项点击事件监听 84 | super.itemView.setOnClickListener(mOnRootClickListener); 85 | } 86 | 87 | /** 88 | * 查找item中的子控件 89 | * 90 | * @param itemView 91 | * @return 92 | */ 93 | public abstract void onFindViews(View itemView); 94 | 95 | /** 96 | * 更新javabean及位置,刷新子控件的显示 97 | * 98 | * @param bean 99 | * @param position 100 | */ 101 | protected abstract void onRefreshView(T bean, int position); 102 | 103 | /** 104 | * 刷新item子控件显示 105 | * @param bean 106 | * @param position 107 | */ 108 | public void refreshView(T bean, int position) { 109 | this.bean = bean; 110 | this.position = position; 111 | 112 | onRefreshView(bean, position); 113 | } 114 | } 115 | -------------------------------------------------------------------------------- /app/src/main/java/com/jackchan/wechat/ui/holder/ImageHolder.java: -------------------------------------------------------------------------------- 1 | package com.jackchan.wechat.ui.holder; 2 | 3 | import android.content.Context; 4 | import android.graphics.Bitmap; 5 | import android.graphics.BitmapFactory; 6 | import android.view.View; 7 | import android.view.ViewGroup; 8 | import android.widget.ImageView; 9 | 10 | import com.jackchan.wechat.R; 11 | import com.jackchan.wechat.base.Global; 12 | import com.jackchan.wechat.ui.adapter.BaseAdapterRV; 13 | /** 14 | * ============================================================ 15 | * Copyright:JackChan和他的朋友们有限公司版权所有 (c) 2017 16 | * Author: JackChan 17 | * Email: 815712739@qq.com 18 | * GitHub: https://github.com/JackChan1999 19 | * GitBook: https://www.gitbook.com/@alleniverson 20 | * CSDN博客: http://blog.csdn.net/axi295309066 21 | * 个人博客: https://jackchan1999.github.io/ 22 | * 微博: AndroidDeveloper 23 | *

24 | * Project_Name:WeChatDemo 25 | * Package_Name:com.jackchan.wechat 26 | * Version:1.0 27 | * time:2017/5/16 12:39 28 | * des :朋友圈中的图片展示 29 | * gitVersion:2.12.0.windows.1 30 | * updateAuthor:AllenIverson 31 | * updateDate:2017/5/16 12:39 32 | * updateDes:${TODO} 33 | * ============================================================ 34 | */ 35 | 36 | public class ImageHolder extends BaseHolderRV { 37 | 38 | private ImageView ivImage; 39 | 40 | public ImageHolder(Context context, ViewGroup parent, 41 | BaseAdapterRV adapter, int itemType) { 42 | super(context, parent, adapter, itemType, R.layout.item_image); 43 | } 44 | 45 | // 查找item中的子控件 46 | @Override 47 | public void onFindViews(View itemView) { 48 | ivImage = (ImageView) itemView.findViewById(R.id.iv_image); 49 | } 50 | 51 | // 刷新item子控件的显示 52 | @Override 53 | protected void onRefreshView(String imagePath, int position) { 54 | // 动态设置图片宫格的宽高 55 | // 1张图片 -> 宫格的宽高为图片的宽高 56 | // 其它情况 -> 宫格的宽高为Global.getGridWidth() 57 | ViewGroup.LayoutParams param = super.itemView.getLayoutParams(); 58 | if (super.adapter.getItemCount() == 1) { // 一张图片 59 | // 图片资源id 60 | int imageResId = Global.getResId(context, imagePath); 61 | Bitmap bitmap = BitmapFactory.decodeResource( 62 | context.getResources(), imageResId); 63 | // 指定宫格的宽高为图片的宽高 64 | param.width = bitmap.getWidth(); 65 | param.height = bitmap.getHeight(); 66 | // 显示图片 67 | ivImage.setBackgroundResource(imageResId); 68 | } else { // 多张图片 69 | // 显示宫格图片 70 | int imageResId = Global.getResId(context, imagePath); 71 | ivImage.setBackgroundResource(imageResId); 72 | 73 | param.width = Global.getGridWidth(); // 指定宫格图片的宽 74 | param.height = Global.getGridWidth(); 75 | } 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /app/src/main/java/com/jackchan/wechat/ui/holder/WeiboHolder.java: -------------------------------------------------------------------------------- 1 | package com.jackchan.wechat.ui.holder; 2 | 3 | import android.content.Context; 4 | import android.support.v7.widget.GridLayoutManager; 5 | import android.support.v7.widget.RecyclerView; 6 | import android.text.TextUtils; 7 | import android.view.View; 8 | import android.view.ViewGroup; 9 | import android.widget.CheckBox; 10 | import android.widget.CompoundButton; 11 | import android.widget.ImageView; 12 | import android.widget.TextView; 13 | 14 | import com.jackchan.wechat.R; 15 | import com.jackchan.wechat.base.Global; 16 | import com.jackchan.wechat.bean.WeChat; 17 | import com.jackchan.wechat.ui.activity.MainActivity; 18 | import com.jackchan.wechat.ui.adapter.BaseAdapterRV; 19 | import com.jackchan.wechat.ui.adapter.ImageAdapter; 20 | import com.jackchan.wechat.util.EmojiUtil; 21 | import com.jackchan.wechat.util.LinkifyUtil; 22 | /** 23 | * ============================================================ 24 | * Copyright:JackChan和他的朋友们有限公司版权所有 (c) 2017 25 | * Author: JackChan 26 | * Email: 815712739@qq.com 27 | * GitHub: https://github.com/JackChan1999 28 | * GitBook: https://www.gitbook.com/@alleniverson 29 | * CSDN博客: http://blog.csdn.net/axi295309066 30 | * 个人博客: https://jackchan1999.github.io/ 31 | * 微博: AndroidDeveloper 32 | *

33 | * Project_Name:WeChatDemo 34 | * Package_Name:com.jackchan.wechat 35 | * Version:1.0 36 | * time:2017/5/16 12:39 37 | * des :微信朋友圈,QQ空间,微博等列表展示的功能实现 38 | * gitVersion:2.12.0.windows.1 39 | * updateAuthor:AllenIverson 40 | * updateDate:2017/5/16 12:39 41 | * updateDes:${TODO} 42 | * ============================================================ 43 | */ 44 | 45 | public class WeiboHolder extends BaseHolderRV { 46 | 47 | private ImageView ivAvatar; 48 | private TextView tvUser; 49 | private TextView tvUserIntroduction; 50 | private TextView tvDate; 51 | private TextView tvContent; 52 | private RecyclerView rvWeiboImages; 53 | private TextView tvForward; 54 | private TextView tvComment; 55 | private CheckBox cbLike; 56 | private TextView tvLike; 57 | private ImageAdapter imageAdapter; 58 | private GridLayoutManager layoutManager; 59 | 60 | public WeiboHolder(Context context, ViewGroup parent, 61 | BaseAdapterRV adapter, 62 | int itemType) { 63 | super(context, parent, adapter, itemType, R.layout.item_weibo); 64 | } 65 | 66 | // 查找item布局中的子控件 67 | @Override 68 | public void onFindViews(View itemView) { 69 | ivAvatar = (ImageView) itemView.findViewById(R.id.iv_avatar); 70 | tvUser = (TextView) itemView.findViewById(R.id.tv_user); 71 | tvUserIntroduction = (TextView) itemView.findViewById(R.id.tv_user_introduction); 72 | tvDate = (TextView) itemView.findViewById(R.id.tv_date); 73 | tvContent = (TextView) itemView.findViewById(R.id.tv_content); 74 | tvForward = (TextView) itemView.findViewById(R.id.tv_forward); 75 | tvComment = (TextView) itemView.findViewById(R.id.tv_comment); 76 | cbLike = (CheckBox) itemView.findViewById(R.id.cb_like); 77 | tvLike = (TextView) itemView.findViewById(R.id.tv_like); 78 | 79 | // 展示九宫格图片 80 | rvWeiboImages = (RecyclerView) itemView.findViewById(R.id.rv_weibo_images); 81 | layoutManager = new GridLayoutManager(context, 3); 82 | rvWeiboImages.setLayoutManager(layoutManager); 83 | imageAdapter = new ImageAdapter(context, null); 84 | rvWeiboImages.setAdapter(imageAdapter); 85 | 86 | cbLike.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 87 | @Override 88 | public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 89 | if (isChecked) { 90 | // 获取当前点击控件相对于窗口的所在位置 91 | int[] locations = new int[2]; 92 | tvLike.getLocationInWindow(locations); 93 | ((MainActivity) context).animateUp(locations); 94 | } 95 | } 96 | }); 97 | } 98 | 99 | // 刷新item布局中子控件的显示 100 | @Override 101 | protected void onRefreshView(WeChat.WeiboBean bean, int position) { 102 | // 显示用户名 103 | tvUser.setText(bean.getUsername()); 104 | 105 | // 显示用户介绍 106 | if (TextUtils.isEmpty(bean.getUser_introduction())) { 107 | tvUserIntroduction.setVisibility(View.GONE); 108 | } else { 109 | tvUserIntroduction.setVisibility(View.VISIBLE); 110 | tvUserIntroduction.setText(bean.getUser_introduction()); 111 | } 112 | // 显示头像 113 | int imageResId = Global.getResId(context, bean.getAvatar()); 114 | ivAvatar.setBackgroundResource(imageResId); 115 | 116 | // 微博内容 117 | // tvContent.setText(bean.getContent()); 118 | EmojiUtil.setText(tvContent, bean.getContent()); 119 | LinkifyUtil.addCustomLink(tvContent); 120 | LinkifyUtil.addCustomLink2(tvContent); 121 | 122 | // 发表时间 123 | tvDate.setText(Global.formatDate(bean.getDate())); 124 | 125 | // 显示微博图片 126 | int imageCount = bean.getImageUrls() == null 127 | ? 0 : bean.getImageUrls().size(); 128 | if (imageCount == 0) { // 没有微博图片 129 | rvWeiboImages.setVisibility(View.GONE); 130 | } else { // 有微博图片 131 | rvWeiboImages.setVisibility(View.VISIBLE); 132 | imageAdapter.setDatas(bean.getImageUrls()); // 刷新图片显示 133 | 134 | // 动态的指定图片宫格的宽高和RecyclerView的宽度 135 | // 1张图片 -> 1列 136 | // 4张图片 -> 2列 137 | // 其它 -> 3列 138 | ViewGroup.LayoutParams param = rvWeiboImages.getLayoutParams(); 139 | if (imageCount == 1) { 140 | layoutManager.setSpanCount(1); 141 | param.width = ViewGroup.LayoutParams.WRAP_CONTENT; 142 | } else if (imageCount == 4) { 143 | layoutManager.setSpanCount(2); 144 | // 两个图片宫格的宽度 145 | param.width = Global.getGridWidth() * 2; 146 | } else { // 3列 147 | layoutManager.setSpanCount(3); 148 | param.width = ViewGroup.LayoutParams.MATCH_PARENT; 149 | } 150 | } 151 | } 152 | } 153 | -------------------------------------------------------------------------------- /app/src/main/java/com/jackchan/wechat/util/EmojiParser.java: -------------------------------------------------------------------------------- 1 | package com.jackchan.wechatemoji.util; 2 | 3 | import android.content.Context; 4 | import android.graphics.drawable.Drawable; 5 | import android.text.Spannable; 6 | import android.text.SpannableStringBuilder; 7 | import android.text.style.ImageSpan; 8 | 9 | import java.util.regex.Matcher; 10 | import java.util.regex.Pattern; 11 | 12 | public class EmojiParser { 13 | public static SpannableStringBuilder parseEmoji(Context context,String content){ 14 | int size = UIUtils.dip2Px(25,context); 15 | //里[smiley_00]ff[smiley_78] 16 | SpannableStringBuilder builder = new SpannableStringBuilder(content); 17 | //正则表达式 18 | Pattern pattern = Pattern.compile("\\[smiley_(.*?)\\]"); 19 | Matcher matcher = pattern.matcher(content); 20 | while(matcher.find()){ 21 | String emo = matcher.group();//[smiley_00] 22 | emo = emo.substring(1, emo.length()-1); 23 | //获取表情的id 24 | int id = context.getResources().getIdentifier(emo, "drawable", context.getPackageName()); 25 | if(id != 0 ){ 26 | Drawable drawable = context.getResources().getDrawable(id); 27 | // 必须设置图片大小 28 | drawable.setBounds(0, 0, size, size); 29 | // 包装一下图片 30 | ImageSpan span = new ImageSpan(drawable); 31 | // 把文字替换成图片 32 | builder.setSpan(span, matcher.start(), matcher.end(), 33 | Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 34 | } 35 | } 36 | return builder; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /app/src/main/java/com/jackchan/wechat/util/EmojiUtil.java: -------------------------------------------------------------------------------- 1 | package com.jackchan.wechat.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.SpannableString; 8 | import android.text.style.ImageSpan; 9 | import android.widget.TextView; 10 | 11 | import com.jackchan.wechat.R; 12 | import com.jackchan.wechat.base.Global; 13 | 14 | import java.util.HashMap; 15 | import java.util.regex.Matcher; 16 | import java.util.regex.Pattern; 17 | /** 18 | * ============================================================ 19 | * Copyright:JackChan和他的朋友们有限公司版权所有 (c) 2017 20 | * Author: JackChan 21 | * Email: 815712739@qq.com 22 | * GitHub: https://github.com/JackChan1999 23 | * GitBook: https://www.gitbook.com/@alleniverson 24 | * CSDN博客: http://blog.csdn.net/axi295309066 25 | * 个人博客: https://jackchan1999.github.io/ 26 | * 微博: AndroidDeveloper 27 | *

28 | * Project_Name:WeChatDemo 29 | * Package_Name:com.jackchan.wechat 30 | * Version:1.0 31 | * time:2017/5/16 12:39 32 | * des :表情工具类封装 33 | * gitVersion:2.12.0.windows.1 34 | * updateAuthor:AllenIverson 35 | * updateDate:2017/5/16 12:39 36 | * updateDes:${TODO} 37 | * ============================================================ 38 | */ 39 | 40 | public class EmojiUtil { 41 | 42 | /** 显示文本和表情 */ 43 | public static void setText(TextView textView, String text) { 44 | Context context = textView.getContext(); 45 | Resources resources = context.getResources(); 46 | SpannableString ss = new SpannableString(text); 47 | 48 | // 正则表达式: [高兴] 49 | Pattern p = Pattern.compile("\\[([A-Za-z\u4E00-\u9FA5]+)\\]"); 50 | Matcher matcher = p.matcher(ss); 51 | while (matcher.find()) { 52 | // 匹配到一个表情字符串 53 | String emoji = matcher.group(); 54 | // 过滤非表情符,比如: [xxx] 55 | if (EMOJI_DATAS.containsKey(emoji)) { // 是表情才处理 56 | // System.out.println("----------" + emoji); 57 | // 指定了一张图片 58 | Bitmap bitmap = BitmapFactory.decodeResource(resources, EMOJI_DATAS.get(emoji)); 59 | bitmap = Global.createBitmap(bitmap, Global.dp2px(20)); // 图片的宽高为20dp 60 | ImageSpan span = new ImageSpan(context, bitmap, ImageSpan.ALIGN_BOTTOM); 61 | int start = matcher.start(); 62 | int end = matcher.end(); 63 | ss.setSpan(span, start, end, 0); 64 | } 65 | } 66 | textView.setText(ss); 67 | } 68 | 69 | private static final HashMap EMOJI_DATAS = new HashMap(); 70 | 71 | static { 72 | EMOJI_DATAS.put("[微笑]", R.drawable.smiley_0); 73 | EMOJI_DATAS.put("[伤心]", R.drawable.smiley_1); 74 | EMOJI_DATAS.put("[美女]", R.drawable.smiley_2); 75 | EMOJI_DATAS.put("[发呆]", R.drawable.smiley_3); 76 | EMOJI_DATAS.put("[墨镜]", R.drawable.smiley_4); 77 | EMOJI_DATAS.put("[大哭]", R.drawable.smiley_5); 78 | EMOJI_DATAS.put("[害羞]", R.drawable.smiley_6); 79 | EMOJI_DATAS.put("[闭嘴]", R.drawable.smiley_7); 80 | EMOJI_DATAS.put("[睡觉]", R.drawable.smiley_8); 81 | EMOJI_DATAS.put("[伤心]", R.drawable.smiley_9); 82 | 83 | EMOJI_DATAS.put("[冷汗]", R.drawable.smiley_10); 84 | EMOJI_DATAS.put("[发怒]", R.drawable.smiley_11); 85 | EMOJI_DATAS.put("[调皮]", R.drawable.smiley_12); 86 | EMOJI_DATAS.put("[呲牙]", R.drawable.smiley_13); 87 | EMOJI_DATAS.put("[惊讶]", R.drawable.smiley_14); 88 | EMOJI_DATAS.put("[难过]", R.drawable.smiley_15); 89 | EMOJI_DATAS.put("[酷]", R.drawable.smiley_16); 90 | EMOJI_DATAS.put("[汗]", R.drawable.smiley_17); 91 | EMOJI_DATAS.put("[抓狂]", R.drawable.smiley_18); 92 | EMOJI_DATAS.put("[吐]", R.drawable.smiley_19); 93 | 94 | EMOJI_DATAS.put("[偷笑]", R.drawable.smiley_20); 95 | EMOJI_DATAS.put("[快乐]", R.drawable.smiley_21); 96 | EMOJI_DATAS.put("[奇]", R.drawable.smiley_22); 97 | EMOJI_DATAS.put("[傲]", R.drawable.smiley_23); 98 | EMOJI_DATAS.put("[饿]", R.drawable.smiley_24); 99 | EMOJI_DATAS.put("[累]", R.drawable.smiley_25); 100 | EMOJI_DATAS.put("[惊恐]", R.drawable.smiley_26); 101 | EMOJI_DATAS.put("[汗]", R.drawable.smiley_27); 102 | EMOJI_DATAS.put("[高兴]", R.drawable.smiley_28); 103 | EMOJI_DATAS.put("[大兵]", R.drawable.smiley_29); 104 | 105 | EMOJI_DATAS.put("[奋斗]", R.drawable.smiley_30); 106 | EMOJI_DATAS.put("[骂]", R.drawable.smiley_31); 107 | EMOJI_DATAS.put("[疑问]", R.drawable.smiley_32); 108 | EMOJI_DATAS.put("[嘘]", R.drawable.smiley_33); 109 | EMOJI_DATAS.put("[晕]", R.drawable.smiley_34); 110 | EMOJI_DATAS.put("[痛苦]", R.drawable.smiley_35); 111 | EMOJI_DATAS.put("[衰]", R.drawable.smiley_36); 112 | EMOJI_DATAS.put("[鬼]", R.drawable.smiley_37); 113 | EMOJI_DATAS.put("[敲打]", R.drawable.smiley_38); 114 | EMOJI_DATAS.put("[再见]", R.drawable.smiley_39); 115 | 116 | EMOJI_DATAS.put("[冷汗]", R.drawable.smiley_40); 117 | EMOJI_DATAS.put("[挖鼻]", R.drawable.smiley_41); 118 | EMOJI_DATAS.put("[鼓掌]", R.drawable.smiley_42); 119 | EMOJI_DATAS.put("[出丑]", R.drawable.smiley_43); 120 | EMOJI_DATAS.put("[坏笑]", R.drawable.smiley_44); 121 | EMOJI_DATAS.put("[左嘘]", R.drawable.smiley_45); 122 | EMOJI_DATAS.put("[右嘘]", R.drawable.smiley_46); 123 | EMOJI_DATAS.put("[打哈欠]", R.drawable.smiley_47); 124 | EMOJI_DATAS.put("[鄙视]", R.drawable.smiley_48); 125 | EMOJI_DATAS.put("[委屈]", R.drawable.smiley_49); 126 | 127 | EMOJI_DATAS.put("[快哭了]", R.drawable.smiley_50); 128 | EMOJI_DATAS.put("[邪恶]", R.drawable.smiley_51); 129 | EMOJI_DATAS.put("[亲亲]", R.drawable.smiley_52); 130 | EMOJI_DATAS.put("[吓吓]", R.drawable.smiley_53); 131 | EMOJI_DATAS.put("[可怜]", R.drawable.smiley_54); 132 | EMOJI_DATAS.put("[菜刀]", R.drawable.smiley_55); 133 | EMOJI_DATAS.put("[西瓜]", R.drawable.smiley_56); 134 | EMOJI_DATAS.put("[啤酒]", R.drawable.smiley_57); 135 | EMOJI_DATAS.put("[篮球]", R.drawable.smiley_58); 136 | EMOJI_DATAS.put("[乒乓球]", R.drawable.smiley_59); 137 | 138 | EMOJI_DATAS.put("[喝茶]", R.drawable.smiley_60); 139 | EMOJI_DATAS.put("[吃饭]", R.drawable.smiley_61); 140 | EMOJI_DATAS.put("[猪头]", R.drawable.smiley_62); 141 | EMOJI_DATAS.put("[鲜花]", R.drawable.smiley_63); 142 | EMOJI_DATAS.put("[花谢]", R.drawable.smiley_64); 143 | EMOJI_DATAS.put("[吻]", R.drawable.smiley_65); 144 | EMOJI_DATAS.put("[红心]", R.drawable.smiley_66); 145 | EMOJI_DATAS.put("[心碎]", R.drawable.smiley_67); 146 | EMOJI_DATAS.put("[生日]", R.drawable.smiley_68); 147 | EMOJI_DATAS.put("[闪电]", R.drawable.smiley_69); 148 | 149 | EMOJI_DATAS.put("[地雷]", R.drawable.smiley_70); 150 | EMOJI_DATAS.put("[刀]", R.drawable.smiley_71); 151 | EMOJI_DATAS.put("[足球]", R.drawable.smiley_72); 152 | EMOJI_DATAS.put("[甲虫]", R.drawable.smiley_73); 153 | EMOJI_DATAS.put("[便便]", R.drawable.smiley_74); 154 | EMOJI_DATAS.put("[月亮]", R.drawable.smiley_75); 155 | EMOJI_DATAS.put("[太阳]", R.drawable.smiley_76); 156 | EMOJI_DATAS.put("[礼物]", R.drawable.smiley_77); 157 | EMOJI_DATAS.put("[拥抱]", R.drawable.smiley_78); 158 | EMOJI_DATAS.put("[强]", R.drawable.smiley_79); 159 | 160 | EMOJI_DATAS.put("[弱]", R.drawable.smiley_80); 161 | EMOJI_DATAS.put("[握手]", R.drawable.smiley_81); 162 | EMOJI_DATAS.put("[胜利]", R.drawable.smiley_82); 163 | EMOJI_DATAS.put("[抱拳]", R.drawable.smiley_83); 164 | EMOJI_DATAS.put("[勾引]", R.drawable.smiley_84); 165 | EMOJI_DATAS.put("[握拳]", R.drawable.smiley_85); 166 | EMOJI_DATAS.put("[差劲]", R.drawable.smiley_86); 167 | EMOJI_DATAS.put("[爱你]", R.drawable.smiley_87); 168 | EMOJI_DATAS.put("[No]", R.drawable.smiley_88); 169 | EMOJI_DATAS.put("[OK]", R.drawable.smiley_89); 170 | 171 | EMOJI_DATAS.put("[爱情]", R.drawable.smiley_90); 172 | EMOJI_DATAS.put("[飞吻]", R.drawable.smiley_91); 173 | EMOJI_DATAS.put("[跳跳]", R.drawable.smiley_92); 174 | EMOJI_DATAS.put("[发抖]", R.drawable.smiley_93); 175 | EMOJI_DATAS.put("[怄火]", R.drawable.smiley_94); 176 | EMOJI_DATAS.put("[转圈]", R.drawable.smiley_95); 177 | EMOJI_DATAS.put("[磕头]", R.drawable.smiley_96); 178 | EMOJI_DATAS.put("[回头]", R.drawable.smiley_97); 179 | EMOJI_DATAS.put("[跳绳]", R.drawable.smiley_98); 180 | EMOJI_DATAS.put("[投降]", R.drawable.smiley_99); 181 | 182 | EMOJI_DATAS.put("[激动]", R.drawable.smiley_100); 183 | EMOJI_DATAS.put("[乱舞]", R.drawable.smiley_101); 184 | EMOJI_DATAS.put("[献吻]", R.drawable.smiley_102); 185 | EMOJI_DATAS.put("[左太极]", R.drawable.smiley_103); 186 | EMOJI_DATAS.put("[右太极]", R.drawable.smiley_104); 187 | } 188 | } 189 | -------------------------------------------------------------------------------- /app/src/main/java/com/jackchan/wechat/util/LinkifyUtil.java: -------------------------------------------------------------------------------- 1 | package com.jackchan.wechat.util; 2 | 3 | import android.text.util.Linkify; 4 | import android.widget.TextView; 5 | 6 | import java.util.regex.Matcher; 7 | import java.util.regex.Pattern; 8 | /** 9 | * ============================================================ 10 | * Copyright:JackChan和他的朋友们有限公司版权所有 (c) 2017 11 | * Author: JackChan 12 | * Email: 815712739@qq.com 13 | * GitHub: https://github.com/JackChan1999 14 | * GitBook: https://www.gitbook.com/@alleniverson 15 | * CSDN博客: http://blog.csdn.net/axi295309066 16 | * 个人博客: https://jackchan1999.github.io/ 17 | * 微博: AndroidDeveloper 18 | *

19 | * Project_Name:WeChatDemo 20 | * Package_Name:com.jackchan.wechat 21 | * Version:1.0 22 | * time:2017/5/16 12:39 23 | * des :微信朋友圈,QQ空间,微博等列表展示的功能实现 24 | * 自定义超链接 25 | * gitVersion:2.12.0.windows.1 26 | * updateAuthor:AllenIverson 27 | * updateDate:2017/5/16 12:39 28 | * updateDes:${TODO} 29 | * ============================================================ 30 | */ 31 | 32 | public class LinkifyUtil { 33 | 34 | /** 35 | * 添加自定义超链接 36 | */ 37 | public static void addCustomLink(TextView textView) { 38 | // @用户: 39 | Pattern pattern = Pattern.compile("\\@([A-Za-z0-9\u4E00-\u9FA5]+)\\.?"); 40 | // http://www.qq.com/path?uid=1&username=xx 41 | String scheme = "weibo://user?uid="; 42 | 43 | // 匹配过滤器 44 | Linkify.MatchFilter matchFilter = new Linkify.MatchFilter() { 45 | @Override 46 | public boolean acceptMatch(CharSequence s, int start, int end) { 47 | String text = s.subSequence(start, end).toString(); 48 | // System.out.println("----text: " + text); 49 | if (text.endsWith(".")) { // 邮箱,不需要匹配 50 | return false; 51 | } else { 52 | return true; // 返回true会显示为超链接 53 | } 54 | } 55 | }; 56 | Linkify.TransformFilter transformFilter = null; 57 | Linkify.addLinks(textView, pattern, scheme, matchFilter, transformFilter); 58 | } 59 | 60 | public static void addCustomLink2(TextView textView) { 61 | // @用户: 62 | Pattern pattern = Pattern.compile("\\#([A-Za-z0-9\u4E00-\u9FA5]+)\\#"); 63 | // http://www.qq.com/path?uid=1&username=xx 64 | String scheme = "weibo://topic?uid="; 65 | // 匹配过滤器 66 | Linkify.MatchFilter matchFilter = new Linkify.MatchFilter() { 67 | @Override 68 | public boolean acceptMatch(CharSequence s, int start, int end) { 69 | String text = s.subSequence(start, end).toString(); 70 | System.out.println("----text: " + text); 71 | return true; 72 | } 73 | }; 74 | Linkify.TransformFilter transformFilter = new Linkify.TransformFilter() { 75 | @Override 76 | public String transformUrl(Matcher match, String url) { 77 | return match.group(1); 78 | } 79 | }; 80 | Linkify.addLinks(textView, pattern, scheme, matchFilter, transformFilter); 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/avatar_01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/avatar_01.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/avatar_02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/avatar_02.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/avatar_03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/avatar_03.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/avatar_04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/avatar_04.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/avatar_05.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/avatar_05.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/home_apps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/home_apps.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/home_callmsgsafe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/home_callmsgsafe.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/home_netmanager.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/home_netmanager.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/home_safe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/home_safe.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/home_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/home_settings.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/home_sysoptimize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/home_sysoptimize.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/home_taskmanager.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/home_taskmanager.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/home_tools.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/home_tools.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/home_trojan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/home_trojan.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/menu_icon_cmt_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/menu_icon_cmt_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/menu_icon_cmt_press.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/menu_icon_cmt_press.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/menu_icon_fwd_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/menu_icon_fwd_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/menu_icon_fwd_press.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/menu_icon_fwd_press.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/menu_icon_prz_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/menu_icon_prz_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/menu_icon_prz_press.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/menu_icon_prz_press.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_1.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_10.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_11.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_12.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_13.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_13.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_14.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_14.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_15.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_15.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_16.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_16.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_17.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_17.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_18.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_18.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_19.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_19.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_2.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_20.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_20.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_21.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_21.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_22.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_22.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_23.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_23.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_24.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_24.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_25.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_25.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_26.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_26.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_27.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_27.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_28.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_28.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_29.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_29.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_3.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_30.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_30.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_31.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_31.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_32.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_32.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_33.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_33.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_34.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_34.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_35.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_35.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_36.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_36.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_37.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_37.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_38.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_38.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_39.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_39.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_4.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_5.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_6.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_7.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_8.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_9.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_01.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_02.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_03.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_04.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_05.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_05.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_06.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_06.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_07.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_07.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_08.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_08.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_09.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_09.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_10.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_100.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_100.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_101.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_101.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_102.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_102.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_11.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_12.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_13.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_13.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_14.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_14.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_15.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_15.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_16.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_16.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_17.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_17.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_18.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_18.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_19.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_19.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_20.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_20.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_21.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_21.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_22.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_22.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_23.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_23.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_24.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_24.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_25.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_25.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_26.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_26.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_27.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_27.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_40.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_40.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_41.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_41.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_42.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_42.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_43.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_43.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_44.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_44.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_45.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_45.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_46.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_46.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_47.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_47.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_48.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_48.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_50.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_50.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_51.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_51.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_52.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_52.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_53.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_53.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_54.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_54.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_55.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_55.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_56.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_56.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_57.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_57.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_58.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_58.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_60.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_60.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_61.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_61.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_62.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_62.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_63.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_63.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_64.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_64.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_65.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_65.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_66.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_66.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_67.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_67.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_68.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_68.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_70.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_70.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_71.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_71.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_72.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_72.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_73.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_73.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_74.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_74.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_75.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_75.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_76.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_76.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_77.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_77.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/pic_small_78.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/pic_small_78.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_0.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_1.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_10.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_100.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_101.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_101.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_102.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_102.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_103.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_103.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_104.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_104.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_11.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_12.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_13.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_14.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_15.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_16.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_17.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_18.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_19.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_2.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_20.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_21.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_22.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_23.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_24.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_25.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_26.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_27.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_27.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_28.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_28.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_29.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_3.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_30.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_31.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_32.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_33.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_33.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_34.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_34.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_35.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_35.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_36.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_37.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_37.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_38.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_39.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_39.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_4.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_40.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_41.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_41.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_42.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_42.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_43.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_43.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_44.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_44.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_45.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_45.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_46.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_46.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_47.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_47.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_48.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_49.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_49.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_5.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_50.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_51.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_51.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_52.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_52.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_53.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_53.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_54.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_54.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_55.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_55.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_56.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_56.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_57.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_58.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_58.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_59.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_59.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_6.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_60.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_61.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_61.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_62.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_62.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_63.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_63.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_64.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_65.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_65.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_66.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_66.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_67.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_67.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_68.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_68.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_69.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_69.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_7.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_70.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_71.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_71.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_72.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_73.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_73.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_74.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_74.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_75.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_75.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_76.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_77.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_77.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_78.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_78.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_79.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_79.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_8.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_80.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_81.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_81.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_82.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_82.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_83.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_83.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_84.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_84.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_85.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_85.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_86.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_86.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_87.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_87.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_88.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_88.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_89.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_89.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_90.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_90.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_91.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_91.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_92.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_92.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_93.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_93.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_94.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_94.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_95.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_95.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_96.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_97.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_97.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_98.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_98.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/smiley_99.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/drawable-hdpi/smiley_99.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/selector_btn.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/selector_btn_comment.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/selector_btn_prize.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/selector_btn_share.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/selector_image_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/selector_list_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_btn_normal.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 11 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_btn_pressed.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 12 | 13 | 22 | 23 | 24 | 25 | 30 | 31 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_textview.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 13 | 14 | 22 | 23 | 32 | 33 | 41 | 42 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_image.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 14 | 15 | 16 | 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_weibo.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 17 | 18 | 25 | 26 | 33 | 34 | 42 | 43 | 52 | 53 | 54 | 63 | 64 | 65 | 66 | 76 | 77 | 78 | 87 | 88 | 92 | 93 | 97 | 98 | 103 | 104 | 114 | 115 | 116 | 117 | 122 | 123 | 133 | 134 | 135 | 136 | 142 | 143 | 155 | 156 | 162 | 163 | 164 | 165 | 166 | 167 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/values/color.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | #3F51B5 5 | 6 | #55ACEE 7 | #FF4081 8 | 9 | #E6E6E6 10 | #55ACEE 11 | #ffEBEBEB 12 | #ffD9D9D9 13 | 14 | #fff 15 | #000 16 | #f00 17 | #00000000 18 | #44000000 19 | 20 | #ffB1B5BA 21 | #ffBABDC0 22 | #ffD8D8D8 23 | 24 | #449C9A9C 25 | #ffEBEBEB 26 | #ffD9D9D9 27 | #636563 28 | #9C9A9C 29 | 30 | 31 | -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | WeChat 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /art/ActivityNotFoundException.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/art/ActivityNotFoundException.png -------------------------------------------------------------------------------- /art/朋友圈列表的实现.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/art/朋友圈列表的实现.png -------------------------------------------------------------------------------- /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.3.0' 9 | 10 | // NOTE: Do not place your application dependencies here; they belong 11 | // in the individual module build.gradle files 12 | } 13 | } 14 | 15 | allprojects { 16 | repositories { 17 | jcenter() 18 | } 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 | org.gradle.jvmargs=-Xmx1536m 13 | 14 | # When configured, Gradle will run in incubating parallel mode. 15 | # This option should only be used with decoupled projects. More details, visit 16 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 17 | # org.gradle.parallel=true 18 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JackChan1999/WeChatDemo/f7baf492de423e72a6eae1a58c24532785c0d00e/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Thu Mar 30 20:06:08 CST 2017 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-3.3-all.zip 7 | -------------------------------------------------------------------------------- /gradlew: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | ############################################################################## 4 | ## 5 | ## Gradle start up script for UN*X 6 | ## 7 | ############################################################################## 8 | 9 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 10 | DEFAULT_JVM_OPTS="" 11 | 12 | APP_NAME="Gradle" 13 | APP_BASE_NAME=`basename "$0"` 14 | 15 | # Use the maximum available, or set MAX_FD != -1 to use that value. 16 | MAX_FD="maximum" 17 | 18 | warn ( ) { 19 | echo "$*" 20 | } 21 | 22 | die ( ) { 23 | echo 24 | echo "$*" 25 | echo 26 | exit 1 27 | } 28 | 29 | # OS specific support (must be 'true' or 'false'). 30 | cygwin=false 31 | msys=false 32 | darwin=false 33 | case "`uname`" in 34 | CYGWIN* ) 35 | cygwin=true 36 | ;; 37 | Darwin* ) 38 | darwin=true 39 | ;; 40 | MINGW* ) 41 | msys=true 42 | ;; 43 | esac 44 | 45 | # Attempt to set APP_HOME 46 | # Resolve links: $0 may be a link 47 | PRG="$0" 48 | # Need this for relative symlinks. 49 | while [ -h "$PRG" ] ; do 50 | ls=`ls -ld "$PRG"` 51 | link=`expr "$ls" : '.*-> \(.*\)$'` 52 | if expr "$link" : '/.*' > /dev/null; then 53 | PRG="$link" 54 | else 55 | PRG=`dirname "$PRG"`"/$link" 56 | fi 57 | done 58 | SAVED="`pwd`" 59 | cd "`dirname \"$PRG\"`/" >/dev/null 60 | APP_HOME="`pwd -P`" 61 | cd "$SAVED" >/dev/null 62 | 63 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 64 | 65 | # Determine the Java command to use to start the JVM. 66 | if [ -n "$JAVA_HOME" ] ; then 67 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 68 | # IBM's JDK on AIX uses strange locations for the executables 69 | JAVACMD="$JAVA_HOME/jre/sh/java" 70 | else 71 | JAVACMD="$JAVA_HOME/bin/java" 72 | fi 73 | if [ ! -x "$JAVACMD" ] ; then 74 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 75 | 76 | Please set the JAVA_HOME variable in your environment to match the 77 | location of your Java installation." 78 | fi 79 | else 80 | JAVACMD="java" 81 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 82 | 83 | Please set the JAVA_HOME variable in your environment to match the 84 | location of your Java installation." 85 | fi 86 | 87 | # Increase the maximum file descriptors if we can. 88 | if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then 89 | MAX_FD_LIMIT=`ulimit -H -n` 90 | if [ $? -eq 0 ] ; then 91 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then 92 | MAX_FD="$MAX_FD_LIMIT" 93 | fi 94 | ulimit -n $MAX_FD 95 | if [ $? -ne 0 ] ; then 96 | warn "Could not set maximum file descriptor limit: $MAX_FD" 97 | fi 98 | else 99 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" 100 | fi 101 | fi 102 | 103 | # For Darwin, add options to specify how the application appears in the dock 104 | if $darwin; then 105 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" 106 | fi 107 | 108 | # For Cygwin, switch paths to Windows format before running java 109 | if $cygwin ; then 110 | APP_HOME=`cygpath --path --mixed "$APP_HOME"` 111 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` 112 | JAVACMD=`cygpath --unix "$JAVACMD"` 113 | 114 | # We build the pattern for arguments to be converted via cygpath 115 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` 116 | SEP="" 117 | for dir in $ROOTDIRSRAW ; do 118 | ROOTDIRS="$ROOTDIRS$SEP$dir" 119 | SEP="|" 120 | done 121 | OURCYGPATTERN="(^($ROOTDIRS))" 122 | # Add a user-defined pattern to the cygpath arguments 123 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then 124 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" 125 | fi 126 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 127 | i=0 128 | for arg in "$@" ; do 129 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` 130 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option 131 | 132 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition 133 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` 134 | else 135 | eval `echo args$i`="\"$arg\"" 136 | fi 137 | i=$((i+1)) 138 | done 139 | case $i in 140 | (0) set -- ;; 141 | (1) set -- "$args0" ;; 142 | (2) set -- "$args0" "$args1" ;; 143 | (3) set -- "$args0" "$args1" "$args2" ;; 144 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;; 145 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; 146 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; 147 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; 148 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; 149 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; 150 | esac 151 | fi 152 | 153 | # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules 154 | function splitJvmOpts() { 155 | JVM_OPTS=("$@") 156 | } 157 | eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS 158 | JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" 159 | 160 | exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" 161 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | --------------------------------------------------------------------------------