├── .gitignore ├── .idea ├── caches │ └── build_file_checksums.ser ├── codeStyles │ ├── Project.xml │ └── codeStyleConfig.xml ├── dictionaries │ └── hty_Y.xml ├── encodings.xml ├── gradle.xml ├── jarRepositories.xml ├── misc.xml ├── modules.xml ├── runConfigurations.xml └── vcs.xml ├── README.md ├── app ├── .gitignore ├── aaaaaa.keystore ├── build.gradle ├── ilivePublish │ └── release │ │ ├── app-ilive-1.0.05.apk │ │ └── output.json ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── android │ │ └── gift │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── assets │ │ ├── gift_1.json │ │ ├── gift_2.json │ │ ├── gift_3.json │ │ ├── gift_4.json │ │ ├── gift_type.json │ │ └── rooms.json │ ├── java │ │ └── com │ │ │ └── amazon │ │ │ └── kindle │ │ │ ├── APPLication.java │ │ │ ├── adapter │ │ │ └── AppFragmentPagerAdapter.java │ │ │ ├── base │ │ │ ├── BaseAdapter.java │ │ │ ├── BaseContract.java │ │ │ ├── BaseEngin.java │ │ │ ├── BaseFragment.java │ │ │ ├── BasePresenter.java │ │ │ ├── BaseRoomActivity.java │ │ │ └── RoomBaseController.java │ │ │ ├── bean │ │ │ ├── ResultData.java │ │ │ ├── ResultList.java │ │ │ ├── ShareMenuItemInfo.java │ │ │ └── UserInfo.java │ │ │ ├── constant │ │ │ └── Constants.java │ │ │ ├── gift │ │ │ ├── adapter │ │ │ │ └── GiftItemAdapter.java │ │ │ ├── bean │ │ │ │ ├── GiftItemInfo.java │ │ │ │ └── GiftType.java │ │ │ ├── contract │ │ │ │ └── GiftContact.java │ │ │ ├── dialog │ │ │ │ └── LiveGiftDialog.java │ │ │ ├── listener │ │ │ │ └── OnGiveGiftListener.java │ │ │ ├── manager │ │ │ │ ├── GiftBoardManager.java │ │ │ │ └── GiftRoomGroupManager.java │ │ │ ├── model │ │ │ │ └── GiftEngin.java │ │ │ ├── presenter │ │ │ │ └── GiftPresenter.java │ │ │ └── view │ │ │ │ ├── CircleTextProgressbar.java │ │ │ │ ├── CountdownGiftView.java │ │ │ │ ├── GiftAniImageView.java │ │ │ │ ├── GiftBoardView.java │ │ │ │ ├── GiftDrawBigMulitAnimationView.java │ │ │ │ ├── GiftDrawSmallMulitAnimationView.java │ │ │ │ ├── GiftGradualTextView.java │ │ │ │ ├── GiftLayout.java │ │ │ │ └── GiftRoomItemView.java │ │ │ ├── index │ │ │ ├── adapter │ │ │ │ ├── LivePrivateRoomAdapter.java │ │ │ │ ├── LivePublicRoomAdapter.java │ │ │ │ └── ShareAdapter.java │ │ │ ├── ui │ │ │ │ ├── activity │ │ │ │ │ ├── AboutActivity.java │ │ │ │ │ ├── MainActivity.java │ │ │ │ │ └── WebViewActivity.java │ │ │ │ ├── dialog │ │ │ │ │ └── ShareDialog.java │ │ │ │ └── fragment │ │ │ │ │ ├── IndexPrivateRoomFragment.java │ │ │ │ │ └── IndexPublicRoomFragment.java │ │ │ └── view │ │ │ │ └── IndexRoomItemLayout.java │ │ │ ├── listener │ │ │ ├── OnAnimationListener.java │ │ │ ├── OnItemClickListener.java │ │ │ ├── OnItemLongClickListener.java │ │ │ ├── OnLoadMoreListener.java │ │ │ └── OnLoadMorePresenter.java │ │ │ ├── manager │ │ │ ├── ApplicationManager.java │ │ │ ├── RoomDanmuManager.java │ │ │ ├── UserManager.java │ │ │ └── VibratorManager.java │ │ │ ├── model │ │ │ ├── BezierEvaluator.java │ │ │ ├── GlideCircleTransform.java │ │ │ ├── GlideImageLoader.java │ │ │ ├── IndexLinLayoutManager.java │ │ │ ├── ItemSpacesItemDecoration.java │ │ │ └── ScrollSpeedLinearLayoutManger.java │ │ │ ├── net │ │ │ ├── OkHttpUtils.java │ │ │ └── OnResultCallBack.java │ │ │ ├── observer │ │ │ └── SubjectObservable.java │ │ │ ├── room │ │ │ ├── activity │ │ │ │ └── LiveRoomActivity.java │ │ │ ├── adapter │ │ │ │ ├── ConversationChatAdapter.java │ │ │ │ ├── IndexRoomImagesAdapter.java │ │ │ │ └── LiveFansListAdapter.java │ │ │ ├── bean │ │ │ │ ├── BannerInfo.java │ │ │ │ ├── BoxPixInfo.java │ │ │ │ ├── CustomMsgExtra.java │ │ │ │ ├── CustomMsgInfo.java │ │ │ │ ├── ImageInfo.java │ │ │ │ ├── InkeChannel.java │ │ │ │ ├── InkeRoomData.java │ │ │ │ ├── InkeRoomInfo.java │ │ │ │ ├── InkeRoomItem.java │ │ │ │ ├── InkeWebItem.java │ │ │ │ ├── LiveRoomInfo.java │ │ │ │ ├── NumberChangedInfo.java │ │ │ │ └── RoomItem.java │ │ │ ├── contract │ │ │ │ └── RoomContact.java │ │ │ ├── doalog │ │ │ │ └── InputKeyBoardDialog.java │ │ │ ├── model │ │ │ │ └── RoomEngin.java │ │ │ ├── presenter │ │ │ │ └── RoomPresenter.java │ │ │ └── view │ │ │ │ ├── BrightConversationListView.java │ │ │ │ ├── GoldWireLayout.java │ │ │ │ ├── LikeAbstractPathAnimator.java │ │ │ │ ├── LikeHeartLayout.java │ │ │ │ ├── LikeHeartView.java │ │ │ │ ├── LikePathAnimator.java │ │ │ │ ├── RoundGlobeView.java │ │ │ │ └── VideoLiveControllerView.java │ │ │ ├── service │ │ │ ├── DownLoadService.java │ │ │ └── bean │ │ │ │ └── BuildMessageInfo.java │ │ │ ├── util │ │ │ ├── AnimationUtil.java │ │ │ ├── AppUtils.java │ │ │ ├── DataFactory.java │ │ │ ├── Logger.java │ │ │ ├── ScreenLayoutChangedHelp.java │ │ │ ├── SpannableStringUtils.java │ │ │ ├── StatusUtils.java │ │ │ └── UserModelUtil.java │ │ │ └── view │ │ │ ├── CircleProgressView.java │ │ │ ├── CommentTitleView.java │ │ │ ├── DataChangeView.java │ │ │ ├── LayoutProvider.java │ │ │ ├── LoadingMoreView.java │ │ │ ├── MarqueeTextView.java │ │ │ ├── MusicBackgroungBlurView.java │ │ │ ├── ProgressWheel.java │ │ │ ├── RadarLayout.java │ │ │ ├── RoundImageView.java │ │ │ ├── ShapeTextView.java │ │ │ ├── StaggeredItemDecoration.java │ │ │ ├── TextImageSpan.java │ │ │ └── danmaku │ │ │ ├── CenteredImageSpan.java │ │ │ └── CircleDrawable.java │ └── res │ │ ├── anim │ │ ├── gift_room_lite_item_enter.xml │ │ ├── gift_room_lite_item_out.xml │ │ ├── menu_enter.xml │ │ └── menu_exit.xml │ │ ├── animator │ │ └── gift_room_lite_num_scalex.xml │ │ ├── color │ │ ├── lib_text_color_black_selector.xml │ │ └── tab_text_item_selector.xml │ │ ├── drawable-v21 │ │ ├── ic_item_foreground.xml │ │ └── lib_item_comment_bg.xml │ │ ├── drawable-v24 │ │ └── ic_launcher_foreground.xml │ │ ├── drawable-xhdpi │ │ ├── ic_draw_0.png │ │ ├── ic_draw_1.png │ │ ├── ic_draw_2.png │ │ ├── ic_draw_3.png │ │ ├── ic_draw_4.png │ │ ├── ic_draw_5.png │ │ ├── ic_draw_6.png │ │ ├── ic_draw_7.png │ │ ├── ic_draw_8.png │ │ ├── ic_draw_9.png │ │ ├── ic_draw_text.png │ │ ├── ic_vip_room_enter.png │ │ ├── lucky_box_big_1.png │ │ ├── lucky_box_big_10.png │ │ ├── lucky_box_big_11.png │ │ ├── lucky_box_big_12.png │ │ ├── lucky_box_big_13.png │ │ ├── lucky_box_big_14.png │ │ ├── lucky_box_big_15.png │ │ ├── lucky_box_big_16.png │ │ ├── lucky_box_big_17.png │ │ ├── lucky_box_big_18.png │ │ ├── lucky_box_big_19.png │ │ ├── lucky_box_big_2.png │ │ ├── lucky_box_big_20.png │ │ ├── lucky_box_big_21.png │ │ ├── lucky_box_big_22.png │ │ ├── lucky_box_big_23.png │ │ ├── lucky_box_big_24.png │ │ ├── lucky_box_big_25.png │ │ ├── lucky_box_big_26.png │ │ ├── lucky_box_big_27.png │ │ ├── lucky_box_big_3.png │ │ ├── lucky_box_big_4.png │ │ ├── lucky_box_big_5.png │ │ ├── lucky_box_big_6.png │ │ ├── lucky_box_big_7.png │ │ ├── lucky_box_big_8.png │ │ ├── lucky_box_big_9.png │ │ └── tip_game.9.png │ │ ├── drawable-xxhdpi │ │ ├── bg_gift_item_selected.9.png │ │ ├── btn_live_close.png │ │ ├── btn_live_msg.png │ │ ├── btn_live_share.png │ │ ├── com_facebook_tooltip_black_background.9.png │ │ ├── gift_card_level_three_n_0.png │ │ ├── gift_card_level_three_n_1.png │ │ ├── gift_card_level_three_n_2.png │ │ ├── gift_card_level_three_n_3.png │ │ ├── gift_card_level_three_n_4.png │ │ ├── gift_card_level_three_n_5.png │ │ ├── gift_card_level_three_n_6.png │ │ ├── gift_card_level_three_n_7.png │ │ ├── gift_card_level_three_n_8.png │ │ ├── gift_card_level_three_n_9.png │ │ ├── gift_card_level_three_n_a.png │ │ ├── gift_numx.png │ │ ├── ic_chat_server.png │ │ ├── ic_default_gift_icon.png │ │ ├── ic_default_user_head.png │ │ ├── ic_direction_bottom.png │ │ ├── ic_direction_left.png │ │ ├── ic_direction_right.png │ │ ├── ic_direction_top.png │ │ ├── ic_gift_board_money.png │ │ ├── ic_gift_money.png │ │ ├── ic_gift_send_icon.png │ │ ├── ic_history.png │ │ ├── ic_history_normal.png │ │ ├── ic_launcher.png │ │ ├── ic_liked.png │ │ ├── ic_list_empty_icon.png │ │ ├── ic_message_down.png │ │ ├── ic_message_face.png │ │ ├── ic_nav_bar_back_black.png │ │ ├── ic_nav_bar_back_gray.png │ │ ├── ic_nav_bar_back_white.png │ │ ├── ic_net_error.png │ │ ├── ic_room_monery.png │ │ ├── icon_like_png.png │ │ ├── iv_icon_search.png │ │ ├── iv_share_qq.png │ │ ├── iv_share_qzone.png │ │ ├── iv_share_weichat.png │ │ ├── iv_share_weichatfriend.png │ │ ├── loading_circle_progress.png │ │ ├── lucky_num0.png │ │ ├── lucky_num1.png │ │ ├── lucky_num2.png │ │ ├── lucky_num3.png │ │ ├── lucky_num4.png │ │ ├── lucky_num5.png │ │ ├── lucky_num6.png │ │ ├── lucky_num7.png │ │ ├── lucky_num8.png │ │ ├── lucky_num9.png │ │ ├── num0.png │ │ ├── num1.png │ │ ├── num2.png │ │ ├── num3.png │ │ ├── num4.png │ │ ├── num5.png │ │ ├── num6.png │ │ ├── num7.png │ │ ├── num8.png │ │ ├── num9.png │ │ ├── resource_heart0.png │ │ ├── resource_heart1.png │ │ ├── resource_heart2.png │ │ ├── resource_heart3.png │ │ ├── resource_heart4.png │ │ ├── resource_heart5.png │ │ ├── resource_heart6.png │ │ ├── resource_heart7.png │ │ ├── resource_heart8.png │ │ ├── resource_heart9.png │ │ ├── room_danmu_item_bg.9.png │ │ ├── vip_gradle1.png │ │ ├── vip_gradle10.png │ │ ├── vip_gradle11.png │ │ ├── vip_gradle12.png │ │ ├── vip_gradle13.png │ │ ├── vip_gradle14.png │ │ ├── vip_gradle15.png │ │ ├── vip_gradle16.png │ │ ├── vip_gradle17.png │ │ ├── vip_gradle18.png │ │ ├── vip_gradle19.png │ │ ├── vip_gradle2.png │ │ ├── vip_gradle20.png │ │ ├── vip_gradle21.png │ │ ├── vip_gradle22.png │ │ ├── vip_gradle23.png │ │ ├── vip_gradle24.png │ │ ├── vip_gradle25.png │ │ ├── vip_gradle26.png │ │ ├── vip_gradle27.png │ │ ├── vip_gradle28.png │ │ ├── vip_gradle29.png │ │ ├── vip_gradle3.png │ │ ├── vip_gradle30.png │ │ ├── vip_gradle31.png │ │ ├── vip_gradle32.png │ │ ├── vip_gradle33.png │ │ ├── vip_gradle34.png │ │ ├── vip_gradle35.png │ │ ├── vip_gradle36.png │ │ ├── vip_gradle37.png │ │ ├── vip_gradle38.png │ │ ├── vip_gradle39.png │ │ ├── vip_gradle4.png │ │ ├── vip_gradle40.png │ │ ├── vip_gradle41.png │ │ ├── vip_gradle42.png │ │ ├── vip_gradle43.png │ │ ├── vip_gradle44.png │ │ ├── vip_gradle45.png │ │ ├── vip_gradle46.png │ │ ├── vip_gradle47.png │ │ ├── vip_gradle48.png │ │ ├── vip_gradle49.png │ │ ├── vip_gradle5.png │ │ ├── vip_gradle50.png │ │ ├── vip_gradle6.png │ │ ├── vip_gradle7.png │ │ ├── vip_gradle8.png │ │ └── vip_gradle9.png │ │ ├── drawable │ │ ├── arice_dot_false.xml │ │ ├── arice_dot_green.xml │ │ ├── arice_dot_red.xml │ │ ├── arice_dot_style.xml │ │ ├── arice_dot_tr_red.xml │ │ ├── arice_dot_true.xml │ │ ├── bg_anchor_user_head_shape.xml │ │ ├── bg_black_shape_gratien.xml │ │ ├── bg_black_shape_ungratien.xml │ │ ├── bg_draw_layout.xml │ │ ├── bg_fans_user_mad_head_shape.xml │ │ ├── bg_fans_user_man_head_shape.xml │ │ ├── bg_gift_num_item.xml │ │ ├── bg_gift_tag_shape.xml │ │ ├── bg_input.xml │ │ ├── bg_inputbox.xml │ │ ├── bg_room_draw_level_bg.xml │ │ ├── bg_shape_room_cacht_content.xml │ │ ├── bg_title.xml │ │ ├── bg_user_head_shape.xml │ │ ├── bg_white_circular_trs.xml │ │ ├── btn_nav_menu_back_selector_black.xml │ │ ├── btn_nav_menu_back_selector_white.xml │ │ ├── dot_arl_selector.xml │ │ ├── full_room_input_send_bg.xml │ │ ├── full_room_input_unsend_bg.xml │ │ ├── gift_bg_live_user_data.xml │ │ ├── gift_draw_big_anim.xml │ │ ├── gift_item_bg_shape.xml │ │ ├── gift_room_avatar_bg.xml │ │ ├── ic_item_foreground.xml │ │ ├── index_head_border.xml │ │ ├── index_list_one_item_bottom_bg.xml │ │ ├── index_live_public_item_bottom_bg.xml │ │ ├── lib_bg_dialog_bottom_bg.xml │ │ ├── lib_item_comment_bg.xml │ │ └── progress.xml │ │ ├── layout │ │ ├── activity_about.xml │ │ ├── activity_live_room.xml │ │ ├── activity_main.xml │ │ ├── activity_webview.xml │ │ ├── comment_title_layout.xml │ │ ├── dialog_gift_group.xml │ │ ├── dialog_input_keyboard_layout.xml │ │ ├── dialog_share.xml │ │ ├── fragment_index_private_room.xml │ │ ├── fragment_index_public_room.xml │ │ ├── fragment_index_room.xml │ │ ├── index_main_layout.xml │ │ ├── item_idnex_user_image_item.xml │ │ ├── item_live_conversation_layout.xml │ │ ├── item_live_gif_layout.xml │ │ ├── item_live_private_banner_item.xml │ │ ├── item_live_private_room_item.xml │ │ ├── item_live_public_banner_item.xml │ │ ├── item_live_public_room_item.xml │ │ ├── item_live_user_fans_item.xml │ │ ├── item_re_gift_item_layout.xml │ │ ├── item_share_item.xml │ │ ├── item_unknown.xml │ │ ├── layout_periscope.xml │ │ ├── live_top_tool_bar.xml │ │ ├── view_bright_conversation_layout.xml │ │ ├── view_countdown_gift_layout.xml │ │ ├── view_gift_big_draw_layout.xml │ │ ├── view_gift_board.xml │ │ ├── view_gift_board_item.xml │ │ ├── view_gift_layout.xml │ │ ├── view_index_globe_layout.xml │ │ ├── view_index_room_layout.xml │ │ ├── view_list_empty.xml │ │ ├── view_live_controller_layout.xml │ │ ├── view_load_more_layout.xml │ │ ├── view_tab_item.xml │ │ └── view_web_error_page.xml │ │ ├── values-v19 │ │ └── styles.xml │ │ ├── values-v21 │ │ └── styles.xml │ │ └── values │ │ ├── attrs.xml │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── integers.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── android │ └── gift │ └── ExampleUnitTest.java ├── build.gradle ├── config.gradle ├── doc ├── apk │ ├── iLive-1.0.01.apk │ ├── iLive-1.0.02.apk │ ├── iLive-1.0.03.apk │ └── iLive-1.0.04.apk └── screenshot │ ├── 一对一.png │ ├── 直播列表.png │ ├── 直播间1.png │ ├── 直播间中奖.png │ ├── 直播间礼物.png │ └── 礼物面板.png ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── live-player-lib ├── .gitignore ├── build.gradle ├── libs │ ├── armeabi │ │ ├── libTRAECodec.so │ │ ├── libliteavsdk.so │ │ ├── libsaturn.so │ │ ├── libstlport_shared.so │ │ ├── libtraeimp-rtmp.so │ │ └── libtxffmpeg.so │ └── liteavsdk.jar ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── android │ │ └── live │ │ └── player │ │ └── lib │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── android │ │ │ └── live │ │ │ └── player │ │ │ └── lib │ │ │ ├── base │ │ │ ├── BaseVideoController.java │ │ │ └── BaseVideoPlayer.java │ │ │ ├── controller │ │ │ └── PlayerVideoController.java │ │ │ ├── listener │ │ │ ├── OnVideoTouchListener.java │ │ │ ├── VideoPlayerEventListener.java │ │ │ └── VideoPlayerListener.java │ │ │ ├── manager │ │ │ ├── VideoAudioFocusManager.java │ │ │ └── VideoPlayerManager.java │ │ │ ├── model │ │ │ └── VideoPlayerState.java │ │ │ ├── utils │ │ │ ├── Logger.java │ │ │ └── VideoUtils.java │ │ │ └── view │ │ │ └── VideoPlayerTrack.java │ └── res │ │ ├── drawable-xxhdpi │ │ ├── bg_live_transit.jpg │ │ ├── ic_private_media_play.png │ │ ├── ic_video_default_cover.png │ │ ├── loading_1.png │ │ ├── loading_10.png │ │ ├── loading_11.png │ │ ├── loading_12.png │ │ ├── loading_2.png │ │ ├── loading_3.png │ │ ├── loading_4.png │ │ ├── loading_5.png │ │ ├── loading_6.png │ │ ├── loading_7.png │ │ ├── loading_8.png │ │ └── loading_9.png │ │ ├── drawable │ │ ├── bg_black.xml │ │ ├── video_loading_anim.xml │ │ └── video_text_play_bg.xml │ │ ├── layout │ │ ├── video_controller_layout.xml │ │ └── view_live_media_player_layout.xml │ │ └── values │ │ ├── attrs.xml │ │ ├── ids.xml │ │ ├── integers.xml │ │ └── strings.xml │ └── test │ └── java │ └── com │ └── android │ └── live │ └── player │ └── lib │ └── ExampleUnitTest.java └── 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 | -------------------------------------------------------------------------------- /.idea/caches/build_file_checksums.ser: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/.idea/caches/build_file_checksums.ser -------------------------------------------------------------------------------- /.idea/codeStyles/codeStyleConfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | -------------------------------------------------------------------------------- /.idea/dictionaries/hty_Y.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 20 | 21 | -------------------------------------------------------------------------------- /.idea/jarRepositories.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | 14 | 15 | 19 | 20 | 24 | 25 | 29 | 30 | 34 | 35 | 39 | 40 | 44 | 45 | 49 | 50 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # **iLive** 2 | ### 相关推荐 3 | [Android音乐播放器封装]: https://www.jianshu.com/p/9051b96c02f9 "Android音乐播放器封装" 4 | 音乐播放器:[Android音乐播放器封装] 5 | 6 | [Android视频播放器封装]: https://www.jianshu.com/p/39d8f824c2fb "Android视频播放器封装" 7 | 视频播放器:[Android视频播放器封装] 8 | 9 | ### 项目介绍 10 | 此项目是以礼物模块为核心的功能交互工程。功能包含但不限于:在线直播间、完整礼物模块、礼物打赏交互、中奖、飘屏动画、弹幕、聊天互动等功能。欢迎下载体验APK! 11 | 项目中直播间控制器预留了IM消息接入,请阅读RoomBaseController类源码注释接入IM实现真实互动。 12 | 13 | ### 功能概述 14 | * 在线直播间观看,支持直播间秒开
15 | * 完整的礼物模块,包括但不限于礼物动画、交互、选择、回显、赠送等。
16 | * 直播间礼物互动、中奖、飘屏弹幕
17 | * 直播间聊天互动示例
18 | * 直播间控制器层预留了IM消息入口
19 | * 不同直播间类型的设计封装,见BaseRoomActivity类
20 | 21 | ### 最新版下载地址: 22 | 23 | [点击下载Apk]: https://raw.githubusercontent.com/Yuye584312311/iLive/develop/doc/apk/iLive-1.0.04.apk "本地下载" 24 | **[点击下载Apk]**
25 | 26 | [点击查看历史版本]: https://github.com/Yuye584312311/iLive/wiki/HistoryVersion "历史版本" 27 | **[点击查看历史版本]**
28 | 29 | ### 软件截图: 30 |
31 | 32 | 33 | 34 |
35 |
36 | 37 | 38 | 39 |
40 |
41 | * 如果您有技术交流或合作需求,请致信邮箱:584312311@qq.com -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | /newqu.keystore -------------------------------------------------------------------------------- /app/aaaaaa.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/aaaaaa.keystore -------------------------------------------------------------------------------- /app/ilivePublish/release/app-ilive-1.0.05.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/ilivePublish/release/app-ilive-1.0.05.apk -------------------------------------------------------------------------------- /app/ilivePublish/release/output.json: -------------------------------------------------------------------------------- 1 | [{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":100005},"path":"app-ilive-publish-release.apk","properties":{"packageId":"com.kindle.live.gift","split":"","minSdkVersion":"16"}}] -------------------------------------------------------------------------------- /app/src/androidTest/java/com/android/gift/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle; 2 | 3 | import android.content.Context; 4 | import android.support.test.InstrumentationRegistry; 5 | import android.support.test.runner.AndroidJUnit4; 6 | 7 | import org.junit.Test; 8 | import org.junit.runner.RunWith; 9 | 10 | import static org.junit.Assert.*; 11 | 12 | /** 13 | * Instrumented test, which will execute on an Android device. 14 | * 15 | * @see Testing documentation 16 | */ 17 | @RunWith(AndroidJUnit4.class) 18 | public class ExampleInstrumentedTest { 19 | @Test 20 | public void useAppContext() throws Exception { 21 | // Context of the app under test. 22 | Context appContext = InstrumentationRegistry.getTargetContext(); 23 | 24 | assertEquals("com.amazon.kindle", appContext.getPackageName()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 22 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 34 | 35 | 37 | 38 | 40 | 41 | 42 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /app/src/main/assets/gift_4.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": 1, 3 | "data": { 4 | "list": [ 5 | { 6 | "addtime": 0, 7 | "begin_discount": -1, 8 | "big_svga": "http://a.197754.com/uploads/images/20181029/cc315443a582352cf016c7af369be0a1.svga", 9 | "commision": 1, 10 | "desp": "对方可得30万积分,全站礼物,坐上飞碟环游宇宙!", 11 | "discount": 0, 12 | "end_discount": -1, 13 | "gift_category": 0, 14 | "gift_type": 4, 15 | "id": 7554, 16 | "is_hot": 0, 17 | "is_wawa": 0, 18 | "price": 300000, 19 | "scene_api_type": 0, 20 | "sort": 70, 21 | "source": "0", 22 | "src": "http://a.tn990.com/uploads/images/20181029/c735289e51ccb32bc4f80f650259e7c0.png", 23 | "state": 0, 24 | "svga": "http://a.tn990.com/uploads/images/20181029/27c22b9f827f2a2df33ae2dbd93884ec.svga", 25 | "tag": "热", 26 | "title": "飞碟" 27 | } 28 | ] 29 | }, 30 | "message": "成功" 31 | } -------------------------------------------------------------------------------- /app/src/main/assets/gift_type.json: -------------------------------------------------------------------------------- 1 | { 2 | "code": 1, 3 | "data": { 4 | "list": [ 5 | { 6 | "addtime": 1530260031, 7 | "id": 1, 8 | "name": "hot", 9 | "title": "热门" 10 | }, 11 | { 12 | "addtime": 1530260031, 13 | "id": 2, 14 | "name": "normal", 15 | "title": "普通" 16 | }, 17 | { 18 | "addtime": 1530260031, 19 | "id": 3, 20 | "name": "expensive", 21 | "title": "奢侈" 22 | }, 23 | { 24 | "addtime": 1530260031, 25 | "id": 4, 26 | "name": "whole", 27 | "title": "全站" 28 | } 29 | ] 30 | }, 31 | "message": "成功" 32 | } -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/APPLication.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle; 2 | 3 | import android.app.Application; 4 | import android.os.Build; 5 | import android.os.StrictMode; 6 | import com.amazon.kindle.net.OkHttpUtils; 7 | import com.amazon.kindle.util.Logger; 8 | 9 | /** 10 | * TinyHung@outlook.com 11 | * 2019/7/5 12 | */ 13 | 14 | public class APPLication extends Application { 15 | 16 | private static APPLication mInstance; 17 | 18 | public static APPLication getInstance() { 19 | return mInstance; 20 | } 21 | 22 | @Override 23 | public void onCreate() { 24 | super.onCreate(); 25 | mInstance = APPLication.this; 26 | if(BuildConfig.FLAVOR.equals("ilivePublish")){ 27 | Logger.IS_DEBUG=false; 28 | OkHttpUtils.DEBUG=false; 29 | } 30 | } 31 | 32 | private void setStrictPow() { 33 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { 34 | StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder(); 35 | StrictMode.setVmPolicy(builder.build()); 36 | } 37 | } 38 | } -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/base/BaseContract.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle.base; 2 | 3 | /** 4 | * hty_Yuye@Outlook.com 5 | * 2019/5/6 6 | * MVP Base V 7 | */ 8 | 9 | public interface BaseContract { 10 | /** 11 | * presenter 12 | * @param view 13 | */ 14 | interface BasePresenter{ 15 | void attachView(V view); 16 | void detachView(); 17 | } 18 | 19 | /** 20 | * View 21 | */ 22 | interface BaseView{ 23 | 24 | /** 25 | * 开始加载中 26 | * @param offset 数据集起始偏移位置 27 | */ 28 | void showLoading(int offset); 29 | 30 | /** 31 | * 错误、为空回调 32 | * @param code 0:为空 -1:失败 33 | * @param errorMsg 描述信息 34 | */ 35 | void showError(int code, String errorMsg); 36 | } 37 | } -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/base/BaseFragment.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle.base; 2 | 3 | import android.os.Bundle; 4 | import android.support.annotation.Nullable; 5 | import android.support.v4.app.Fragment; 6 | import android.view.LayoutInflater; 7 | import android.view.View; 8 | import android.view.ViewGroup; 9 | 10 | /** 11 | * TinyHung@Outlook.com 12 | * 2019/4/8 13 | */ 14 | 15 | public abstract class BaseFragment

extends Fragment implements BaseContract.BaseView { 16 | 17 | protected P mPresenter; 18 | protected abstract int getLayoutID(); 19 | protected abstract void initViews(); 20 | 21 | @Nullable 22 | @Override 23 | public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, 24 | @Nullable Bundle savedInstanceState) { 25 | return inflater.inflate(getLayoutID(),null,false); 26 | } 27 | 28 | @Override 29 | public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 30 | super.onViewCreated(view, savedInstanceState); 31 | mPresenter=createPresenter(); 32 | if(null!=mPresenter){ 33 | mPresenter.attachView(this); 34 | } 35 | initViews(); 36 | } 37 | 38 | /** 39 | * 交由子类实现自己指定的Presenter,可以为空 40 | * @return 子类持有的继承自BasePresenter的Presenter 41 | */ 42 | protected abstract P createPresenter(); 43 | 44 | @Override 45 | public void setUserVisibleHint(boolean isVisibleToUser) { 46 | super.setUserVisibleHint(isVisibleToUser); 47 | if (getUserVisibleHint()) { 48 | onVisible(); 49 | } else { 50 | onInvisible(); 51 | } 52 | } 53 | 54 | @Override 55 | public void onDestroy() { 56 | super.onDestroy(); 57 | if(null!=mPresenter){ 58 | mPresenter.detachView(); 59 | mPresenter=null; 60 | } 61 | } 62 | 63 | protected void onInvisible() {} 64 | 65 | protected void onVisible() {} 66 | 67 | @Override 68 | public void showError(int code, String errorMsg) {} 69 | 70 | protected View findViewById(int id){ 71 | return getView(id); 72 | } 73 | 74 | protected T getView(int id) { 75 | if (null == getView()) return null; 76 | return (T) getView().findViewById(id); 77 | } 78 | } -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/base/BasePresenter.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle.base; 2 | 3 | import java.lang.ref.WeakReference; 4 | 5 | /** 6 | * hty_Yuye@Outlook.com 7 | * 2019/5/6 8 | * MVP Base P 9 | */ 10 | 11 | public abstract class BasePresenter 12 | implements BaseContract.BasePresenter{ 13 | 14 | protected static final String TAG = "BasePresenter"; 15 | //MVP中的V 16 | protected WeakReference mViewRef; 17 | //MVP中的M 18 | protected WeakReference mNetEnginRef; 19 | 20 | /** 21 | * 初始化构造 22 | */ 23 | protected BasePresenter(){ 24 | mNetEnginRef=new WeakReference(createEngin()); 25 | } 26 | 27 | /** 28 | * 子类必须实例化M 29 | * @return 泛型M 30 | */ 31 | protected abstract M createEngin(); 32 | 33 | /** 34 | * 返回 Date Model 35 | * @return DataModel 36 | */ 37 | public synchronized WeakReference getNetEngin(){ 38 | if(null==mNetEnginRef||null==mNetEnginRef.get()){ 39 | mNetEnginRef=new WeakReference(createEngin()); 40 | } 41 | return mNetEnginRef; 42 | } 43 | 44 | /** 45 | * 是否正在请求中 46 | * @return true:请求中,false:未工作 47 | */ 48 | public boolean isRequsting() { 49 | if(null!=mNetEnginRef&&null!=mNetEnginRef.get()){ 50 | return mNetEnginRef.get().isRequsting(); 51 | } 52 | return false; 53 | } 54 | 55 | /** 56 | * V和P之间关系绑定 57 | * @param view mvp中的v 58 | */ 59 | @Override 60 | public void attachView(V view) { 61 | this.mViewRef=new WeakReference(view); 62 | } 63 | 64 | /** 65 | * V和P之间关系解绑 66 | */ 67 | @Override 68 | public void detachView() { 69 | if(null!=mViewRef&&null!=mViewRef.get()){ 70 | mViewRef.clear(); 71 | } 72 | mViewRef=null; 73 | if(null!=mNetEnginRef&&null!=mNetEnginRef.get()){ 74 | mNetEnginRef.get().onDestroy(); 75 | mNetEnginRef.clear(); 76 | } 77 | mNetEnginRef=null; 78 | } 79 | } -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/bean/ResultData.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle.bean; 2 | 3 | /** 4 | * TinyHung@Outlook.com 5 | * 2018/6/5 6 | */ 7 | 8 | public class ResultData { 9 | 10 | private T data; 11 | private int code;//200 12 | private String msg; 13 | 14 | public T getData() { 15 | return data; 16 | } 17 | 18 | public void setData(T data) { 19 | this.data = data; 20 | } 21 | 22 | public int getCode() { 23 | return code; 24 | } 25 | 26 | public void setCode(int code) { 27 | this.code = code; 28 | } 29 | 30 | public String getMsg() { 31 | return msg; 32 | } 33 | 34 | public void setMsg(String msg) { 35 | this.msg = msg; 36 | } 37 | 38 | @Override 39 | public String toString() { 40 | return "ResultData{" + 41 | "data=" + data + 42 | ", code=" + code + 43 | ", msg='" + msg + '\'' + 44 | '}'; 45 | } 46 | } -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/bean/ResultList.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle.bean; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * TinyHung@Outlook.com 7 | * 2018/6/5 8 | * 加载列表通配 9 | */ 10 | 11 | public class ResultList { 12 | 13 | private List list; 14 | 15 | public List getList() { 16 | return list; 17 | } 18 | 19 | public void setList(List list) { 20 | this.list = list; 21 | } 22 | 23 | @Override 24 | public String toString() { 25 | return "ResultList{" + 26 | "list=" + list + 27 | '}'; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/bean/ShareMenuItemInfo.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle.bean; 2 | 3 | /** 4 | * @time 2017/3/6 18:11 5 | * @des $弹窗菜单的对象 6 | */ 7 | public class ShareMenuItemInfo { 8 | 9 | private String itemName; 10 | private int itemLogo; 11 | private int action; 12 | 13 | public ShareMenuItemInfo(){ 14 | super(); 15 | } 16 | 17 | public ShareMenuItemInfo(String itemName, int itemLogo, int action) { 18 | this.itemName = itemName; 19 | this.itemLogo = itemLogo; 20 | this.action = action; 21 | } 22 | 23 | public String getItemName() { 24 | return itemName; 25 | } 26 | 27 | public void setItemName(String itemName) { 28 | this.itemName = itemName; 29 | } 30 | 31 | public int getItemLogo() { 32 | return itemLogo; 33 | } 34 | 35 | public void setItemLogo(int itemLogo) { 36 | this.itemLogo = itemLogo; 37 | } 38 | 39 | public int getAction() { 40 | return action; 41 | } 42 | 43 | public void setAction(int action) { 44 | this.action = action; 45 | } 46 | 47 | @Override 48 | public String toString() { 49 | return "ShareMenuItemInfo{" + 50 | "itemName='" + itemName + '\'' + 51 | ", itemLogo=" + itemLogo + 52 | ", action=" + action + 53 | '}'; 54 | } 55 | } -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/bean/UserInfo.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle.bean; 2 | 3 | import android.os.Parcel; 4 | import android.os.Parcelable; 5 | 6 | /** 7 | * Created by TinyHung@outlook.com 8 | * 2019/6/20 9 | * 用户信息 10 | */ 11 | 12 | public class UserInfo implements Parcelable{ 13 | 14 | private String userid; 15 | private String nickName; 16 | private String avatar; 17 | //默认男生,1:女生 18 | private int userSex; 19 | 20 | public UserInfo(){ 21 | 22 | } 23 | 24 | protected UserInfo(Parcel in) { 25 | userid = in.readString(); 26 | nickName = in.readString(); 27 | avatar = in.readString(); 28 | userSex = in.readInt(); 29 | } 30 | 31 | public static final Creator CREATOR = new Creator() { 32 | @Override 33 | public UserInfo createFromParcel(Parcel in) { 34 | return new UserInfo(in); 35 | } 36 | 37 | @Override 38 | public UserInfo[] newArray(int size) { 39 | return new UserInfo[size]; 40 | } 41 | }; 42 | 43 | public String getUserid() { 44 | return userid; 45 | } 46 | 47 | public void setUserid(String userid) { 48 | this.userid = userid; 49 | } 50 | 51 | public String getNickName() { 52 | return nickName; 53 | } 54 | 55 | public void setNickName(String nickName) { 56 | this.nickName = nickName; 57 | } 58 | 59 | public String getAvatar() { 60 | return avatar; 61 | } 62 | 63 | public void setAvatar(String avatar) { 64 | this.avatar = avatar; 65 | } 66 | 67 | public int getUserSex() { 68 | return userSex; 69 | } 70 | 71 | public void setUserSex(int userSex) { 72 | this.userSex = userSex; 73 | } 74 | 75 | @Override 76 | public String toString() { 77 | return "UserInfo{" + 78 | "userid='" + userid + '\'' + 79 | ", nickName='" + nickName + '\'' + 80 | ", avatar='" + avatar + '\'' + 81 | ", userSex=" + userSex + 82 | '}'; 83 | } 84 | 85 | @Override 86 | public int describeContents() { 87 | return 0; 88 | } 89 | 90 | @Override 91 | public void writeToParcel(Parcel dest, int flags) { 92 | dest.writeString(userid); 93 | dest.writeString(nickName); 94 | dest.writeString(avatar); 95 | dest.writeInt(userSex); 96 | } 97 | } -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/constant/Constants.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle.constant; 2 | 3 | /** 4 | * Created by TinyHung@outlook.com 5 | * 2019/7/5 6 | */ 7 | 8 | public interface Constants { 9 | //自定义文本消息 10 | String MSG_CUSTOM_TEXT = "msg_custom_text"; 11 | //自定义礼物消息 12 | String MSG_CUSTOM_GIFT = "msg_custom_gift"; 13 | //自定义系统通知消息 14 | String MSG_CUSTOM_NOTICE = "msg_custom_notice"; 15 | //点赞 16 | String MSG_CUSTOM_PRICE = "msg_custom_price"; 17 | //新增观众 18 | String MSG_CUSTOM_ADD_USER = "msg_custom_add_user"; 19 | //减少观众 20 | String MSG_CUSTOM_REDUCE_USER = "msg_custom_reduce_user"; 21 | //关注主播事件 22 | String MSG_CUSTOM_FOLLOW_ANCHOR = "msg_custom_add_follow_anchor"; 23 | //用户数量改变 24 | String MSG_CUSTOM_NUMBER_USER = "msg_custom_number_user"; 25 | //顶部排行榜单改变 26 | String MSG_CUSTOM_TOP_USER = "msg_custom_top_user"; 27 | //全局系统消息,弹幕显示 28 | String MSG_CUSTOM_SYS_FULL = "msg_custom_sys_full"; 29 | //中奖消息 30 | String MSG_CUSTOM_ROOM_DRAW = "msg_custom_lottery"; 31 | //错误消息 32 | String MSG_CUSTOM_ERROR = "msg_custom_error"; 33 | //主播端前后台切换 34 | String MSG_CUSTOM_ROOM_PUSH_SWITCH_CHANGED = "push_switch_changed";//通用消息,前后调切换 35 | //自定义消息 私有 直播 36 | String MESSAGE_PRIVATE_CUSTOM_LIVE="private_live_msg"; 37 | //自定义消息 私有 多媒体 38 | String MESSAGE_PRIVATE_CUSTOM_MEDIA="private_media"; 39 | //自定义消息 视频通话唤醒 40 | String MESSAGE_PRIVATE_CUSTOM_WAKEUP="private_live_wakeup"; 41 | //语音聊天参数 42 | String MESSAGE_VOICE_PARAMS="msg_voice_params"; 43 | //小奖 44 | int ROOM_GIFT_DRAW_ONE_LEVEL = 1; 45 | //大奖 46 | int ROOM_GIFT_DRAW_TWO_LEVEL = 2; 47 | } -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/gift/bean/GiftType.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle.gift.bean; 2 | 3 | /** 4 | * hty_Yuye@Outlook.com 5 | * 2019/5/12 6 | * 礼物类型 7 | */ 8 | 9 | public class GiftType { 10 | 11 | /** 12 | * addtime : 1530260031 13 | * id : 1 14 | * name : hot 15 | * title : 热门 16 | */ 17 | 18 | private int addtime; 19 | private int id; 20 | private String name; 21 | private String title; 22 | 23 | public int getAddtime() { 24 | return addtime; 25 | } 26 | 27 | public void setAddtime(int addtime) { 28 | this.addtime = addtime; 29 | } 30 | 31 | public int getId() { 32 | return id; 33 | } 34 | 35 | public void setId(int id) { 36 | this.id = id; 37 | } 38 | 39 | public String getName() { 40 | return name; 41 | } 42 | 43 | public void setName(String name) { 44 | this.name = name; 45 | } 46 | 47 | public String getTitle() { 48 | return title; 49 | } 50 | 51 | public void setTitle(String title) { 52 | this.title = title; 53 | } 54 | 55 | @Override 56 | public String toString() { 57 | return "GiftType{" + 58 | "addtime=" + addtime + 59 | ", id=" + id + 60 | ", name='" + name + '\'' + 61 | ", title='" + title + '\'' + 62 | '}'; 63 | } 64 | } -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/gift/contract/GiftContact.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle.gift.contract; 2 | 3 | import android.content.Context; 4 | import com.amazon.kindle.base.BaseContract; 5 | import com.amazon.kindle.gift.bean.GiftItemInfo; 6 | import com.amazon.kindle.gift.bean.GiftType; 7 | import java.util.List; 8 | 9 | /** 10 | * TinyHung@outlook.com 11 | * 2018/5/15 12 | * 礼物Contact 13 | */ 14 | 15 | public interface GiftContact { 16 | 17 | interface View extends BaseContract.BaseView { 18 | 19 | /** 20 | * 显示礼物分类列表 21 | * @param data 分类列表 22 | */ 23 | void showGiftTypes(List data); 24 | 25 | /** 26 | * 获取礼物分类失败 27 | * @param code 错误码 28 | * @param errMsg 描述信息 29 | */ 30 | void showGiftTypesError(int code,String errMsg); 31 | 32 | /** 33 | * 显示所有礼物信息 34 | * @param data 礼物列表 35 | * @param type 礼物类别 36 | */ 37 | void showGifts(List data, String type); 38 | 39 | /** 40 | * 礼物加载失败或者为空 41 | * @param code 错误码,3002 为空,其他为失败 42 | * @param type 礼物类别 43 | * @param errMsg 描述信息 44 | */ 45 | void showGiftError(int code,String type,String errMsg); 46 | } 47 | 48 | interface Presenter extends BaseContract.BasePresenter { 49 | 50 | /** 51 | * 获取礼物分类 52 | * @param context 全局上下文 53 | */ 54 | void getGiftsType(Context context); 55 | 56 | /** 57 | * 根据礼物分类获取礼物列表 58 | * @param context 全局上下文 59 | * @param type 礼物分类 60 | */ 61 | void getGiftsByType(Context context, String type); 62 | } 63 | } -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/gift/listener/OnGiveGiftListener.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle.gift.listener; 2 | 3 | import com.amazon.kindle.gift.bean.GiftItemInfo; 4 | import com.amazon.kindle.bean.UserInfo; 5 | 6 | /** 7 | * Created by TinyHung@outlook.com 8 | * 2019/7/5 9 | * 礼物赠送接口监听 10 | */ 11 | 12 | public interface OnGiveGiftListener { 13 | 14 | /** 15 | * 礼物赠送意图 16 | * @param giftItemInfo 礼物信息 17 | * @param userInfo 接收人信息 18 | * @param roomid 房间ID 19 | * @param count 赠送数量 20 | */ 21 | void onReceiveGift(GiftItemInfo giftItemInfo,UserInfo userInfo,String roomid,int count); 22 | 23 | /** 24 | * 用户选中了新的礼物对象 25 | * @param giftItemInfo 礼物对象 26 | */ 27 | void onReceiveNewGift(GiftItemInfo giftItemInfo); 28 | 29 | /** 30 | * 选中的礼物个数发生了变化,这个方法和onReceiveGift不会同时回调 31 | * @param count 礼物个数 32 | */ 33 | void onReceiveGiftCount(int count); 34 | } -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/gift/view/GiftAniImageView.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle.gift.view; 2 | 3 | import android.content.Context; 4 | import android.support.annotation.NonNull; 5 | import android.support.annotation.Nullable; 6 | import android.util.AttributeSet; 7 | import android.widget.FrameLayout; 8 | 9 | import com.opensource.svgaplayer.SVGAImageView; 10 | 11 | /** 12 | * Created by TinyHung@outlook.com 13 | * 2019/6/20 14 | */ 15 | 16 | public class GiftAniImageView extends FrameLayout { 17 | 18 | private SVGAImageView mSVGAImageView; 19 | 20 | public GiftAniImageView(@NonNull Context context) { 21 | this(context,null); 22 | } 23 | 24 | public GiftAniImageView(@NonNull Context context, @Nullable AttributeSet attrs) { 25 | this(context, attrs,0); 26 | } 27 | 28 | public GiftAniImageView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) { 29 | super(context, attrs, defStyleAttr); 30 | mSVGAImageView=new SVGAImageView(context); 31 | mSVGAImageView.setScaleType(SVGAImageView.ScaleType.FIT_XY); 32 | this.addView(mSVGAImageView,new FrameLayout.LayoutParams(-1,-1)); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/gift/view/GiftDrawSmallMulitAnimationView.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle.gift.view; 2 | 3 | import android.content.Context; 4 | import android.graphics.Color; 5 | import android.util.AttributeSet; 6 | 7 | import com.amazon.kindle.util.AnimationUtil; 8 | import com.amazon.kindle.listener.OnAnimationListener; 9 | 10 | /** 11 | * TinyHung@Outlook.com 12 | * 2018/6/15 13 | * 小倍率的中奖动画 14 | */ 15 | 16 | public class GiftDrawSmallMulitAnimationView extends android.support.v7.widget.AppCompatTextView { 17 | 18 | private static final long CLEAN_MILLIS = 2500;//定时清除自己 19 | private static final String TAG = "GiftDrawSmallMulitAnimationView"; 20 | private int strokeColor=Color.BLACK;//描边颜色 21 | 22 | 23 | public GiftDrawSmallMulitAnimationView(Context context) { 24 | super(context); 25 | } 26 | 27 | public GiftDrawSmallMulitAnimationView(Context context, AttributeSet attrs) { 28 | super(context, attrs); 29 | } 30 | 31 | public void setStrokeColor(int strokeColor){ 32 | this.strokeColor=strokeColor; 33 | } 34 | 35 | @Override 36 | public boolean isFocused() { 37 | return true; 38 | } 39 | 40 | /** 41 | * 开始 42 | * @param content 43 | */ 44 | public void startText(String content) { 45 | this.clearAnimation(); 46 | if(null!=cleanRunnable) this.removeCallbacks(cleanRunnable); 47 | this.setText(content); 48 | AnimationUtil.startSmallAwardAnim(this,1000,null); 49 | this.postDelayed(cleanRunnable,CLEAN_MILLIS); 50 | } 51 | 52 | /** 53 | * 结束 54 | */ 55 | private void stop() { 56 | AnimationUtil.startSmallAwardAnimOut(this, 300, new OnAnimationListener() { 57 | @Override 58 | public void onStart() { 59 | } 60 | 61 | @Override 62 | public void onEnd() { 63 | GiftDrawSmallMulitAnimationView.this.setBackgroundResource(0); 64 | GiftDrawSmallMulitAnimationView.this.setText(""); 65 | } 66 | }); 67 | } 68 | 69 | private Runnable cleanRunnable=new Runnable() { 70 | @Override 71 | public void run() { 72 | stop(); 73 | } 74 | }; 75 | 76 | public void onDestroy(){ 77 | if(null!=cleanRunnable) this.removeCallbacks(cleanRunnable); 78 | GiftDrawSmallMulitAnimationView.this.setBackgroundResource(0); 79 | } 80 | } 81 | 82 | 83 | -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/index/adapter/ShareAdapter.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle.index.adapter; 2 | 3 | import android.widget.ImageView; 4 | import com.amazon.kindle.R; 5 | import com.amazon.kindle.bean.ShareMenuItemInfo; 6 | import com.bumptech.glide.Glide; 7 | import com.bumptech.glide.load.engine.DiskCacheStrategy; 8 | import com.chad.library.adapter.base.BaseQuickAdapter; 9 | import com.chad.library.adapter.base.BaseViewHolder; 10 | import java.util.List; 11 | 12 | /** 13 | * TinyHung@outlook.com 14 | * 2017-06-22 12:29 15 | * @des 分享弹窗适配器 16 | */ 17 | 18 | public class ShareAdapter extends BaseQuickAdapter { 19 | 20 | public ShareAdapter(List homeItemInfos) { 21 | super(R.layout.item_share_item,homeItemInfos); 22 | } 23 | 24 | @Override 25 | protected void convert(BaseViewHolder helper, ShareMenuItemInfo item) { 26 | if(null!=item){ 27 | helper.setText(R.id.tv_item_title,item.getItemName()); 28 | Glide.with(mContext) 29 | .load(item.getItemLogo()) 30 | .crossFade() 31 | .fitCenter() 32 | .diskCacheStrategy(DiskCacheStrategy.ALL) 33 | .centerCrop() 34 | .skipMemoryCache(true) 35 | .into((ImageView) helper.getView(R.id.iv_item_icon)); 36 | } 37 | } 38 | } -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/index/ui/activity/AboutActivity.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle.index.ui.activity; 2 | 3 | import android.content.Intent; 4 | import android.net.Uri; 5 | import android.os.Bundle; 6 | import android.support.annotation.Nullable; 7 | import android.support.v7.app.AppCompatActivity; 8 | import android.text.Html; 9 | import android.view.View; 10 | import android.widget.TextView; 11 | import android.widget.Toast; 12 | import com.amazon.kindle.R; 13 | import com.amazon.kindle.util.AppUtils; 14 | import com.amazon.kindle.view.CommentTitleView; 15 | 16 | /** 17 | * Created by TinyHung@outlook.com 18 | * 2019/7/13 19 | * 关于、版本 20 | */ 21 | 22 | public class AboutActivity extends AppCompatActivity{ 23 | 24 | @Override 25 | protected void onCreate(@Nullable Bundle savedInstanceState) { 26 | super.onCreate(savedInstanceState); 27 | setContentView(R.layout.activity_about); 28 | CommentTitleView titleView = (CommentTitleView) findViewById(R.id.title_view); 29 | titleView.setOnTitleClickListener(new CommentTitleView.OnTitleClickListener() { 30 | @Override 31 | public void onBack(View view) { 32 | finish(); 33 | } 34 | }); 35 | String content="软件版本:" 36 | + AppUtils.getInstance().getVersion() 37 | +"
内部版本:" 38 | +AppUtils.getInstance().getVersionCode() 39 | +"
"; 40 | ((TextView) findViewById(R.id.tv_version)).setText(Html.fromHtml(content)); 41 | findViewById(R.id.btn_check_update).setOnClickListener(new View.OnClickListener() { 42 | @Override 43 | public void onClick(View v) { 44 | try { 45 | Uri uri=Uri.parse("https://github.com/Yuye584312311/iLive/wiki/HistoryVersion"); 46 | Intent intent=new Intent(Intent.ACTION_VIEW,uri); 47 | startActivity(intent); 48 | }catch (RuntimeException e){ 49 | e.printStackTrace(); 50 | Toast.makeText(AboutActivity.this,"未找到合适的应用打开网页",Toast.LENGTH_SHORT).show(); 51 | } 52 | } 53 | }); 54 | } 55 | } -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/listener/OnAnimationListener.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle.listener; 2 | 3 | /** 4 | * Created by TinyHung@outlook.com 5 | * 2019/7/5 6 | */ 7 | 8 | public interface OnAnimationListener { 9 | void onStart(); 10 | void onEnd(); 11 | } -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/listener/OnItemClickListener.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle.listener; 2 | 3 | import android.view.View; 4 | 5 | /** 6 | * hty_Yuye@Outlook.com 7 | * 2019/3/23 8 | */ 9 | 10 | public interface OnItemClickListener { 11 | void onItemClick(View view, int position, long itemId); 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/listener/OnItemLongClickListener.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle.listener; 2 | 3 | import android.view.View; 4 | 5 | /** 6 | * hty_Yuye@Outlook.com 7 | * 2019/3/23 8 | */ 9 | 10 | public interface OnItemLongClickListener { 11 | void onItemLongClick(View view, int position, long itemId); 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/listener/OnLoadMorePresenter.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle.listener; 2 | 3 | /** 4 | * hty_Yuye@Outlook.com 5 | * 2019/3/24 6 | */ 7 | 8 | public interface OnLoadMorePresenter { 9 | //加载完成 10 | void onLoadComplete(); 11 | //结束,一般为空调用 12 | void onLoadEnd(); 13 | //加载失败 14 | void onLoadError(); 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/manager/UserManager.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle.manager; 2 | 3 | /** 4 | * Created by TinyHung@outlook.com 5 | * 2019/7/6 6 | */ 7 | 8 | public class UserManager { 9 | 10 | private static volatile UserManager mInstance; 11 | private String mUserId="88888888"; 12 | private String mNickName="周杰伦"; 13 | private String mAcatar="http://img.mp.sohu.com/upload/20170811/eaec0c0513e544adb68c6b2af0fdbb1b_th.png"; 14 | private int mUserGradle=30; 15 | 16 | public static synchronized UserManager getInstance() { 17 | synchronized (UserManager.class) { 18 | if (null == mInstance) { 19 | mInstance = new UserManager(); 20 | } 21 | } 22 | return mInstance; 23 | } 24 | 25 | public String getUserId() { 26 | return mUserId; 27 | } 28 | 29 | public void setUserId(String userId) { 30 | mUserId = userId; 31 | } 32 | 33 | public String getNickName() { 34 | return mNickName; 35 | } 36 | 37 | public void setNickName(String nickName) { 38 | mNickName = nickName; 39 | } 40 | 41 | public String getAcatar() { 42 | return mAcatar; 43 | } 44 | 45 | public void setAcatar(String acatar) { 46 | mAcatar = acatar; 47 | } 48 | 49 | public int getUserGradle() { 50 | return mUserGradle; 51 | } 52 | 53 | public void setUserGradle(int userGradle) { 54 | mUserGradle = userGradle; 55 | } 56 | } -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/manager/VibratorManager.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle.manager; 2 | 3 | import android.content.Context; 4 | import android.os.Vibrator; 5 | 6 | /** 7 | * Created by TinyHung@outlook.com 8 | * 2019/7/18 9 | * 震动 10 | */ 11 | 12 | public class VibratorManager { 13 | 14 | private static volatile VibratorManager mInstance; 15 | private Vibrator mVibrator; 16 | 17 | public static synchronized VibratorManager getInstance() { 18 | synchronized (VibratorManager.class) { 19 | if (null == mInstance) { 20 | mInstance = new VibratorManager(); 21 | } 22 | } 23 | return mInstance; 24 | } 25 | 26 | /** 27 | * 开始震动 28 | * @param context 全局上下文 29 | * @param milliss 时长 30 | */ 31 | public void vibrate(Context context,long milliss){ 32 | if(null==mVibrator&&null!=context){ 33 | mVibrator = (Vibrator)context.getSystemService(context.VIBRATOR_SERVICE); 34 | } 35 | if(null!=mVibrator){ 36 | mVibrator.vibrate(milliss); 37 | } 38 | } 39 | 40 | public void onReset(){ 41 | if(null!=mVibrator){ 42 | mVibrator.cancel(); 43 | } 44 | } 45 | 46 | public void onDestroy(){ 47 | if(null!=mVibrator){ 48 | mVibrator.cancel(); 49 | mVibrator=null; 50 | } 51 | } 52 | } -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/model/BezierEvaluator.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle.model; 2 | 3 | import android.animation.TypeEvaluator; 4 | import android.graphics.Point; 5 | 6 | /** 7 | * TinyHung@Outlook.com 8 | * 2018/8/25 9 | * 二次方公式 10 | * 计算贝塞尔曲线运动轨迹 11 | */ 12 | 13 | public class BezierEvaluator implements TypeEvaluator { 14 | 15 | private final Point mPoint; 16 | 17 | public BezierEvaluator(Point point){ 18 | this.mPoint=point; 19 | } 20 | 21 | @Override 22 | public Point evaluate(float fraction, Point startValue, Point endValue) { 23 | int x = (int) ((1 - fraction) * (1 - fraction) * startValue.x + 2 * fraction * (1 - fraction) * mPoint.x + fraction * fraction * endValue.x); 24 | int y = (int) ((1 - fraction) * (1 - fraction) * startValue.y + 2 * fraction * (1 - fraction) * mPoint.y + fraction * fraction * endValue.y); 25 | return new Point(x,y); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/model/GlideCircleTransform.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle.model; 2 | 3 | import android.content.Context; 4 | import android.graphics.Bitmap; 5 | import android.graphics.BitmapShader; 6 | import android.graphics.Canvas; 7 | import android.graphics.Paint; 8 | import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; 9 | import com.bumptech.glide.load.resource.bitmap.BitmapTransformation; 10 | 11 | /** 12 | * @time 2016/12/16 14:52 13 | * @des $圆形加载 14 | */ 15 | public class GlideCircleTransform extends BitmapTransformation { 16 | 17 | public GlideCircleTransform(Context context) { 18 | super(context); 19 | } 20 | 21 | @Override protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) { 22 | return circleCrop(pool, toTransform); 23 | } 24 | 25 | private static Bitmap circleCrop(BitmapPool pool, Bitmap source) { 26 | if (source == null) return null; 27 | 28 | int size = Math.min(source.getWidth(), source.getHeight()); 29 | int x = (source.getWidth() - size) / 2; 30 | int y = (source.getHeight() - size) / 2; 31 | Bitmap squared = Bitmap.createBitmap(source, x, y, size, size); 32 | 33 | Bitmap result = pool.get(size, size, Bitmap.Config.ARGB_8888); 34 | if (result == null) { 35 | result = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); 36 | } 37 | 38 | Canvas canvas = new Canvas(result); 39 | Paint paint = new Paint(); 40 | paint.setShader(new BitmapShader(squared, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP)); 41 | paint.setAntiAlias(true); 42 | float r = size / 2f; 43 | canvas.drawCircle(r, r, r, paint); 44 | return result; 45 | } 46 | 47 | @Override public String getId() { 48 | return getClass().getName(); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/model/GlideImageLoader.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle.model; 2 | 3 | import android.content.Context; 4 | import android.widget.ImageView; 5 | import com.amazon.kindle.R; 6 | import com.bumptech.glide.Glide; 7 | import com.bumptech.glide.load.engine.DiskCacheStrategy; 8 | import com.youth.banner.loader.ImageLoader; 9 | 10 | /** 11 | * Created by TinyHung@outlook.com 12 | * 2019/7/10 13 | * 轮播图的加载构造器 14 | */ 15 | 16 | public class GlideImageLoader extends ImageLoader { 17 | 18 | public GlideImageLoader(){ 19 | 20 | } 21 | 22 | @Override 23 | public void displayImage(Context context, Object url, ImageView imageView) { 24 | if(null!=imageView){ 25 | Glide.with(context) 26 | .load(url) 27 | .thumbnail(0.1f) 28 | .error(R.drawable.ic_video_default_cover) 29 | .dontAnimate() 30 | .skipMemoryCache(true) 31 | .diskCacheStrategy(DiskCacheStrategy.ALL) 32 | .into(imageView); 33 | } 34 | } 35 | } -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/model/ItemSpacesItemDecoration.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle.model; 2 | 3 | import android.graphics.Rect; 4 | import android.support.v7.widget.RecyclerView; 5 | import android.view.View; 6 | 7 | /** 8 | * TinyHung@outlook.com 9 | * 2017/5/24 8:58 10 | * GridLayout 两列列表间距 11 | * 只有左侧有边距,第一个除外 12 | */ 13 | public class ItemSpacesItemDecoration extends RecyclerView.ItemDecoration { 14 | 15 | private int space; 16 | 17 | public ItemSpacesItemDecoration(int space) { 18 | this.space=space; 19 | } 20 | 21 | @Override 22 | public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { 23 | if(0==parent.getChildLayoutPosition(view)){ 24 | outRect.left=0; 25 | }else{ 26 | outRect.left=space; 27 | } 28 | outRect.bottom=0; 29 | outRect.right=0; 30 | outRect.top=0; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/net/OnResultCallBack.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle.net; 2 | 3 | import com.google.gson.internal.$Gson$Types; 4 | import java.lang.reflect.ParameterizedType; 5 | import java.lang.reflect.Type; 6 | 7 | /** 8 | * Created by TinyHung@outlook.com 9 | * 2019/5/8 10 | * 配合OkHttpUtils数据交互的回调抽象类,代替interface接口 11 | * @param 最终返回的实体对象数据类型,如果不指定,则返回String类型实体对象 12 | */ 13 | 14 | public abstract class OnResultCallBack { 15 | 16 | //用户指定的数据类型 17 | private final Type mType; 18 | 19 | public OnResultCallBack(){ 20 | mType = getClassTypeParameter(getClass()); 21 | } 22 | 23 | /** 24 | * 获取当前类的多态 25 | * @param subclass class属性 26 | * @return 指定的泛型、多态 27 | */ 28 | private Type getClassTypeParameter(Class subclass) { 29 | Type superclass = subclass.getGenericSuperclass(); 30 | //JVM未识别到的,泛型、多态为空 31 | if (superclass instanceof Class) { 32 | return null; 33 | } 34 | ParameterizedType parameterized = (ParameterizedType) superclass; 35 | return $Gson$Types.canonicalize(parameterized.getActualTypeArguments()[0]); 36 | } 37 | 38 | /** 39 | * 返回实体Type 40 | * @return 泛型对象Type 41 | */ 42 | public Type getType(){ 43 | return mType; 44 | } 45 | 46 | /** 47 | * 响应成功 48 | * @param data 实体对象,没有传泛型默认是String.class类型 49 | */ 50 | public abstract void onResponse(T data); 51 | 52 | /** 53 | * 响应、解析失败 54 | * @param code 错误码 55 | * @param errorMsg 描述信息 56 | */ 57 | public abstract void onError(int code,String errorMsg); 58 | } -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/observer/SubjectObservable.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle.observer; 2 | 3 | import java.util.Observable; 4 | 5 | /** 6 | * TinyHung@Outlook.com 7 | * 2018/4/12. 8 | * 统一的观察者订阅中心 9 | */ 10 | 11 | public class SubjectObservable extends Observable{ 12 | 13 | public SubjectObservable(){ 14 | 15 | } 16 | 17 | public void updataSubjectObserivce(Object obj){ 18 | setChanged(); 19 | notifyObservers(obj); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/room/adapter/LiveFansListAdapter.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle.room.adapter; 2 | 3 | import android.content.Context; 4 | import android.support.v7.widget.RecyclerView; 5 | import android.view.View; 6 | import android.view.ViewGroup; 7 | import android.widget.ImageView; 8 | 9 | import com.amazon.kindle.model.GlideCircleTransform; 10 | import com.amazon.kindle.R; 11 | import com.amazon.kindle.base.BaseAdapter; 12 | import com.amazon.kindle.bean.UserInfo; 13 | import com.bumptech.glide.Glide; 14 | import com.bumptech.glide.load.engine.DiskCacheStrategy; 15 | 16 | /** 17 | * Created by TinyHung@outlook.com 18 | * 2018/5/11 19 | * 在线观众列表 20 | */ 21 | 22 | public class LiveFansListAdapter extends BaseAdapter { 23 | 24 | public LiveFansListAdapter(Context context) { 25 | super(context); 26 | } 27 | 28 | @Override 29 | public FansViewHolder inCreateViewHolder(ViewGroup viewGroup, int viewType) { 30 | return new FansViewHolder(mInflater.inflate(R.layout.item_live_user_fans_item, null)); 31 | } 32 | 33 | @Override 34 | public void inBindViewHolder(FansViewHolder viewHolder, int position) { 35 | UserInfo itemData = getItemData(position); 36 | viewHolder.itemIcon.setBackgroundResource(itemData.getUserSex() ==1 ? 37 | R.drawable.bg_fans_user_mad_head_shape:R.drawable.bg_fans_user_man_head_shape); 38 | if(null!=itemData){ 39 | Glide.with(getContext()) 40 | .load(itemData.getAvatar()) 41 | .error(R.drawable.ic_default_user_head) 42 | .diskCacheStrategy(DiskCacheStrategy.ALL) 43 | .centerCrop() 44 | .transform(new GlideCircleTransform(mContext)) 45 | .dontAnimate() 46 | .into(viewHolder.itemIcon); 47 | } 48 | } 49 | 50 | public class FansViewHolder extends RecyclerView.ViewHolder{ 51 | private ImageView itemIcon; 52 | 53 | public FansViewHolder(View itemView) { 54 | super(itemView); 55 | itemIcon = (ImageView) itemView.findViewById(R.id.item_iv_user_icon); 56 | } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/room/bean/BannerInfo.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle.room.bean; 2 | 3 | import android.os.Parcel; 4 | import android.os.Parcelable; 5 | 6 | /** 7 | * Created by TinyHung@outlook.com 8 | * 2019/7/12 9 | */ 10 | 11 | public class BannerInfo implements Parcelable{ 12 | 13 | private String icon; 14 | private String jump_url; 15 | 16 | protected BannerInfo(Parcel in) { 17 | icon = in.readString(); 18 | jump_url = in.readString(); 19 | } 20 | 21 | public static final Creator CREATOR = new Creator() { 22 | @Override 23 | public BannerInfo createFromParcel(Parcel in) { 24 | return new BannerInfo(in); 25 | } 26 | 27 | @Override 28 | public BannerInfo[] newArray(int size) { 29 | return new BannerInfo[size]; 30 | } 31 | }; 32 | 33 | public String getIcon() { 34 | return icon; 35 | } 36 | 37 | public void setIcon(String icon) { 38 | this.icon = icon; 39 | } 40 | 41 | public String getJump_url() { 42 | return jump_url; 43 | } 44 | 45 | public void setJump_url(String jump_url) { 46 | this.jump_url = jump_url; 47 | } 48 | 49 | @Override 50 | public int describeContents() { 51 | return 0; 52 | } 53 | 54 | @Override 55 | public void writeToParcel(Parcel dest, int flags) { 56 | dest.writeString(icon); 57 | dest.writeString(jump_url); 58 | } 59 | 60 | @Override 61 | public String toString() { 62 | return "BannerInfo{" + 63 | "icon='" + icon + '\'' + 64 | ", jump_url='" + jump_url + '\'' + 65 | '}'; 66 | } 67 | } -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/room/bean/BoxPixInfo.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle.room.bean; 2 | 3 | /** 4 | * Created by TinyHung@outlook.com 5 | * 2019/7/13 6 | */ 7 | 8 | public class BoxPixInfo { 9 | 10 | private int left,top,right,bottom; 11 | 12 | public BoxPixInfo(){ 13 | 14 | } 15 | 16 | public BoxPixInfo(int left, int top, int right, int bottom) { 17 | this.left = left; 18 | this.top = top; 19 | this.right = right; 20 | this.bottom = bottom; 21 | } 22 | 23 | public int getLeft() { 24 | return left; 25 | } 26 | 27 | public void setLeft(int left) { 28 | this.left = left; 29 | } 30 | 31 | public int getRight() { 32 | return right; 33 | } 34 | 35 | public void setRight(int right) { 36 | this.right = right; 37 | } 38 | 39 | public int getTop() { 40 | return top; 41 | } 42 | 43 | public void setTop(int top) { 44 | this.top = top; 45 | } 46 | 47 | public int getBottom() { 48 | return bottom; 49 | } 50 | 51 | public void setBottom(int bottom) { 52 | this.bottom = bottom; 53 | } 54 | 55 | @Override 56 | public String toString() { 57 | return "BoxPixInfo{" + 58 | "left=" + left + 59 | ", right=" + right + 60 | ", top=" + top + 61 | ", bottom=" + bottom + 62 | '}'; 63 | } 64 | } -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/room/bean/ImageInfo.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle.room.bean; 2 | 3 | import android.os.Parcel; 4 | import android.os.Parcelable; 5 | 6 | /** 7 | * Created by TinyHung@outlook.com 8 | * 2019/7/12 9 | */ 10 | 11 | public class ImageInfo implements Parcelable{ 12 | 13 | private String icon; 14 | private String icon_mini; 15 | private boolean selected; 16 | 17 | public ImageInfo(){ 18 | 19 | } 20 | 21 | protected ImageInfo(Parcel in) { 22 | icon = in.readString(); 23 | icon_mini = in.readString(); 24 | selected = in.readByte() != 0; 25 | } 26 | 27 | public static final Creator CREATOR = new Creator() { 28 | @Override 29 | public ImageInfo createFromParcel(Parcel in) { 30 | return new ImageInfo(in); 31 | } 32 | 33 | @Override 34 | public ImageInfo[] newArray(int size) { 35 | return new ImageInfo[size]; 36 | } 37 | }; 38 | 39 | public String getIcon() { 40 | return icon; 41 | } 42 | 43 | public void setIcon(String icon) { 44 | this.icon = icon; 45 | } 46 | 47 | public String getIcon_mini() { 48 | return icon_mini; 49 | } 50 | 51 | public void setIcon_mini(String icon_mini) { 52 | this.icon_mini = icon_mini; 53 | } 54 | 55 | public boolean isSelected() { 56 | return selected; 57 | } 58 | 59 | public void setSelected(boolean selected) { 60 | this.selected = selected; 61 | } 62 | 63 | @Override 64 | public int describeContents() { 65 | return 0; 66 | } 67 | 68 | @Override 69 | public void writeToParcel(Parcel dest, int flags) { 70 | dest.writeString(icon); 71 | dest.writeString(icon_mini); 72 | dest.writeByte((byte) (selected ? 1 : 0)); 73 | } 74 | 75 | @Override 76 | public String toString() { 77 | return "ImageInfo{" + 78 | "icon='" + icon + '\'' + 79 | "icon_mini='" + icon_mini + '\'' + 80 | ", selected=" + selected + 81 | '}'; 82 | } 83 | } -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/room/bean/InkeChannel.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle.room.bean; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * Created by TinyHung@outlook.com 7 | * 2019/7/17 8 | */ 9 | 10 | public class InkeChannel { 11 | 12 | private List cards; 13 | private String name; 14 | 15 | public List getCards() { 16 | return cards; 17 | } 18 | 19 | public void setCards(List cards) { 20 | this.cards = cards; 21 | } 22 | 23 | public String getName() { 24 | return name; 25 | } 26 | 27 | public void setName(String name) { 28 | this.name = name; 29 | } 30 | } -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/room/bean/InkeWebItem.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle.room.bean; 2 | 3 | /** 4 | * Created by TinyHung@outlook.com 5 | * 2019/7/18 6 | */ 7 | 8 | public class InkeWebItem { 9 | 10 | private String image; 11 | private String link; 12 | 13 | public String getImage() { 14 | return image; 15 | } 16 | 17 | public void setImage(String image) { 18 | this.image = image; 19 | } 20 | 21 | public String getLink() { 22 | return link; 23 | } 24 | 25 | public void setLink(String link) { 26 | this.link = link; 27 | } 28 | 29 | @Override 30 | public String toString() { 31 | return "InkeWebItem{" + 32 | "image='" + image + '\'' + 33 | ", link='" + link + '\'' + 34 | '}'; 35 | } 36 | } -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/room/bean/NumberChangedInfo.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle.room.bean; 2 | 3 | /** 4 | * TinyHung@Outlook.com 5 | * 2018/8/22 6 | */ 7 | 8 | public class NumberChangedInfo { 9 | 10 | private int onlineNumer; 11 | 12 | public int getOnlineNumer() { 13 | return onlineNumer; 14 | } 15 | 16 | public void setOnlineNumer(int onlineNumer) { 17 | this.onlineNumer = onlineNumer; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/room/contract/RoomContact.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle.room.contract; 2 | 3 | import com.amazon.kindle.base.BaseContract; 4 | import com.amazon.kindle.room.bean.InkeRoomData; 5 | import com.amazon.kindle.room.bean.RoomItem; 6 | import java.util.List; 7 | 8 | /** 9 | * TinyHung@outlook.com 10 | * 2019/7/10 11 | * 直播间 12 | */ 13 | 14 | public interface RoomContact { 15 | 16 | interface View extends BaseContract.BaseView { 17 | 18 | /** 19 | * 显示在线直播间列表 20 | * @param data 直播间列表 21 | */ 22 | void showRooms(InkeRoomData data); 23 | 24 | /** 25 | * 显示1V1直播间列表 26 | * @param data 直播间列表 27 | */ 28 | void showPrivateRooms(List data); 29 | 30 | /** 31 | * 获取直播间列表失败 32 | * @param code 错误码 33 | * @param errMsg 描述信息 34 | */ 35 | void showRoomsError(int code, String errMsg); 36 | 37 | } 38 | 39 | interface Presenter extends BaseContract.BasePresenter { 40 | 41 | /** 42 | * 获取在线直播间列表 43 | * @param page 页眉,头部推荐数据为0,常规推荐为>0 44 | * @param offset 数据集起始偏移位置 45 | */ 46 | void getRooms(int page,int offset); 47 | 48 | /** 49 | * 获取在线1V1列表 50 | */ 51 | void getPrivateRooms(); 52 | } 53 | } -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/service/bean/BuildMessageInfo.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle.service.bean; 2 | 3 | /** 4 | * hty_Yuye@Outlook.com 5 | * 2019/7/20 6 | */ 7 | 8 | public class BuildMessageInfo { 9 | 10 | private int totalSize;//总大小 11 | private int downloadSize;//当前下载的大小 12 | private String cmd; 13 | private int code; 14 | private String msg; 15 | 16 | public int getTotalSize() { 17 | return totalSize; 18 | } 19 | 20 | public void setTotalSize(int totalSize) { 21 | this.totalSize = totalSize; 22 | } 23 | 24 | public int getDownloadSize() { 25 | return downloadSize; 26 | } 27 | 28 | public void setDownloadSize(int downloadSize) { 29 | this.downloadSize = downloadSize; 30 | } 31 | 32 | public String getCmd() { 33 | return cmd; 34 | } 35 | 36 | public void setCmd(String cmd) { 37 | this.cmd = cmd; 38 | } 39 | 40 | public int getCode() { 41 | return code; 42 | } 43 | 44 | public void setCode(int code) { 45 | this.code = code; 46 | } 47 | 48 | public String getMsg() { 49 | return msg; 50 | } 51 | 52 | public void setMsg(String msg) { 53 | this.msg = msg; 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/util/DataFactory.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle.util; 2 | 3 | import com.amazon.kindle.manager.UserManager; 4 | import com.amazon.kindle.bean.UserInfo; 5 | import com.amazon.kindle.room.bean.CustomMsgInfo; 6 | import java.util.ArrayList; 7 | import java.util.List; 8 | 9 | /** 10 | * Created by TinyHung@outlook.com 11 | * 2019/7/6 12 | */ 13 | 14 | public class DataFactory { 15 | 16 | public static List createLiveFans() { 17 | List list=new ArrayList<>(); 18 | for (int i = 0; i < 20; i++) { 19 | UserInfo userInfo=new UserInfo(); 20 | if(i==0){ 21 | userInfo.setUserSex(1); 22 | userInfo.setAvatar("https://img2.woyaogexing.com/2021/06/10/cdec93915b98418caea1cf5fd2ba86dd!400x400.png"); 23 | }else if(i==1){ 24 | userInfo.setAvatar("https://img2.woyaogexing.com/2021/06/10/7a876b3228d940769625af085d8a6610!400x400.png"); 25 | }else if(i==2){ 26 | userInfo.setUserSex(1); 27 | userInfo.setAvatar("https://img2.woyaogexing.com/2021/06/10/e70d4fa4e3be4a9fa3ad4a474dc973bc!400x400.jpeg"); 28 | }else if(i==3){ 29 | userInfo.setUserSex(1); 30 | userInfo.setAvatar("https://img2.woyaogexing.com/2021/06/10/966a3844c1a441c58c6ce7432e53a592!400x400.png"); 31 | }else{ 32 | userInfo.setAvatar("https://img2.woyaogexing.com/2021/06/10/ebcd37043b2b410d87427d58d0a84b7b!400x400.png"); 33 | } 34 | list.add(userInfo); 35 | } 36 | return list; 37 | } 38 | 39 | public static List createLiveConversation() { 40 | List list=new ArrayList<>(); 41 | for (int i = 0; i < 50; i++) { 42 | CustomMsgInfo customMsgInfo=new CustomMsgInfo(); 43 | customMsgInfo.setSendUserName(UserManager.getInstance().getNickName()); 44 | customMsgInfo.setSendUserHead(UserManager.getInstance().getAcatar()); 45 | customMsgInfo.setSendUserID(UserManager.getInstance().getUserId()); 46 | customMsgInfo.setMsgContent("我是聊天内容,大家好!"); 47 | list.add(customMsgInfo); 48 | } 49 | return list; 50 | } 51 | } -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/util/Logger.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle.util; 2 | 3 | import android.util.Log; 4 | 5 | /** 6 | * TinyHung@outlook.com 7 | * 2017/1/18 8 | */ 9 | 10 | public class Logger { 11 | 12 | public static boolean IS_DEBUG=true; 13 | 14 | public static void d(String TAG, String message) { 15 | if(IS_DEBUG){ 16 | Log.d(TAG,message); 17 | } 18 | } 19 | 20 | public static void e(String TAG, String message) { 21 | if(IS_DEBUG){ 22 | Log.e(TAG,message); 23 | } 24 | } 25 | 26 | public static void v(String TAG, String message) { 27 | if(IS_DEBUG){ 28 | Log.e(TAG,message); 29 | } 30 | } 31 | 32 | public static void w(String TAG, String message) { 33 | if(IS_DEBUG){ 34 | Log.w(TAG,message); 35 | } 36 | } 37 | 38 | public static void i(String TAG, String message) { 39 | if(IS_DEBUG){ 40 | Log.i(TAG,message); 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/view/LayoutProvider.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle.view; 2 | 3 | import android.graphics.Outline; 4 | import android.os.Build; 5 | import android.support.annotation.RequiresApi; 6 | import android.view.View; 7 | import android.view.ViewOutlineProvider; 8 | 9 | /** 10 | * Created by TinyHung@outlook.com 11 | * 2019/4/30 12 | */ 13 | 14 | @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) 15 | public class LayoutProvider extends ViewOutlineProvider { 16 | 17 | private float mRadius; 18 | 19 | public LayoutProvider(float radius){ 20 | this.mRadius = radius; 21 | } 22 | 23 | @Override 24 | public void getOutline(View view, Outline outline) { 25 | outline.setRoundRect(0, 0, view.getWidth(), view.getHeight(), mRadius); 26 | view.setClipToOutline(true); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/view/LoadingMoreView.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle.view; 2 | 3 | import com.amazon.kindle.R; 4 | import com.chad.library.adapter.base.loadmore.LoadMoreView; 5 | 6 | /** 7 | * hty_Yuye@Outlook.com 8 | * 2019/7/19 9 | */ 10 | 11 | public class LoadingMoreView extends LoadMoreView { 12 | 13 | @Override 14 | public int getLayoutId() { 15 | return R.layout.view_load_more_layout; 16 | } 17 | 18 | @Override 19 | protected int getLoadingViewId() { 20 | return R.id.load_more_loading; 21 | } 22 | 23 | @Override 24 | protected int getLoadFailViewId() { 25 | return R.id.load_more_fail; 26 | } 27 | 28 | @Override 29 | protected int getLoadEndViewId() { 30 | return R.id.load_more_end; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/view/MarqueeTextView.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle.view; 2 | 3 | import android.content.Context; 4 | import android.support.annotation.Nullable; 5 | import android.util.AttributeSet; 6 | 7 | /** 8 | * TinyHung@Outlook.com 9 | * 2017/11/27. 10 | */ 11 | 12 | public class MarqueeTextView extends android.support.v7.widget.AppCompatTextView { 13 | 14 | public MarqueeTextView(Context context) { 15 | super(context); 16 | } 17 | 18 | public MarqueeTextView(Context context, @Nullable AttributeSet attrs) { 19 | super(context, attrs); 20 | } 21 | 22 | public MarqueeTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { 23 | super(context, attrs, defStyleAttr); 24 | } 25 | 26 | @Override 27 | public boolean isFocused() { 28 | return true; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/view/StaggeredItemDecoration.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle.view; 2 | 3 | import android.graphics.Rect; 4 | import android.support.v7.widget.RecyclerView; 5 | import android.view.View; 6 | 7 | /** 8 | * TinyHung@outlook.com 9 | * 2017/4/13 13:56 10 | * 平均的间距 11 | */ 12 | public class StaggeredItemDecoration extends RecyclerView.ItemDecoration{ 13 | 14 | private final int space; 15 | 16 | public StaggeredItemDecoration(int space) { 17 | this.space=space; 18 | } 19 | 20 | @Override 21 | public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { 22 | outRect.left = space; 23 | outRect.bottom = space; 24 | outRect.right = space; 25 | outRect.top= space; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/view/TextImageSpan.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle.view; 2 | 3 | import android.content.Context; 4 | import android.graphics.Bitmap; 5 | import android.graphics.Canvas; 6 | import android.graphics.Paint; 7 | import android.graphics.drawable.Drawable; 8 | import android.text.style.ImageSpan; 9 | 10 | /** 11 | * Created by TinyHung@outlook.com 12 | * 2019/6/28 13 | */ 14 | 15 | public class TextImageSpan extends ImageSpan { 16 | 17 | public TextImageSpan(Context context, Bitmap b) { 18 | super(context, b); 19 | } 20 | 21 | @Override 22 | public void draw(Canvas canvas, CharSequence text, int start, int end, float x, int top, int y, int bottom, Paint paint) { 23 | Drawable b = getDrawable(); 24 | canvas.save(); 25 | int transY; 26 | //要显示的文本高度-图片高度除2等居中位置+top(换行情况) 27 | transY = ((bottom - top) - b.getBounds().bottom) / 2 + top; 28 | //偏移画布后开始绘制 29 | canvas.translate(x, transY); 30 | b.draw(canvas); 31 | canvas.restore(); 32 | } 33 | } -------------------------------------------------------------------------------- /app/src/main/java/com/amazon/kindle/view/danmaku/CenteredImageSpan.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle.view.danmaku; 2 | 3 | import android.graphics.Canvas; 4 | import android.graphics.Paint; 5 | import android.graphics.Rect; 6 | import android.graphics.drawable.Drawable; 7 | import android.support.annotation.NonNull; 8 | import android.text.style.ImageSpan; 9 | 10 | import java.lang.ref.WeakReference; 11 | 12 | public class CenteredImageSpan extends ImageSpan { 13 | 14 | private WeakReference mDrawableRef; 15 | 16 | public CenteredImageSpan(final Drawable drawable) { 17 | super(drawable); 18 | } 19 | 20 | @Override 21 | public int getSize(Paint paint, CharSequence text, 22 | int start, int end, 23 | Paint.FontMetricsInt fm) { 24 | Drawable d = getCachedDrawable(); 25 | Rect rect = d.getBounds(); 26 | 27 | if (fm != null) { 28 | Paint.FontMetricsInt pfm = paint.getFontMetricsInt(); 29 | // keep it the same as paint's fm 30 | fm.ascent = pfm.ascent; 31 | fm.descent = pfm.descent; 32 | fm.top = pfm.top; 33 | fm.bottom = pfm.bottom; 34 | } 35 | 36 | return rect.right; 37 | } 38 | 39 | @Override 40 | public void draw(@NonNull Canvas canvas, CharSequence text, 41 | int start, int end, float x, 42 | int top, int y, int bottom, @NonNull Paint paint) { 43 | Drawable b = getCachedDrawable(); 44 | canvas.save(); 45 | 46 | int drawableHeight = b.getIntrinsicHeight(); 47 | int fontAscent = paint.getFontMetricsInt().ascent; 48 | int fontDescent = paint.getFontMetricsInt().descent; 49 | int transY = bottom - b.getBounds().bottom + // align bottom to bottom 50 | (drawableHeight - fontDescent + fontAscent) / 2; // align center to center 51 | 52 | canvas.translate(x, transY); 53 | b.draw(canvas); 54 | canvas.restore(); 55 | } 56 | 57 | // Redefined locally because it is a private member from DynamicDrawableSpan 58 | private Drawable getCachedDrawable() { 59 | WeakReference wr = mDrawableRef; 60 | Drawable d = null; 61 | 62 | if (wr != null) 63 | d = wr.get(); 64 | 65 | if (d == null) { 66 | d = getDrawable(); 67 | mDrawableRef = new WeakReference<>(d); 68 | } 69 | 70 | return d; 71 | } 72 | } 73 | 74 | -------------------------------------------------------------------------------- /app/src/main/res/anim/gift_room_lite_item_enter.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/anim/gift_room_lite_item_out.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/anim/menu_enter.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/anim/menu_exit.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/animator/gift_room_lite_num_scalex.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/color/lib_text_color_black_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/color/tab_text_item_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v21/ic_item_foreground.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v21/lib_item_comment_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v24/ic_launcher_foreground.xml: -------------------------------------------------------------------------------- 1 | 7 | 12 | 13 | 19 | 22 | 25 | 26 | 27 | 28 | 34 | 35 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_draw_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xhdpi/ic_draw_0.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_draw_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xhdpi/ic_draw_1.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_draw_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xhdpi/ic_draw_2.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_draw_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xhdpi/ic_draw_3.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_draw_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xhdpi/ic_draw_4.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_draw_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xhdpi/ic_draw_5.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_draw_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xhdpi/ic_draw_6.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_draw_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xhdpi/ic_draw_7.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_draw_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xhdpi/ic_draw_8.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_draw_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xhdpi/ic_draw_9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_draw_text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xhdpi/ic_draw_text.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_vip_room_enter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xhdpi/ic_vip_room_enter.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lucky_box_big_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xhdpi/lucky_box_big_1.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lucky_box_big_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xhdpi/lucky_box_big_10.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lucky_box_big_11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xhdpi/lucky_box_big_11.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lucky_box_big_12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xhdpi/lucky_box_big_12.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lucky_box_big_13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xhdpi/lucky_box_big_13.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lucky_box_big_14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xhdpi/lucky_box_big_14.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lucky_box_big_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xhdpi/lucky_box_big_15.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lucky_box_big_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xhdpi/lucky_box_big_16.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lucky_box_big_17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xhdpi/lucky_box_big_17.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lucky_box_big_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xhdpi/lucky_box_big_18.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lucky_box_big_19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xhdpi/lucky_box_big_19.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lucky_box_big_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xhdpi/lucky_box_big_2.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lucky_box_big_20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xhdpi/lucky_box_big_20.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lucky_box_big_21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xhdpi/lucky_box_big_21.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lucky_box_big_22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xhdpi/lucky_box_big_22.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lucky_box_big_23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xhdpi/lucky_box_big_23.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lucky_box_big_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xhdpi/lucky_box_big_24.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lucky_box_big_25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xhdpi/lucky_box_big_25.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lucky_box_big_26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xhdpi/lucky_box_big_26.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lucky_box_big_27.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xhdpi/lucky_box_big_27.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lucky_box_big_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xhdpi/lucky_box_big_3.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lucky_box_big_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xhdpi/lucky_box_big_4.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lucky_box_big_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xhdpi/lucky_box_big_5.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lucky_box_big_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xhdpi/lucky_box_big_6.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lucky_box_big_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xhdpi/lucky_box_big_7.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lucky_box_big_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xhdpi/lucky_box_big_8.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lucky_box_big_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xhdpi/lucky_box_big_9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/tip_game.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xhdpi/tip_game.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/bg_gift_item_selected.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/bg_gift_item_selected.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/btn_live_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/btn_live_close.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/btn_live_msg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/btn_live_msg.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/btn_live_share.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/btn_live_share.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/com_facebook_tooltip_black_background.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/com_facebook_tooltip_black_background.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/gift_card_level_three_n_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/gift_card_level_three_n_0.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/gift_card_level_three_n_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/gift_card_level_three_n_1.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/gift_card_level_three_n_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/gift_card_level_three_n_2.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/gift_card_level_three_n_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/gift_card_level_three_n_3.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/gift_card_level_three_n_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/gift_card_level_three_n_4.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/gift_card_level_three_n_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/gift_card_level_three_n_5.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/gift_card_level_three_n_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/gift_card_level_three_n_6.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/gift_card_level_three_n_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/gift_card_level_three_n_7.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/gift_card_level_three_n_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/gift_card_level_three_n_8.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/gift_card_level_three_n_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/gift_card_level_three_n_9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/gift_card_level_three_n_a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/gift_card_level_three_n_a.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/gift_numx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/gift_numx.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_chat_server.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/ic_chat_server.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_default_gift_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/ic_default_gift_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_default_user_head.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/ic_default_user_head.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_direction_bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/ic_direction_bottom.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_direction_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/ic_direction_left.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_direction_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/ic_direction_right.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_direction_top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/ic_direction_top.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_gift_board_money.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/ic_gift_board_money.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_gift_money.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/ic_gift_money.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_gift_send_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/ic_gift_send_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_history.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/ic_history.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_history_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/ic_history_normal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_liked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/ic_liked.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_list_empty_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/ic_list_empty_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_message_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/ic_message_down.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_message_face.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/ic_message_face.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_nav_bar_back_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/ic_nav_bar_back_black.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_nav_bar_back_gray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/ic_nav_bar_back_gray.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_nav_bar_back_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/ic_nav_bar_back_white.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_net_error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/ic_net_error.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_room_monery.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/ic_room_monery.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/icon_like_png.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/icon_like_png.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/iv_icon_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/iv_icon_search.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/iv_share_qq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/iv_share_qq.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/iv_share_qzone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/iv_share_qzone.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/iv_share_weichat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/iv_share_weichat.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/iv_share_weichatfriend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/iv_share_weichatfriend.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/loading_circle_progress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/loading_circle_progress.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/lucky_num0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/lucky_num0.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/lucky_num1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/lucky_num1.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/lucky_num2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/lucky_num2.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/lucky_num3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/lucky_num3.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/lucky_num4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/lucky_num4.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/lucky_num5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/lucky_num5.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/lucky_num6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/lucky_num6.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/lucky_num7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/lucky_num7.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/lucky_num8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/lucky_num8.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/lucky_num9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/lucky_num9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/num0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/num0.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/num1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/num1.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/num2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/num2.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/num3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/num3.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/num4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/num4.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/num5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/num5.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/num6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/num6.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/num7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/num7.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/num8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/num8.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/num9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/num9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/resource_heart0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/resource_heart0.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/resource_heart1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/resource_heart1.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/resource_heart2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/resource_heart2.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/resource_heart3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/resource_heart3.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/resource_heart4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/resource_heart4.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/resource_heart5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/resource_heart5.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/resource_heart6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/resource_heart6.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/resource_heart7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/resource_heart7.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/resource_heart8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/resource_heart8.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/resource_heart9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/resource_heart9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/room_danmu_item_bg.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/room_danmu_item_bg.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle1.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle10.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle11.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle12.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle13.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle14.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle15.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle16.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle17.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle18.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle19.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle2.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle20.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle21.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle22.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle23.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle24.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle25.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle26.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle27.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle27.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle28.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle28.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle29.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle29.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle3.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle30.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle31.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle32.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle33.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle33.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle34.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle34.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle35.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle35.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle36.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle37.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle37.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle38.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle39.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle39.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle4.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle40.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle41.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle41.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle42.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle42.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle43.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle43.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle44.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle44.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle45.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle45.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle46.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle46.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle47.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle47.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle48.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle49.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle49.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle5.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle50.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle6.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle7.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle8.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/vip_gradle9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/app/src/main/res/drawable-xxhdpi/vip_gradle9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/arice_dot_false.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/arice_dot_green.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/arice_dot_red.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/arice_dot_style.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/arice_dot_tr_red.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/arice_dot_true.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_anchor_user_head_shape.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_black_shape_gratien.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_black_shape_ungratien.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_draw_layout.xml: -------------------------------------------------------------------------------- 1 | 3 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_fans_user_mad_head_shape.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_fans_user_man_head_shape.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_gift_num_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_gift_tag_shape.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 11 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_input.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_inputbox.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_room_draw_level_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_shape_room_cacht_content.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_title.xml: -------------------------------------------------------------------------------- 1 | 3 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_user_head_shape.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_white_circular_trs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/btn_nav_menu_back_selector_black.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/btn_nav_menu_back_selector_white.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/dot_arl_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/full_room_input_send_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/full_room_input_unsend_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/gift_bg_live_user_data.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/gift_item_bg_shape.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/gift_room_avatar_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_item_foreground.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/index_head_border.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/index_list_one_item_bottom_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 10 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/index_live_public_item_bottom_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/lib_bg_dialog_bottom_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/lib_item_comment_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/progress.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 12 | 13 | 14 | 17 | 18 | 19 | 20 | 21 | 22 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_live_room.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 14 | 15 | 19 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 13 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_webview.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 13 | 14 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/layout/comment_title_layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 12 | 15 | 19 | 33 | 44 | 49 | 50 | -------------------------------------------------------------------------------- /app/src/main/res/layout/dialog_share.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 12 | 16 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_index_private_room.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 10 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_index_public_room.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 9 | 16 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_index_room.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 10 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_idnex_user_image_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 10 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_live_conversation_layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 21 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_live_private_banner_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_live_private_room_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_live_public_banner_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_live_user_fans_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_share_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 14 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_unknown.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/layout/layout_periscope.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 14 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/layout/view_bright_conversation_layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 12 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/layout/view_gift_big_draw_layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 11 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/layout/view_gift_board.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 14 | 17 | 24 | 25 | 26 | 33 | 34 | -------------------------------------------------------------------------------- /app/src/main/res/layout/view_gift_board_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/layout/view_gift_layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 11 | 23 | 28 | 31 | 42 | 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /app/src/main/res/layout/view_index_globe_layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/layout/view_list_empty.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 13 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/layout/view_load_more_layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 11 | 16 | 24 | 25 | 35 | 44 | -------------------------------------------------------------------------------- /app/src/main/res/layout/view_tab_item.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/view_web_error_page.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 12 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/values-v19/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/values-v21/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #B42164 4 | #F62E89 5 | #F62E89 6 | #FFFFFF 7 | #FF0000 8 | #00000000 9 | #808080 10 | #FFFFFF 11 | #4D000000 12 | #66000000 13 | #33000000 14 | #FFDDDDDD 15 | #FF959595 16 | #4DF62E89 17 | #FFF0F2F5 18 | #FFF0F0F0 19 | #FF2A2A2A 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 50.0dp 5 | 50.0dp 6 | 25.0dp 7 | 100.0dp 8 | 350.0dp 9 | 30.0dp 10 | 27.3dp 11 | 32.5dp 12 | 50dp 13 | -------------------------------------------------------------------------------- /app/src/main/res/values/integers.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 80 5 | 6 | 6 7 | 8 | 1000 9 | -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | iLive 3 | 4 | -------------------------------------------------------------------------------- /app/src/test/java/com/android/gift/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.amazon.kindle; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() throws Exception { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | apply from: "config.gradle" 4 | 5 | buildscript { 6 | repositories { 7 | google() 8 | jcenter() 9 | maven { url 'https://jitpack.io' } 10 | } 11 | dependencies { 12 | classpath 'com.android.tools.build:gradle:3.0.1' 13 | //添加bintray环境 14 | classpath 'com.novoda:bintray-release:0.8.1' 15 | // NOTE: Do not place your application dependencies here; they belong 16 | // in the individual module build.gradle files 17 | } 18 | } 19 | 20 | allprojects { 21 | repositories { 22 | google() 23 | jcenter() 24 | maven { url 'https://jitpack.io' } 25 | //Bintray插件仓库支持 26 | maven { url 'https://dl.bintray.com/novoda-oss/snapshots/' } 27 | } 28 | //编译时报注释GBK编码错误解决 29 | tasks.withType(Javadoc) { 30 | //方法上忽略@return和@param注解未添加说明注释 31 | options.addStringOption('Xdoclint:none', '-quiet') 32 | //解决GBK编码错误提示 33 | options.addStringOption('encoding', 'UTF-8') 34 | options.addStringOption('charSet', 'UTF-8') 35 | } 36 | //跳过构建时link检查 37 | tasks.whenTaskAdded { task -> 38 | if (task.name.equals("lint")) { 39 | task.enabled = false 40 | } 41 | } 42 | } 43 | 44 | task clean(type: Delete) { 45 | delete rootProject.buildDir 46 | } -------------------------------------------------------------------------------- /config.gradle: -------------------------------------------------------------------------------- 1 | ext { 2 | android = [ 3 | compileSdkVersion : 26, 4 | buildToolsVersion : "26.0.2", 5 | minSdkVersion : 16, 6 | targetSdkVersion : 26, 7 | devMinSdk : 16, 8 | supportLibVersion : "26.1.0" 9 | ] 10 | app=[ 11 | applicationId : "com.kindle.live.gift", 12 | versionCode : 100005, 13 | versionName : "1.0.05" 14 | ] 15 | } -------------------------------------------------------------------------------- /doc/apk/iLive-1.0.01.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/doc/apk/iLive-1.0.01.apk -------------------------------------------------------------------------------- /doc/apk/iLive-1.0.02.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/doc/apk/iLive-1.0.02.apk -------------------------------------------------------------------------------- /doc/apk/iLive-1.0.03.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/doc/apk/iLive-1.0.03.apk -------------------------------------------------------------------------------- /doc/apk/iLive-1.0.04.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/doc/apk/iLive-1.0.04.apk -------------------------------------------------------------------------------- /doc/screenshot/一对一.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/doc/screenshot/一对一.png -------------------------------------------------------------------------------- /doc/screenshot/直播列表.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/doc/screenshot/直播列表.png -------------------------------------------------------------------------------- /doc/screenshot/直播间1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/doc/screenshot/直播间1.png -------------------------------------------------------------------------------- /doc/screenshot/直播间中奖.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/doc/screenshot/直播间中奖.png -------------------------------------------------------------------------------- /doc/screenshot/直播间礼物.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/doc/screenshot/直播间礼物.png -------------------------------------------------------------------------------- /doc/screenshot/礼物面板.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/doc/screenshot/礼物面板.png -------------------------------------------------------------------------------- /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/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Sun May 12 22:08:05 CST 2019 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-4.1-all.zip 7 | -------------------------------------------------------------------------------- /live-player-lib/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /live-player-lib/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | android { 4 | compileSdkVersion 26 5 | defaultConfig { 6 | minSdkVersion 16 7 | targetSdkVersion 26 8 | versionCode 1 9 | versionName "1.0" 10 | // //需要在你的项目grade中指定支持的cpu类型,复制下面这句话至你的项目 11 | // ndk { 12 | // abiFilters 'armeabi' 13 | // } 14 | } 15 | 16 | buildTypes { 17 | release { 18 | minifyEnabled false 19 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 20 | } 21 | } 22 | 23 | sourceSets.main { 24 | jniLibs.srcDirs 'libs' 25 | jni.srcDirs = [] // This prevents the auto generation of Android.mk 26 | manifest.srcFile 'src/main/AndroidManifest.xml' 27 | } 28 | 29 | repositories { 30 | flatDir { 31 | dirs 'libs' 32 | } 33 | } 34 | } 35 | 36 | dependencies { 37 | implementation fileTree(dir: 'libs', include: ['*.jar']) 38 | implementation 'com.android.support:appcompat-v7:26.1.0' 39 | implementation 'com.github.bumptech.glide:glide:3.7.0' 40 | implementation 'jp.wasabeef:glide-transformations:2.0.1' 41 | implementation files('libs/liteavsdk.jar') 42 | } -------------------------------------------------------------------------------- /live-player-lib/libs/armeabi/libTRAECodec.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/live-player-lib/libs/armeabi/libTRAECodec.so -------------------------------------------------------------------------------- /live-player-lib/libs/armeabi/libliteavsdk.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/live-player-lib/libs/armeabi/libliteavsdk.so -------------------------------------------------------------------------------- /live-player-lib/libs/armeabi/libsaturn.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/live-player-lib/libs/armeabi/libsaturn.so -------------------------------------------------------------------------------- /live-player-lib/libs/armeabi/libstlport_shared.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/live-player-lib/libs/armeabi/libstlport_shared.so -------------------------------------------------------------------------------- /live-player-lib/libs/armeabi/libtraeimp-rtmp.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/live-player-lib/libs/armeabi/libtraeimp-rtmp.so -------------------------------------------------------------------------------- /live-player-lib/libs/armeabi/libtxffmpeg.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/live-player-lib/libs/armeabi/libtxffmpeg.so -------------------------------------------------------------------------------- /live-player-lib/libs/liteavsdk.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/live-player-lib/libs/liteavsdk.jar -------------------------------------------------------------------------------- /live-player-lib/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /live-player-lib/src/androidTest/java/com/android/live/player/lib/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package com.android.live.player.lib; 2 | 3 | import android.content.Context; 4 | import android.support.test.InstrumentationRegistry; 5 | import android.support.test.runner.AndroidJUnit4; 6 | 7 | import org.junit.Test; 8 | import org.junit.runner.RunWith; 9 | 10 | import static org.junit.Assert.*; 11 | 12 | /** 13 | * Instrumented test, which will execute on an Android device. 14 | * 15 | * @see Testing documentation 16 | */ 17 | @RunWith(AndroidJUnit4.class) 18 | public class ExampleInstrumentedTest { 19 | @Test 20 | public void useAppContext() throws Exception { 21 | // Context of the app under test. 22 | Context appContext = InstrumentationRegistry.getTargetContext(); 23 | 24 | assertEquals("com.android.live.player.lib.test", appContext.getPackageName()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /live-player-lib/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /live-player-lib/src/main/java/com/android/live/player/lib/base/BaseVideoController.java: -------------------------------------------------------------------------------- 1 | package com.android.live.player.lib.base; 2 | 3 | import android.content.Context; 4 | import android.support.annotation.NonNull; 5 | import android.support.annotation.Nullable; 6 | import android.util.AttributeSet; 7 | import android.widget.FrameLayout; 8 | 9 | /** 10 | * Created by TinyHung@outlook.com 11 | * 2019/4/20 12 | * Base Video\Live Controller 13 | */ 14 | 15 | public abstract class BaseVideoController extends FrameLayout { 16 | 17 | protected static final String TAG = "VideoBaseController"; 18 | 19 | public BaseVideoController(@NonNull Context context) { 20 | this(context,null); 21 | } 22 | 23 | public BaseVideoController(@NonNull Context context, @Nullable AttributeSet attrs) { 24 | this(context, attrs,0); 25 | } 26 | 27 | public BaseVideoController(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) { 28 | super(context, attrs, defStyleAttr); 29 | } 30 | 31 | //准备播放中 32 | public abstract void readyPlaying(); 33 | //开始缓冲中 34 | public abstract void startBuffer(); 35 | //缓冲结束 36 | public abstract void endBuffer(); 37 | //开始播放中 38 | public abstract void play(); 39 | //已暂停播放 40 | public abstract void pause(); 41 | //已回复播放 42 | public abstract void repeatPlay(); 43 | //移动网络状态下工作 44 | public abstract void mobileWorkTips(); 45 | //播放失败 46 | public abstract void error(int errorCode,String errorMessage); 47 | //播放器被重置 48 | public abstract void reset(); 49 | //实时播放状态 50 | protected void onTaskRuntime(long totalDurtion, long currentDurtion,int bufferPercent,boolean isPlaying){} 51 | //缓冲百分比 52 | protected void onBufferingUpdate(int percent){} 53 | //播放资源地址为空 54 | public abstract void pathInvalid(); 55 | //播放器被销毁 56 | public abstract void onDestroy(); 57 | 58 | /** 59 | * 非必须的,根据自身业务逻辑实现 60 | */ 61 | //设置视频标题内容 62 | protected void setTitle(String videoTitle){} 63 | 64 | //播放器空白位置单击事件 65 | public void changeControllerState(){} 66 | 67 | public interface OnStartListener{ 68 | void onStartPlay(); 69 | } 70 | protected OnStartListener mOnStartListener; 71 | 72 | public void setOnStartListener(OnStartListener onStartListener) { 73 | mOnStartListener = onStartListener; 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /live-player-lib/src/main/java/com/android/live/player/lib/listener/OnVideoTouchListener.java: -------------------------------------------------------------------------------- 1 | package com.android.live.player.lib.listener; 2 | 3 | import android.view.View; 4 | 5 | /** 6 | * hty_Yuye@Outlook.com 7 | * 2019/4/21 8 | */ 9 | 10 | public abstract class OnVideoTouchListener { 11 | 12 | /** 13 | * 单机事件 14 | * @param view 15 | */ 16 | public void onClick(View view){} 17 | 18 | /** 19 | * 双单机事件 20 | * @param view 21 | */ 22 | public void onDouble(View view){} 23 | 24 | /** 25 | * 向左滑动 26 | */ 27 | public void onScrollLeft(){} 28 | 29 | /** 30 | * 向右滑动 31 | */ 32 | public void onScrollRight(){} 33 | } 34 | -------------------------------------------------------------------------------- /live-player-lib/src/main/java/com/android/live/player/lib/listener/VideoPlayerEventListener.java: -------------------------------------------------------------------------------- 1 | package com.android.live.player.lib.listener; 2 | 3 | import com.android.live.player.lib.model.VideoPlayerState; 4 | 5 | /** 6 | * TinyHung@Outlook.com 7 | * 2019/4/20 8 | * Video\Live Player Event Listener 9 | */ 10 | 11 | public interface VideoPlayerEventListener { 12 | 13 | /** 14 | * 播放器所有状态回调 15 | * @param playerState 播放器内部状态 16 | */ 17 | void onVideoPlayerState(VideoPlayerState playerState, String message); 18 | 19 | /** 20 | * 播放器准备好了 21 | * @param totalDurtion 总时长 22 | */ 23 | void onPrepared(long totalDurtion); 24 | 25 | /** 26 | * 缓冲百分比 27 | * @param percent 百分比 28 | */ 29 | void onBufferingUpdate(int percent); 30 | 31 | /** 32 | * 播放器反馈信息 33 | * @param event 事件 34 | * @param extra 35 | */ 36 | void onInfo(int event, int extra); 37 | 38 | /** 39 | * 音频地址无效,组件可处理付费购买等逻辑 40 | */ 41 | void onVideoPathInvalid(); 42 | 43 | /** 44 | * @param totalDurtion 音频总时间 45 | * @param currentDurtion 当前播放的位置 46 | * @param bufferPercent 缓冲进度,从常规默认切换至全屏、小窗时,应该关心此进度 47 | * @param isPlaying 部分视频格式的视频播放当缓冲结束后的状态无法准确获取,此标记标识是否是正在播放 48 | */ 49 | void onTaskRuntime(long totalDurtion, long currentDurtion, int bufferPercent,boolean isPlaying); 50 | 51 | /** 52 | * 销毁 53 | */ 54 | void destroy(); 55 | } -------------------------------------------------------------------------------- /live-player-lib/src/main/java/com/android/live/player/lib/listener/VideoPlayerListener.java: -------------------------------------------------------------------------------- 1 | package com.android.live.player.lib.listener; 2 | 3 | /** 4 | * TinyHung@Outlook.com 5 | * 2019/4/20 6 | * Video\Live Player Listener 7 | */ 8 | 9 | public abstract class VideoPlayerListener { 10 | /** 11 | * 播放开始 12 | */ 13 | public void onStart(){} 14 | 15 | /** 16 | * 缓冲进度 17 | * @param progress 已经缓冲的数据量占整个视频时长的百分比 18 | */ 19 | public void onBufferingUpdate(int progress){} 20 | 21 | /** 22 | * 播放进度 23 | * @param currentDurtion 实时播放位置 24 | * @param totalDurtion 总长度 25 | */ 26 | public void onPlayingProgress(long currentDurtion,long totalDurtion){} 27 | 28 | /** 29 | * 播放中各种状态 30 | */ 31 | public void onStatus(int event){} 32 | 33 | /** 34 | * 播放结束 35 | */ 36 | public void onCompletion(){} 37 | 38 | /** 39 | * 失败 40 | * @param errorCode 41 | */ 42 | public void onError(int errorCode){} 43 | } 44 | -------------------------------------------------------------------------------- /live-player-lib/src/main/java/com/android/live/player/lib/model/VideoPlayerState.java: -------------------------------------------------------------------------------- 1 | package com.android.live.player.lib.model; 2 | 3 | /** 4 | * hty_Yuye@Outlook.com 5 | * 2019/4/20 6 | * VideoPlayerState 7 | */ 8 | 9 | public enum VideoPlayerState { 10 | MUSIC_PLAYER_PREPARE,//准备中 11 | MUSIC_PLAYER_BUFFER,//缓冲中 12 | MUSIC_PLAYER_START,//播放中 13 | MUSIC_PLAYER_PAUSE,//暂停 14 | MUSIC_PLAYER_PLAY,//恢复 15 | MUSIC_PLAYER_STOP,//已结束,或未开始 16 | MUSIC_PLAYER_COMPLETION,//播放已结束 17 | MUSIC_PLAYER_MOBILE,//移动网络环境下 18 | MUSIC_PLAYER_ERROR//错误 19 | } -------------------------------------------------------------------------------- /live-player-lib/src/main/java/com/android/live/player/lib/utils/Logger.java: -------------------------------------------------------------------------------- 1 | package com.android.live.player.lib.utils; 2 | 3 | import android.util.Log; 4 | 5 | /** 6 | * TinyHung@outlook.com 7 | * 2017/6/19 9:28 8 | */ 9 | 10 | public class Logger { 11 | 12 | private static final boolean IS_DEBUG = true; 13 | 14 | public static void pd(String TAG, String message){ 15 | if(IS_DEBUG){ 16 | Log.println(Log.DEBUG,TAG,message); 17 | } 18 | } 19 | 20 | public static void pe(String TAG, String message){ 21 | if(IS_DEBUG){ 22 | Log.println(Log.ERROR,TAG,message); 23 | } 24 | } 25 | 26 | public static void pw(String TAG, String message){ 27 | if(IS_DEBUG){ 28 | Log.println(Log.WARN,TAG,message); 29 | } 30 | } 31 | 32 | public static void pi(String TAG, String message){ 33 | if(IS_DEBUG){ 34 | Log.println(Log.INFO,TAG,message); 35 | } 36 | } 37 | public static void d(String TAG, String message) { 38 | if(IS_DEBUG){ 39 | Log.d(TAG,message); 40 | } 41 | } 42 | 43 | public static void e(String TAG, String message) { 44 | if(IS_DEBUG){ 45 | Log.e(TAG,message); 46 | } 47 | } 48 | 49 | public static void v(String TAG, String message) { 50 | if(IS_DEBUG){ 51 | Log.e(TAG,message); 52 | } 53 | } 54 | 55 | public static void w(String TAG, String message) { 56 | if(IS_DEBUG){ 57 | Log.w(TAG,message); 58 | } 59 | } 60 | 61 | public static void i(String TAG, String message) { 62 | if(IS_DEBUG){ 63 | Log.i(TAG,message); 64 | } 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /live-player-lib/src/main/java/com/android/live/player/lib/view/VideoPlayerTrack.java: -------------------------------------------------------------------------------- 1 | package com.android.live.player.lib.view; 2 | 3 | import android.content.Context; 4 | import android.support.annotation.NonNull; 5 | import android.support.annotation.Nullable; 6 | import android.util.AttributeSet; 7 | import com.android.live.player.lib.R; 8 | import com.android.live.player.lib.base.BaseVideoPlayer; 9 | import com.android.live.player.lib.controller.PlayerVideoController; 10 | 11 | /** 12 | * hty_Yuye@Outlook.com 13 | * 2019/4/21 14 | * Default Video Player Track 15 | */ 16 | 17 | public class VideoPlayerTrack extends BaseVideoPlayer { 18 | 19 | public VideoPlayerTrack(@NonNull Context context) { 20 | super(context); 21 | } 22 | 23 | public VideoPlayerTrack(@NonNull Context context, @Nullable AttributeSet attrs) { 24 | super(context, attrs); 25 | } 26 | 27 | @Override 28 | protected int getLayoutID() { 29 | return R.layout.view_live_media_player_layout; 30 | } 31 | 32 | public VideoPlayerTrack(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) { 33 | super(context, attrs, defStyleAttr); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /live-player-lib/src/main/res/drawable-xxhdpi/bg_live_transit.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/live-player-lib/src/main/res/drawable-xxhdpi/bg_live_transit.jpg -------------------------------------------------------------------------------- /live-player-lib/src/main/res/drawable-xxhdpi/ic_private_media_play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/live-player-lib/src/main/res/drawable-xxhdpi/ic_private_media_play.png -------------------------------------------------------------------------------- /live-player-lib/src/main/res/drawable-xxhdpi/ic_video_default_cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/live-player-lib/src/main/res/drawable-xxhdpi/ic_video_default_cover.png -------------------------------------------------------------------------------- /live-player-lib/src/main/res/drawable-xxhdpi/loading_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/live-player-lib/src/main/res/drawable-xxhdpi/loading_1.png -------------------------------------------------------------------------------- /live-player-lib/src/main/res/drawable-xxhdpi/loading_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/live-player-lib/src/main/res/drawable-xxhdpi/loading_10.png -------------------------------------------------------------------------------- /live-player-lib/src/main/res/drawable-xxhdpi/loading_11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/live-player-lib/src/main/res/drawable-xxhdpi/loading_11.png -------------------------------------------------------------------------------- /live-player-lib/src/main/res/drawable-xxhdpi/loading_12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/live-player-lib/src/main/res/drawable-xxhdpi/loading_12.png -------------------------------------------------------------------------------- /live-player-lib/src/main/res/drawable-xxhdpi/loading_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/live-player-lib/src/main/res/drawable-xxhdpi/loading_2.png -------------------------------------------------------------------------------- /live-player-lib/src/main/res/drawable-xxhdpi/loading_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/live-player-lib/src/main/res/drawable-xxhdpi/loading_3.png -------------------------------------------------------------------------------- /live-player-lib/src/main/res/drawable-xxhdpi/loading_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/live-player-lib/src/main/res/drawable-xxhdpi/loading_4.png -------------------------------------------------------------------------------- /live-player-lib/src/main/res/drawable-xxhdpi/loading_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/live-player-lib/src/main/res/drawable-xxhdpi/loading_5.png -------------------------------------------------------------------------------- /live-player-lib/src/main/res/drawable-xxhdpi/loading_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/live-player-lib/src/main/res/drawable-xxhdpi/loading_6.png -------------------------------------------------------------------------------- /live-player-lib/src/main/res/drawable-xxhdpi/loading_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/live-player-lib/src/main/res/drawable-xxhdpi/loading_7.png -------------------------------------------------------------------------------- /live-player-lib/src/main/res/drawable-xxhdpi/loading_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/live-player-lib/src/main/res/drawable-xxhdpi/loading_8.png -------------------------------------------------------------------------------- /live-player-lib/src/main/res/drawable-xxhdpi/loading_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iLive/b9f26fa5c93ce6f7e4a7b514b92995810ae65149/live-player-lib/src/main/res/drawable-xxhdpi/loading_9.png -------------------------------------------------------------------------------- /live-player-lib/src/main/res/drawable/bg_black.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /live-player-lib/src/main/res/drawable/video_loading_anim.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /live-player-lib/src/main/res/drawable/video_text_play_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /live-player-lib/src/main/res/layout/view_live_media_player_layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 11 | 12 | 17 | 21 | -------------------------------------------------------------------------------- /live-player-lib/src/main/res/values/attrs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /live-player-lib/src/main/res/values/ids.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /live-player-lib/src/main/res/values/integers.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 80 4 | -------------------------------------------------------------------------------- /live-player-lib/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | live-lib 3 | 4 | -------------------------------------------------------------------------------- /live-player-lib/src/test/java/com/android/live/player/lib/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.android.live.player.lib; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() throws Exception { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app', ':live-player-lib' 2 | --------------------------------------------------------------------------------