Repository: GoBelieveIO/im_android Branch: master Commit: 2fd8eff6b0c6 Files: 384 Total size: 876.1 KB Directory structure: gitextract_tzm_poya/ ├── .gitignore ├── README.md ├── app/ │ ├── .gitignore │ ├── AndroidManifest.xml │ ├── build.gradle │ ├── res/ │ │ ├── anim/ │ │ │ ├── fade_in.xml │ │ │ ├── fade_out.xml │ │ │ ├── head_in.xml │ │ │ ├── head_out.xml │ │ │ ├── hold.xml │ │ │ ├── push_bottom_in.xml │ │ │ ├── push_bottom_out.xml │ │ │ ├── push_top_in.xml │ │ │ ├── push_top_in2.xml │ │ │ ├── push_top_out.xml │ │ │ ├── push_top_out2.xml │ │ │ ├── slide_in_from_left.xml │ │ │ ├── slide_in_from_right.xml │ │ │ ├── slide_out_to_left.xml │ │ │ └── slide_out_to_right.xml │ │ ├── drawable/ │ │ │ └── btn_login_selector.xml │ │ ├── layout/ │ │ │ ├── activity_conversation.xml │ │ │ ├── activity_login.xml │ │ │ └── conversation_message.xml │ │ └── values/ │ │ ├── colors.xml │ │ ├── dimen_font.xml │ │ ├── dimens.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── src/ │ └── io/ │ └── gobelieve/ │ └── im/ │ └── demo/ │ ├── BaseActivity.java │ ├── ConversationView.java │ ├── IMDemoApplication.java │ ├── LoginActivity.java │ ├── MessageListActivity.java │ └── model/ │ ├── Conversation.java │ ├── ConversationDB.java │ ├── MessageDatabaseHelper.java │ └── SQLCreator.java ├── asynctcp/ │ ├── .gitignore │ ├── build.gradle │ └── src/ │ ├── androidTest/ │ │ └── java/ │ │ └── com/ │ │ └── beetle/ │ │ └── asynctcp/ │ │ └── ApplicationTest.java │ └── main/ │ ├── AndroidManifest.xml │ ├── java/ │ │ └── com/ │ │ └── beetle/ │ │ ├── AsyncSSLTCP.java │ │ ├── AsyncTCP.java │ │ ├── AsyncTCPInterface.java │ │ ├── AsyncTCPTest.java │ │ ├── TCPConnectCallback.java │ │ └── TCPReadCallback.java │ └── res/ │ └── values/ │ └── strings.xml ├── build.gradle ├── gradle/ │ └── wrapper/ │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat ├── imkit/ │ ├── build.gradle │ ├── libs/ │ │ ├── AMap_Location_V5.1.0_20200708.jar │ │ ├── AMap_Search_V7.3.0_20200331.jar │ │ └── Amap_2DMap_V6.0.0_20191106.jar │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ ├── assets/ │ │ └── emoticon │ ├── java/ │ │ └── com/ │ │ └── beetle/ │ │ └── bauhinia/ │ │ ├── ChatItemQuickAction.java │ │ ├── CustomerMessageActivity.java │ │ ├── GroupMessageActivity.java │ │ ├── MessageActivity.java │ │ ├── MessageAudioActivity.java │ │ ├── MessageBaseActivity.java │ │ ├── PeerMessageActivity.java │ │ ├── activity/ │ │ │ ├── CameraActivity.java │ │ │ ├── LocationPickerActivity.java │ │ │ ├── MapActivity.java │ │ │ ├── MessageFileActivity.java │ │ │ ├── OverlayActivity.java │ │ │ ├── PhotoActivity.java │ │ │ ├── PlayerActivity.java │ │ │ └── WebActivity.java │ │ ├── api/ │ │ │ ├── IMHttpAPI.java │ │ │ ├── body/ │ │ │ │ └── PostDeviceToken.java │ │ │ └── types/ │ │ │ ├── Audio.java │ │ │ ├── File.java │ │ │ ├── Image.java │ │ │ ├── Media.java │ │ │ └── Supporter.java │ │ ├── handler/ │ │ │ ├── CustomerMessageHandler.java │ │ │ ├── GroupMessageHandler.java │ │ │ ├── PeerMessageHandler.java │ │ │ └── SyncKeyHandler.java │ │ ├── outbox/ │ │ │ ├── CustomerOutbox.java │ │ │ ├── GroupOutbox.java │ │ │ ├── Outbox.java │ │ │ ├── OutboxObserver.java │ │ │ └── PeerOutbox.java │ │ ├── tools/ │ │ │ ├── AudioRecorder.java │ │ │ ├── AudioUtil.java │ │ │ ├── BinAscii.java │ │ │ ├── DeviceUtil.java │ │ │ ├── FileCache.java │ │ │ ├── FileDownloader.java │ │ │ ├── ImageMIME.java │ │ │ ├── MapUtil.java │ │ │ ├── TimeUtil.java │ │ │ └── VideoUtil.java │ │ └── view/ │ │ ├── InMessageView.java │ │ ├── MessageRowView.java │ │ ├── MiddleMessageView.java │ │ ├── OutMessageView.java │ │ └── TagView.java │ └── res/ │ ├── anim/ │ │ ├── fade_in.xml │ │ ├── fade_out.xml │ │ ├── head_in.xml │ │ ├── head_out.xml │ │ ├── hold.xml │ │ ├── push_bottom_in.xml │ │ ├── push_bottom_out.xml │ │ ├── push_top_in.xml │ │ ├── push_top_in2.xml │ │ ├── push_top_out.xml │ │ ├── push_top_out2.xml │ │ ├── slide_in_from_left.xml │ │ ├── slide_in_from_right.xml │ │ ├── slide_out_to_left.xml │ │ └── slide_out_to_right.xml │ ├── drawable/ │ │ ├── chat_send_btn.xml │ │ ├── chatting_setmode_msg_btn.xml │ │ ├── chatting_setmode_voice_btn.xml │ │ ├── conversation_recording_round.xml │ │ ├── ease_chat_file_selector.xml │ │ ├── ease_chat_image_selector.xml │ │ ├── ease_chat_location_selector.xml │ │ ├── ease_chat_press_speak_btn.xml │ │ ├── ease_chat_send_btn_selector.xml │ │ ├── ease_chat_takepic_selector.xml │ │ ├── ease_chat_video_call_selector.xml │ │ ├── ease_chatting_setmode_keyboard_btn.xml │ │ ├── ease_chatting_setmode_voice_btn.xml │ │ ├── ease_edit_text_bg.xml │ │ ├── ease_recording_text_hint_bg.xml │ │ ├── ease_type_select_btn.xml │ │ └── ic_back.xml │ ├── layout/ │ │ ├── activity_camera.xml │ │ ├── activity_file.xml │ │ ├── activity_overlay.xml │ │ ├── activity_photo.xml │ │ ├── activity_player.xml │ │ ├── activity_web.xml │ │ ├── chat.xml │ │ ├── chat_container_center.xml │ │ ├── chat_container_left.xml │ │ ├── chat_container_right.xml │ │ ├── chat_location.xml │ │ ├── conversation_recording_dialog.xml │ │ └── location_picker.xml │ ├── menu/ │ │ ├── chat.xml │ │ ├── location_picker.xml │ │ └── menu_photo.xml │ ├── values/ │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── strings.xml │ │ └── styles.xml │ ├── values-zh/ │ │ └── strings.xml │ └── xml/ │ └── file_paths.xml ├── imlib/ │ ├── build.gradle │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ ├── java/ │ │ └── com/ │ │ └── beetle/ │ │ └── bauhinia/ │ │ ├── activity/ │ │ │ └── BaseActivity.java │ │ ├── db/ │ │ │ ├── ConversationIterator.java │ │ │ ├── CustomerMessageDB.java │ │ │ ├── CustomerPeerMessageDB.java │ │ │ ├── EPeerMessageDB.java │ │ │ ├── GroupMessageDB.java │ │ │ ├── ICustomerMessage.java │ │ │ ├── IMessage.java │ │ │ ├── IMessageDB.java │ │ │ ├── MessageFlag.java │ │ │ ├── MessageIterator.java │ │ │ ├── PeerMessageDB.java │ │ │ ├── SQLCustomerMessageDB.java │ │ │ ├── SQLGroupMessageDB.java │ │ │ ├── SQLPeerMessageDB.java │ │ │ └── message/ │ │ │ ├── ACK.java │ │ │ ├── Attachment.java │ │ │ ├── Audio.java │ │ │ ├── Classroom.java │ │ │ ├── Conference.java │ │ │ ├── File.java │ │ │ ├── GroupNotification.java │ │ │ ├── GroupVOIP.java │ │ │ ├── Headline.java │ │ │ ├── Image.java │ │ │ ├── Link.java │ │ │ ├── Location.java │ │ │ ├── MessageContent.java │ │ │ ├── Notification.java │ │ │ ├── P2PSession.java │ │ │ ├── Readed.java │ │ │ ├── Revoke.java │ │ │ ├── Secret.java │ │ │ ├── Tag.java │ │ │ ├── Text.java │ │ │ ├── TimeBase.java │ │ │ ├── Unknown.java │ │ │ ├── VOIP.java │ │ │ └── Video.java │ │ ├── gallery/ │ │ │ ├── GalleryImage.java │ │ │ ├── tool/ │ │ │ │ ├── Closeables.java │ │ │ │ ├── DisplayUtils.java │ │ │ │ ├── FileUtils.java │ │ │ │ ├── ImageUtils.java │ │ │ │ ├── Md5FileNameUtils.java │ │ │ │ └── StorageUtils.java │ │ │ ├── ui/ │ │ │ │ ├── GalleryAdapter.java │ │ │ │ ├── GalleryGridAdapter.java │ │ │ │ ├── GalleryGridUI.java │ │ │ │ ├── GalleryUI.java │ │ │ │ └── PhotoActionPopup.java │ │ │ └── view/ │ │ │ └── ScrollViewPager.java │ │ ├── toolbar/ │ │ │ ├── Contact.java │ │ │ ├── EaseChatExtendMenu.java │ │ │ ├── EaseChatInputMenu.java │ │ │ ├── EaseChatPrimaryMenu.java │ │ │ ├── EaseExpandRecylerView.java │ │ │ └── emoticon/ │ │ │ ├── Emoticon.java │ │ │ ├── EmoticonAdapter.java │ │ │ ├── EmoticonManager.java │ │ │ ├── EmoticonPanel.java │ │ │ ├── EmoticonUtils.java │ │ │ └── ViewPagerAdapter.java │ │ ├── tools/ │ │ │ └── DisplayUtils.java │ │ └── view/ │ │ ├── MessageAudioView.java │ │ ├── MessageClassroomView.java │ │ ├── MessageContentView.java │ │ ├── MessageFileView.java │ │ ├── MessageImageView.java │ │ ├── MessageLinkView.java │ │ ├── MessageLocationView.java │ │ ├── MessageNotificationView.java │ │ ├── MessageTextView.java │ │ ├── MessageUnknownView.java │ │ ├── MessageVOIPView.java │ │ └── MessageVideoView.java │ └── res/ │ ├── drawable/ │ │ ├── bg_indicator_dot.xml │ │ ├── bg_indicator_dot_disable.xml │ │ ├── bg_indicator_dot_enable.xml │ │ ├── chatfrom_bg.xml │ │ ├── chatto_bg.xml │ │ ├── circle_audio.xml │ │ ├── gallery_watch_more_picture_background.xml │ │ └── rounded_corner.xml │ ├── drawable-mdpi/ │ │ ├── voice_from_icon.xml │ │ └── voice_to_icon.xml │ ├── layout/ │ │ ├── chat_content_audio.xml │ │ ├── chat_content_file.xml │ │ ├── chat_content_image.xml │ │ ├── chat_content_link.xml │ │ ├── chat_content_location.xml │ │ ├── chat_content_small_text.xml │ │ ├── chat_content_text.xml │ │ ├── chat_content_video.xml │ │ ├── chat_content_voip.xml │ │ ├── ease_chat_menu_item.xml │ │ ├── ease_row_expression.xml │ │ ├── ease_widget_chat_input_menu.xml │ │ ├── ease_widget_chat_primary_menu.xml │ │ ├── ease_widget_emojicon.xml │ │ ├── emoticon_view.xml │ │ ├── gallery_activity_gallery.xml │ │ ├── gallery_activity_gallery_grid.xml │ │ ├── gallery_activity_gallery_grid_item.xml │ │ ├── gallery_select_dialog_item.xml │ │ ├── item_emoticon.xml │ │ └── item_emoticon_page.xml │ ├── values/ │ │ ├── attrs.xml │ │ ├── colors.xml │ │ └── strings.xml │ └── values-zh/ │ └── strings.xml ├── imsdk/ │ ├── build.gradle │ └── src/ │ ├── androidTest/ │ │ └── java/ │ │ └── com/ │ │ └── beetle/ │ │ └── im/ │ │ └── ApplicationTest.java │ └── main/ │ ├── AndroidManifest.xml │ ├── java/ │ │ └── com/ │ │ └── beetle/ │ │ └── im/ │ │ ├── BytePacket.java │ │ ├── CustomerMessage.java │ │ ├── CustomerMessageHandler.java │ │ ├── CustomerMessageObserver.java │ │ ├── GroupMessageHandler.java │ │ ├── GroupMessageObserver.java │ │ ├── IMMessage.java │ │ ├── IMService.java │ │ ├── IMServiceObserver.java │ │ ├── Message.java │ │ ├── MessageACK.java │ │ ├── PeerMessageHandler.java │ │ ├── PeerMessageObserver.java │ │ ├── RTMessage.java │ │ ├── RTMessageObserver.java │ │ ├── RoomMessage.java │ │ ├── RoomMessageObserver.java │ │ ├── SyncKeyHandler.java │ │ ├── SystemMessageObserver.java │ │ └── Timer.java │ └── res/ │ └── values/ │ └── strings.xml ├── push_demo/ │ ├── .gitignore │ ├── AndroidManifest.xml │ ├── build.gradle │ ├── libs/ │ │ ├── HwPush_SDK_V2559.jar │ │ ├── MiPush_SDK_Client_2_2_16.jar │ │ ├── Xg_sdk_v2.38_20150405_2046.jar │ │ ├── jg_filter_sdk_1.1.jar │ │ ├── mid-sdk-2.10.jar │ │ └── wup-1.0.0-SNAPSHOT.jar │ ├── proguard-rules.txt │ ├── res/ │ │ ├── anim/ │ │ │ ├── fade_in.xml │ │ │ ├── fade_out.xml │ │ │ ├── head_in.xml │ │ │ ├── head_out.xml │ │ │ ├── hold.xml │ │ │ ├── push_bottom_in.xml │ │ │ ├── push_bottom_out.xml │ │ │ ├── push_top_in.xml │ │ │ ├── push_top_in2.xml │ │ │ ├── push_top_out.xml │ │ │ ├── push_top_out2.xml │ │ │ ├── slide_in_from_left.xml │ │ │ ├── slide_in_from_right.xml │ │ │ ├── slide_out_to_left.xml │ │ │ └── slide_out_to_right.xml │ │ ├── drawable/ │ │ │ ├── btn_login_selector.xml │ │ │ └── hwpush_btn_checkbox_list_star.xml │ │ ├── layout/ │ │ │ ├── activity_login.xml │ │ │ ├── hwpush_buttons_layout.xml │ │ │ ├── hwpush_collect_tip_dialog.xml │ │ │ ├── hwpush_collection_item.xml │ │ │ ├── hwpush_collection_listview.xml │ │ │ ├── hwpush_icons_layout.xml │ │ │ ├── hwpush_layout2.xml │ │ │ ├── hwpush_layout4.xml │ │ │ ├── hwpush_layout7.xml │ │ │ ├── hwpush_layout8.xml │ │ │ ├── hwpush_msg_show.xml │ │ │ └── hwpush_titlebar.xml │ │ ├── values/ │ │ │ ├── colors.xml │ │ │ ├── dimen_font.xml │ │ │ ├── dimens.xml │ │ │ ├── hwpush_colors.xml │ │ │ ├── hwpush_strings.xml │ │ │ ├── hwpush_styles.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ ├── values-w820dp/ │ │ │ └── dimens.xml │ │ └── values-zh-rCN/ │ │ └── hwpush_strings.xml │ └── src/ │ └── io/ │ └── gobelieve/ │ └── im/ │ └── demo/ │ ├── BaseActivity.java │ ├── HuaweiPushReceiver.java │ ├── LoginActivity.java │ ├── PushDemoApplication.java │ ├── XGMessageReceiver.java │ └── XiaomiPushReceiver.java ├── room_demo/ │ ├── .gitignore │ ├── AndroidManifest.xml │ ├── build.gradle │ ├── res/ │ │ ├── anim/ │ │ │ ├── fade_in.xml │ │ │ ├── fade_out.xml │ │ │ ├── head_in.xml │ │ │ ├── head_out.xml │ │ │ ├── hold.xml │ │ │ ├── push_bottom_in.xml │ │ │ ├── push_bottom_out.xml │ │ │ ├── push_top_in.xml │ │ │ ├── push_top_in2.xml │ │ │ ├── push_top_out.xml │ │ │ ├── push_top_out2.xml │ │ │ ├── slide_in_from_left.xml │ │ │ ├── slide_in_from_right.xml │ │ │ ├── slide_out_to_left.xml │ │ │ └── slide_out_to_right.xml │ │ ├── drawable/ │ │ │ └── btn_login_selector.xml │ │ ├── layout/ │ │ │ ├── activity_login.xml │ │ │ └── activity_room.xml │ │ ├── values/ │ │ │ ├── colors.xml │ │ │ ├── dimen_font.xml │ │ │ ├── dimens.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ └── values-w820dp/ │ │ └── dimens.xml │ └── src/ │ └── io/ │ └── gobelieve/ │ └── im/ │ └── demo/ │ ├── IMDemoApplication.java │ ├── LoginActivity.java │ └── RoomActivity.java └── settings.gradle ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitignore ================================================ .DS_Store .idea # built application files *.apk *.ap_ # files for the dex VM *.dex # Java class files *.class # generated files bin/ gen/ out/ build/ # Local configuration file (sdk path, etc) local.properties # Eclipse project files .classpath .project # Proguard folder generated by Eclipse proguard/ # Intellij project files *.iws .idea/ *.iml # Gradle directory build/ .gradle/ # Maven directory target # OS .DS_Store *~ proguard-rules.pro ================================================ FILE: README.md ================================================ GoBelieve Android SDK ------------------- ##demo各模块说明 app, group_demo, customer_service_demo是application模块 asynctcp, imsdk, imkit是library模块 1. app模块测试点对点消息 app模块可以输入自己和对方的uid(整型),就可以直接和对方聊天. app模块如果只输入自己的uid,那么会进入会话列表界面 3. group_demo模块测试群组消息 group_demo模块可以输入自己的uid和群组的id(整型),就可以直接测试群组消息 5. customer_service_demo测试客服消息 customer_service_demo模块是以客服人员的身份登录,并接受用户发来的客服消息 ##应用集成到客户端 1. import asynctcp, imsdk, imkit模块到自己的app工程 2. 在Application的onCreate初始化 String androidID = Settings.Secure.getString(this.getContentResolver(), Settings.Secure.ANDROID_ID); //设置设备唯一标识,用于多点登录时设备校验 IMService.getInstance().setDeviceID(androidID); //监听网路状态变更 IMService.getInstance().registerConnectivityChangeReceiver(getApplicationContext()); mIMService.setPeerMessageHandler(PeerMessageHandler.getInstance()); mIMService.setGroupMessageHandler(GroupMessageHandler.getInstance()); mIMService.setCustomerMessageHandler(CustomerMessageHandler.getInstance()); 3. 登录成功后设置uid,token IMService.getInstance().setToken(token); PeerMessageHandler.getInstance().setUID(uid); GroupMessageHandler.getInstance().setUID(uid); SyncKeyHandler handler = new SyncKeyHandler(this.getApplicationContext(), String.format("sync_key_%d", uid)); handler.load(); IMService.getInstance().setSyncKeyHandler(handler); 4. 打开消息db, 数据库表结构参照demo中的MessageDatabaseHelper源代码 File p = this.getDir("db", MODE_PRIVATE); File f = new File(p, String.format("gobelieve_%d.db", uid)); String path = f.getPath(); MessageDatabaseHelper dh = MessageDatabaseHelper.getInstance(); dh.open(this.getApplicationContext(), path); SQLiteDatabase db = dh.getDatabase(); PeerMessageDB.getInstance().setDb(db); EPeerMessageDB.getInstance().setDb(db); GroupMessageDB.getInstance().setDb(db); CustomerMessageDB.getInstance().setDb(db); 5. 启动IMService接受消息 IMService.getInstance().start(); 6. 添加消息observer,处理相应类型的消息 //连接状态 IMService.getInstance().addObserver(ob); //点对点消息 IMService.getInstance().addPeerObserver(ob); //群组消息 IMService.getInstance().addGroupObserver(ob); //直播的聊天室消息 IMService.getInstance().addRoomObserver(ob); //实时消息,用于voip的信令 IMService.getInstance().addRTObserver(ob); //系统消息 IMService.getInstance().addSystemObserver(ob); 7. 应用进入后台,断开socket链接 IMService.getInstance().enterBackground(); 8. 应用返回前台,重现链接socket IMService.getInstance().enterForeground(); 9. 发送点对点消息 Intent intent = new Intent(this, PeerMessageActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.putExtra("peer_uid", peer_uid); intent.putExtra("peer_name", ""); intent.putExtra("current_uid", uid); startActivity(intent); 10. 发送群组消息 Intent intent = new Intent(this, GroupMessageActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.putExtra("group_id", groupId); intent.putExtra("group_name", ""); intent.putExtra("current_uid", uid); startActivity(intent); 11. 用户注销 IMService.getInstance().stop() ================================================ FILE: app/.gitignore ================================================ /build ================================================ FILE: app/AndroidManifest.xml ================================================ ================================================ FILE: app/build.gradle ================================================ apply plugin: 'com.android.application' android { compileSdkVersion rootProject.ext.compileSdkVersion buildToolsVersion rootProject.ext.buildToolsVersion defaultConfig { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode 1020 versionName "1.0.2" } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] res.srcDirs = ['res'] aidl.srcDirs = ['src'] jniLibs.srcDirs = ['libs'] assets.srcDirs = ['src/main/assets', 'assets/'] } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } packagingOptions { exclude 'META-INF/DEPENDENCIES.txt' exclude 'META-INF/LICENSE.txt' exclude 'META-INF/NOTICE.txt' exclude 'META-INF/NOTICE' exclude 'META-INF/LICENSE' exclude 'META-INF/DEPENDENCIES' exclude 'META-INF/notice.txt' exclude 'META-INF/license.txt' exclude 'META-INF/dependencies.txt' exclude 'META-INF/LGPL2.1' } lintOptions { checkReleaseBuilds false abortOnError false } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation project(':imkit') implementation project(':imlib') implementation project(':imsdk') implementation project(':asynctcp') implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'androidx.appcompat:appcompat:1.0.0' implementation 'com.netflix.rxjava:rxjava-core:0.20.7' implementation 'com.netflix.rxjava:rxjava-android:0.20.7' implementation 'com.squareup.picasso:picasso:2.71828' } ================================================ FILE: app/res/anim/fade_in.xml ================================================ ================================================ FILE: app/res/anim/fade_out.xml ================================================ ================================================ FILE: app/res/anim/head_in.xml ================================================ ================================================ FILE: app/res/anim/head_out.xml ================================================ ================================================ FILE: app/res/anim/hold.xml ================================================ ================================================ FILE: app/res/anim/push_bottom_in.xml ================================================ ================================================ FILE: app/res/anim/push_bottom_out.xml ================================================ ================================================ FILE: app/res/anim/push_top_in.xml ================================================ ================================================ FILE: app/res/anim/push_top_in2.xml ================================================ ================================================ FILE: app/res/anim/push_top_out.xml ================================================ ================================================ FILE: app/res/anim/push_top_out2.xml ================================================ ================================================ FILE: app/res/anim/slide_in_from_left.xml ================================================ ================================================ FILE: app/res/anim/slide_in_from_right.xml ================================================ ================================================ FILE: app/res/anim/slide_out_to_left.xml ================================================ ================================================ FILE: app/res/anim/slide_out_to_right.xml ================================================ ================================================ FILE: app/res/drawable/btn_login_selector.xml ================================================ ================================================ FILE: app/res/layout/activity_conversation.xml ================================================ ================================================ FILE: app/res/layout/activity_login.xml ================================================