├── .gitignore ├── Doc ├── JavaDoc │ ├── music-player-lib │ │ └── javadoc │ │ │ ├── allclasses-frame.html │ │ │ ├── allclasses-noframe.html │ │ │ ├── com │ │ │ └── music │ │ │ │ └── player │ │ │ │ └── lib │ │ │ │ ├── adapter │ │ │ │ ├── MusicAlarmAdapter.MusicHolderView.html │ │ │ │ ├── MusicAlarmAdapter.html │ │ │ │ ├── MusicPlayerListAdapter.MusicHolderView.html │ │ │ │ ├── MusicPlayerListAdapter.html │ │ │ │ ├── base │ │ │ │ │ ├── BaseAdapter.html │ │ │ │ │ ├── OnItemClickListener.html │ │ │ │ │ ├── OnItemLongClickListener.html │ │ │ │ │ ├── OnLoadMoreListener.html │ │ │ │ │ ├── OnLoadMorePresenter.html │ │ │ │ │ ├── package-frame.html │ │ │ │ │ ├── package-summary.html │ │ │ │ │ └── package-tree.html │ │ │ │ ├── package-frame.html │ │ │ │ ├── package-summary.html │ │ │ │ └── package-tree.html │ │ │ │ ├── bean │ │ │ │ ├── BaseAudioInfo.html │ │ │ │ ├── MusicAlarmSetting.html │ │ │ │ ├── MusicLrcRow.html │ │ │ │ ├── MusicStatus.html │ │ │ │ ├── SearchHistroy.html │ │ │ │ ├── package-frame.html │ │ │ │ ├── package-summary.html │ │ │ │ └── package-tree.html │ │ │ │ ├── constants │ │ │ │ ├── MusicConstants.html │ │ │ │ ├── package-frame.html │ │ │ │ ├── package-summary.html │ │ │ │ └── package-tree.html │ │ │ │ ├── iinterface │ │ │ │ ├── MusicLrcRowParser.html │ │ │ │ ├── MusicOrientationListener.OnOrientationChangeListener.html │ │ │ │ ├── MusicOrientationListener.html │ │ │ │ ├── MusicPlayerPresenter.html │ │ │ │ ├── package-frame.html │ │ │ │ ├── package-summary.html │ │ │ │ └── package-tree.html │ │ │ │ ├── listener │ │ │ │ ├── MusicAnimatorListener.html │ │ │ │ ├── MusicInitializeCallBack.html │ │ │ │ ├── MusicJukeBoxStatusListener.html │ │ │ │ ├── MusicLrcParserCallBack.html │ │ │ │ ├── MusicLrcViewListener.html │ │ │ │ ├── MusicOnItemClickListener.html │ │ │ │ ├── MusicOnItemStatusListener.html │ │ │ │ ├── MusicPlayerEventListener.html │ │ │ │ ├── MusicPlayerInfoListener.html │ │ │ │ ├── MusicWindowClickListener.html │ │ │ │ ├── package-frame.html │ │ │ │ ├── package-summary.html │ │ │ │ └── package-tree.html │ │ │ │ ├── manager │ │ │ │ ├── MusicAudioFocusManager.OnAudioFocusListener.html │ │ │ │ ├── MusicAudioFocusManager.html │ │ │ │ ├── MusicPlayerManager.html │ │ │ │ ├── MusicSubjectObservable.html │ │ │ │ ├── MusicWindowManager.html │ │ │ │ ├── SqlLiteCacheManager.html │ │ │ │ ├── package-frame.html │ │ │ │ ├── package-summary.html │ │ │ │ └── package-tree.html │ │ │ │ ├── model │ │ │ │ ├── MusicDefaultLrcParser.html │ │ │ │ ├── MusicGlideCircleTransform.html │ │ │ │ ├── MusicItemSpaceDecoration.html │ │ │ │ ├── MusicPlayerConfig.html │ │ │ │ ├── SQLCollectHelper.html │ │ │ │ ├── SQLHistroyHelper.html │ │ │ │ ├── SQLSearchHelper.html │ │ │ │ ├── package-frame.html │ │ │ │ ├── package-summary.html │ │ │ │ └── package-tree.html │ │ │ │ ├── service │ │ │ │ ├── MusicPlayerBinder.html │ │ │ │ ├── MusicPlayerService.html │ │ │ │ ├── package-frame.html │ │ │ │ ├── package-summary.html │ │ │ │ └── package-tree.html │ │ │ │ ├── util │ │ │ │ ├── Logger.html │ │ │ │ ├── MusicACache.ACacheManager.html │ │ │ │ ├── MusicACache.html │ │ │ │ ├── MusicAlbumCoverTask.html │ │ │ │ ├── MusicClickControler.html │ │ │ │ ├── MusicColorUtils.html │ │ │ │ ├── MusicImageCache.html │ │ │ │ ├── MusicRomUtil.html │ │ │ │ ├── MusicStatusUtils.html │ │ │ │ ├── MusicUtils.html │ │ │ │ ├── package-frame.html │ │ │ │ ├── package-summary.html │ │ │ │ └── package-tree.html │ │ │ │ └── view │ │ │ │ ├── CircleProgressBar.html │ │ │ │ ├── MusicArcMenuView.ArcPoint.html │ │ │ │ ├── MusicArcMenuView.OnArcMenuClickListener.html │ │ │ │ ├── MusicArcMenuView.html │ │ │ │ ├── MusicBackgroungBlurView.html │ │ │ │ ├── MusicCommentTitleView.OnTitleClickListener.html │ │ │ │ ├── MusicCommentTitleView.html │ │ │ │ ├── MusicCustomTextView.html │ │ │ │ ├── MusicFanLayout.html │ │ │ │ ├── MusicJukeBoxBackgroundLayout.html │ │ │ │ ├── MusicJukeBoxBackgroundLayout1.html │ │ │ │ ├── MusicJukeBoxCoverPager.html │ │ │ │ ├── MusicJukeBoxView.DiscStatus.html │ │ │ │ ├── MusicJukeBoxView.html │ │ │ │ ├── MusicJukeBoxViewSmall.html │ │ │ │ ├── MusicLrcView.html │ │ │ │ ├── MusicMarqueeTextView.html │ │ │ │ ├── MusicPagerAdapter.html │ │ │ │ ├── MusicPlayerWindow.html │ │ │ │ ├── MusicRoundImageView.html │ │ │ │ ├── MusicSildingLayout.OnSildingFinishListener.html │ │ │ │ ├── MusicSildingLayout.html │ │ │ │ ├── MusicViewPager.DecorView.html │ │ │ │ ├── MusicViewPager.LayoutParams.html │ │ │ │ ├── MusicViewPager.OnAdapterChangeListener.html │ │ │ │ ├── MusicViewPager.OnClickViewListener.html │ │ │ │ ├── MusicViewPager.OnPageChangeListener.html │ │ │ │ ├── MusicViewPager.PageTransformer.html │ │ │ │ ├── MusicViewPager.SavedState.html │ │ │ │ ├── MusicViewPager.SimpleOnPageChangeListener.html │ │ │ │ ├── MusicViewPager.html │ │ │ │ ├── MusicViewPagerScroller.html │ │ │ │ ├── MusicWindowPlayer.html │ │ │ │ ├── MusicWindowTrash.html │ │ │ │ ├── dialog │ │ │ │ ├── MusicAlarmSettingDialog.OnAlarmModelListener.html │ │ │ │ ├── MusicAlarmSettingDialog.html │ │ │ │ ├── MusicPlayerListDialog.html │ │ │ │ ├── package-frame.html │ │ │ │ ├── package-summary.html │ │ │ │ └── package-tree.html │ │ │ │ ├── package-frame.html │ │ │ │ ├── package-summary.html │ │ │ │ └── package-tree.html │ │ │ ├── constant-values.html │ │ │ ├── deprecated-list.html │ │ │ ├── help-doc.html │ │ │ ├── index-all.html │ │ │ ├── index.html │ │ │ ├── overview-frame.html │ │ │ ├── overview-summary.html │ │ │ ├── overview-tree.html │ │ │ ├── package-list │ │ │ ├── script.js │ │ │ ├── serialized-form.html │ │ │ └── stylesheet.css │ └── video-player-lib │ │ └── javadoc │ │ ├── allclasses-frame.html │ │ ├── allclasses-noframe.html │ │ ├── com │ │ └── video │ │ │ └── player │ │ │ └── lib │ │ │ ├── base │ │ │ ├── BaseCoverController.OnStartListener.html │ │ │ ├── BaseCoverController.html │ │ │ ├── BaseGestureController.html │ │ │ ├── BaseVideoController.OnFuctionListener.html │ │ │ ├── BaseVideoController.html │ │ │ ├── BaseVideoPlayer.html │ │ │ ├── IMediaPlayer.html │ │ │ ├── package-frame.html │ │ │ ├── package-summary.html │ │ │ └── package-tree.html │ │ │ ├── bean │ │ │ ├── VideoParams.html │ │ │ ├── package-frame.html │ │ │ ├── package-summary.html │ │ │ └── package-tree.html │ │ │ ├── constants │ │ │ ├── VideoConstants.html │ │ │ ├── package-frame.html │ │ │ ├── package-summary.html │ │ │ └── package-tree.html │ │ │ ├── controller │ │ │ ├── DefaultCoverController.html │ │ │ ├── DefaultGestureController.html │ │ │ ├── DefaultVideoController.html │ │ │ ├── DetailsCoverController.html │ │ │ ├── VideoMiniWindowController.html │ │ │ ├── VideoWindowController.html │ │ │ ├── package-frame.html │ │ │ ├── package-summary.html │ │ │ └── package-tree.html │ │ │ ├── listener │ │ │ ├── OnVideoEventListener.html │ │ │ ├── VideoOrientationListener.OnOrientationChangeListener.html │ │ │ ├── VideoOrientationListener.html │ │ │ ├── VideoPlayerEventListener.html │ │ │ ├── package-frame.html │ │ │ ├── package-summary.html │ │ │ └── package-tree.html │ │ │ ├── manager │ │ │ ├── MediaPlayerPresenter.html │ │ │ ├── VideoAudioFocusManager.OnAudioFocusListener.html │ │ │ ├── VideoAudioFocusManager.html │ │ │ ├── VideoPlayerManager.html │ │ │ ├── VideoWindowManager.html │ │ │ ├── package-frame.html │ │ │ ├── package-summary.html │ │ │ └── package-tree.html │ │ │ ├── utils │ │ │ ├── Logger.html │ │ │ ├── VideoUtils.html │ │ │ ├── package-frame.html │ │ │ ├── package-summary.html │ │ │ └── package-tree.html │ │ │ └── view │ │ │ ├── VideoDetailsPlayerTrackView.html │ │ │ ├── VideoPlayerTrackView.html │ │ │ ├── VideoRoundImageView.html │ │ │ ├── VideoTextrueProvider.html │ │ │ ├── VideoTextureView.html │ │ │ ├── VideoWindowPlayerGroup.html │ │ │ ├── package-frame.html │ │ │ ├── package-summary.html │ │ │ └── package-tree.html │ │ ├── constant-values.html │ │ ├── deprecated-list.html │ │ ├── help-doc.html │ │ ├── index-all.html │ │ ├── index.html │ │ ├── overview-frame.html │ │ ├── overview-summary.html │ │ ├── overview-tree.html │ │ ├── package-list │ │ ├── script.js │ │ └── stylesheet.css ├── Maven仓库搭建 │ ├── Nexus │ │ └── nexus-2.14.8-01-bundle │ │ │ └── sonatype-work │ │ │ └── nexus │ │ │ ├── conf │ │ │ ├── capabilities.xml │ │ │ ├── logback-nexus.xml │ │ │ ├── logback.properties │ │ │ ├── logback.xml │ │ │ ├── lvo-plugin.xml │ │ │ ├── nexus.xml │ │ │ ├── security-configuration.xml │ │ │ └── security.xml │ │ │ └── logs │ │ │ ├── nexus.log │ │ │ └── request.log │ └── 步骤截图 │ │ ├── Maven登录.png │ │ ├── Maven账号默认密码修改.png │ │ ├── Nexus启动默认界面.png │ │ ├── Nexus端口号修改.png │ │ ├── Nexus配置完成.png │ │ ├── nexus安装完成1.png │ │ ├── nexus目录.png │ │ ├── 发布代码到Nexus成功.png │ │ ├── 木块本地Maven仓库配置-2.png │ │ ├── 木块本地Maven仓库配置.png │ │ ├── 模块打包到本地Maven仓库成功.png │ │ └── 模块编译到Maven完成.png ├── aar │ ├── music-player-1.0.4.aar │ └── video-player-1.0.4.aar ├── md │ ├── AndroidStudio发布项目到JCenter.md │ ├── HistoryVersion.md │ ├── MavenJcenter仓库构建.md │ ├── Maven局域网仓库构建.md │ ├── Maven本地仓库构建.md │ ├── MusicPlayerReadme.md │ └── VideoPlayerReadme.md ├── screenshot │ ├── 20190417_162033.jpg │ ├── 20190417_162126.jpg │ ├── 20190417_162237.jpg │ ├── 20190417_162345.jpg │ ├── 20190417_162453.jpg │ ├── 20190418_135654.jpg │ ├── 20190418_135655.jpg │ ├── imusic_code.png │ ├── music_player.png │ └── videp_player.png └── video │ ├── Music.gif │ └── Video.gif ├── README.md ├── app ├── .gitignore ├── build.gradle ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── imusicPublish │ └── release │ │ ├── iMusic-1.1.9.apk │ │ └── output-metadata.json ├── local.properties ├── priguardMapping.txt ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── yc │ │ └── liaolive │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── assets │ │ ├── index_list.json │ │ ├── laosan.json │ │ ├── linjunjie.json │ │ ├── rooms.json │ │ ├── tianfuzhen.json │ │ ├── zhangjie.json │ │ ├── zhangyu.json │ │ └── zhoujielun.json │ ├── java │ │ └── com │ │ │ └── android │ │ │ └── imusic │ │ │ ├── MainActivity.java │ │ │ ├── MusicApplication.java │ │ │ ├── base │ │ │ ├── BaseActivity.java │ │ │ ├── BaseContract.java │ │ │ ├── BaseDialog.java │ │ │ ├── BaseEngin.java │ │ │ ├── BaseFragment.java │ │ │ └── BasePresenter.java │ │ │ ├── music │ │ │ ├── activity │ │ │ │ ├── MusicAlbumActivity.java │ │ │ │ ├── MusicCollectActivity.java │ │ │ │ ├── MusicHistroyActivity.java │ │ │ │ ├── MusicLocalActivity.java │ │ │ │ ├── MusicLockActivity.java │ │ │ │ ├── MusicPlayerActivity.java │ │ │ │ ├── MusicSearchActivity.java │ │ │ │ ├── TestActivity.java │ │ │ │ └── VersionUpdateActivity.java │ │ │ ├── adapter │ │ │ │ ├── MusicCollectListAdapter.java │ │ │ │ ├── MusicCommenListAdapter.java │ │ │ │ ├── MusicDetailsAdapter.java │ │ │ │ ├── MusicFragmentPagerAdapter.java │ │ │ │ ├── MusicIndexDataAdapter.java │ │ │ │ ├── MusicSearchAdapter.java │ │ │ │ └── holder │ │ │ │ │ ├── IndexAlbumViewHolder.java │ │ │ │ │ ├── IndexDefaultViewHolder.java │ │ │ │ │ ├── IndexMusicViewHolder.java │ │ │ │ │ ├── IndexTitleViewHolder.java │ │ │ │ │ └── MusicListViewHolder.java │ │ │ ├── bean │ │ │ │ ├── AlbumInfo.java │ │ │ │ ├── AudioInfo.java │ │ │ │ ├── MusicDetails.java │ │ │ │ ├── MusicParams.java │ │ │ │ ├── SearchMusicAnchor.java │ │ │ │ ├── SearchMusicData.java │ │ │ │ ├── SearchResulParam.java │ │ │ │ ├── SearchResult.java │ │ │ │ ├── SearchResultInfo.java │ │ │ │ ├── SingerInfo.java │ │ │ │ └── VersionInfo.java │ │ │ ├── broadcast │ │ │ │ └── MusicForegroundController.java │ │ │ ├── dialog │ │ │ │ ├── CommonDialog.java │ │ │ │ ├── MusicLoadingView.java │ │ │ │ ├── MusicMusicDetailsDialog.java │ │ │ │ └── QuireDialog.java │ │ │ ├── manager │ │ │ │ ├── AppBackgroundManager.java │ │ │ │ ├── ForegroundManager.java │ │ │ │ └── VersionUpdateManager.java │ │ │ ├── model │ │ │ │ ├── MusicHistroyEngin.java │ │ │ │ ├── MusicListEngin.java │ │ │ │ ├── MusicLocationEngin.java │ │ │ │ ├── MusicLrcRowParserEngin.java │ │ │ │ └── MusicSearchEngin.java │ │ │ ├── ui │ │ │ │ ├── contract │ │ │ │ │ ├── MusicHistroyContract.java │ │ │ │ │ ├── MusicListContract.java │ │ │ │ │ ├── MusicLocationContract.java │ │ │ │ │ └── MusicSearchContract.java │ │ │ │ ├── fragment │ │ │ │ │ └── IndexMusicFragment.java │ │ │ │ └── presenter │ │ │ │ │ ├── MusicHistroyPersenter.java │ │ │ │ │ ├── MusicListPersenter.java │ │ │ │ │ ├── MusicLocationPersenter.java │ │ │ │ │ └── MusicSearchPersenter.java │ │ │ ├── utils │ │ │ │ ├── DataFactory.java │ │ │ │ ├── FileUtils.java │ │ │ │ └── MediaUtils.java │ │ │ └── view │ │ │ │ ├── BoldMediumTextView.java │ │ │ │ ├── LayoutProvider.java │ │ │ │ ├── MusicEmptyView.java │ │ │ │ └── ShapeTextView.java │ │ │ ├── net │ │ │ ├── Constants.java │ │ │ ├── OkHttpUtils.java │ │ │ ├── OnDownloadListener.java │ │ │ ├── OnResultCallBack.java │ │ │ ├── SimpleNetUtils.java │ │ │ └── bean │ │ │ │ ├── ResultData.java │ │ │ │ └── ResultList.java │ │ │ └── video │ │ │ ├── activity │ │ │ ├── VideoListActivity.java │ │ │ └── VideoPlayerActviity.java │ │ │ ├── adapter │ │ │ ├── VideoDetailsAdapter.java │ │ │ ├── VideoIndexVideoAdapter.java │ │ │ └── holder │ │ │ │ ├── VideoBannerViewHolder.java │ │ │ │ ├── VideoCardViewHolder.java │ │ │ │ ├── VideoDetailsItemViewHolder.java │ │ │ │ ├── VideoTitleViewHolder.java │ │ │ │ └── VideoVideoViewHolder.java │ │ │ ├── bean │ │ │ ├── OpenEyesAuthor.java │ │ │ ├── OpenEyesContent.java │ │ │ ├── OpenEyesDataBean.java │ │ │ ├── OpenEyesHeader.java │ │ │ ├── OpenEyesIndexInfo.java │ │ │ ├── OpenEyesIndexItemBean.java │ │ │ ├── OpenEyesPlayInfo.java │ │ │ └── OpenEyesTag.java │ │ │ ├── fragment │ │ │ └── IndexVideoFragment.java │ │ │ ├── model │ │ │ └── IndexVideoEngin.java │ │ │ ├── ui │ │ │ ├── contract │ │ │ │ └── IndexVideoContract.java │ │ │ └── presenter │ │ │ │ └── IndexVideoPersenter.java │ │ │ └── view │ │ │ ├── TransformerMoiveItem.java │ │ │ ├── TransformerPageAnimation.java │ │ │ ├── TransformerVideoPager.java │ │ │ └── VideoDetailsHeaderView.java │ └── res │ │ ├── color │ │ └── music_index_tab_color.xml │ │ ├── drawable-v21 │ │ └── lib_item_foreground.xml │ │ ├── drawable-v24 │ │ ├── ic_launcher_foreground.xml │ │ └── lib_item_foreground.xml │ │ ├── drawable-xxhdpi │ │ ├── ic_desp_down.png │ │ ├── ic_desp_up.png │ │ ├── ic_kusic_current_play.png │ │ ├── ic_music_audio.png │ │ ├── ic_music_collect_noimal_white.png │ │ ├── ic_music_details_album.png │ │ ├── ic_music_details_anchor.png │ │ ├── ic_music_details_collect.png │ │ ├── ic_music_details_detele.png │ │ ├── ic_music_details_durtion.png │ │ ├── ic_music_details_next.png │ │ ├── ic_music_details_share.png │ │ ├── ic_music_empty_default_img.png │ │ ├── ic_music_empty_error.png │ │ ├── ic_music_index_collect.png │ │ ├── ic_music_index_last_play.png │ │ ├── ic_music_index_music.png │ │ ├── ic_music_input_clean.png │ │ ├── ic_music_item_menu.png │ │ ├── ic_music_last_noimal.png │ │ ├── ic_music_last_pre.png │ │ ├── ic_music_launcher.png │ │ ├── ic_music_lock_model_random_noimal.png │ │ ├── ic_music_lock_model_random_pre.png │ │ ├── ic_music_model_loop_noimal.png │ │ ├── ic_music_model_loop_pre.png │ │ ├── ic_music_model_signle_noimal.png │ │ ├── ic_music_model_signle_pre.png │ │ ├── ic_music_next_noimal.png │ │ ├── ic_music_next_pre.png │ │ ├── ic_music_pause_noimal.png │ │ ├── ic_music_pause_pre.png │ │ ├── ic_music_play_alll.png │ │ ├── ic_music_play_noimal.png │ │ ├── ic_music_play_pre.png │ │ ├── ic_music_private.png │ │ ├── ic_music_search.png │ │ ├── ic_music_search_mini.png │ │ ├── ic_music_search_remove.png │ │ ├── ic_music_support.png │ │ ├── ic_music_title_bar_back_noimal.png │ │ ├── ic_music_title_bar_back_pre.png │ │ ├── ic_music_update_top_bg.webp │ │ ├── ic_setting_tips1.png │ │ ├── ic_setting_tips2.png │ │ ├── ic_setting_tips3.png │ │ ├── ic_setting_tips4.png │ │ ├── ic_video_pause.png │ │ ├── ic_video_play.png │ │ ├── index_mine_shadow_bg.9.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 │ │ └── music_ic_dialog_close.png │ │ ├── drawable │ │ ├── lib_item_foreground.xml │ │ ├── music_bg_white_radius_8.xml │ │ ├── music_bottom_seek_progress.xml │ │ ├── music_bottom_seek_thumb.xml │ │ ├── music_diallog_bottom_bg_white_style.xml │ │ ├── music_dialog_loading_bg.xml │ │ ├── music_download_progressbar.xml │ │ ├── music_index_item_list_bottom_bg.xml │ │ ├── music_index_item_list_top_bg.xml │ │ ├── music_index_title_line.xml │ │ ├── music_left_tab_selector.xml │ │ ├── music_list_scroll_bar.xml │ │ ├── music_loading_anim.xml │ │ ├── music_player_collect_selector.xml │ │ ├── music_player_collect_white_selector.xml │ │ ├── music_player_last_selector.xml │ │ ├── music_player_next_selector.xml │ │ ├── music_player_pause_selector.xml │ │ ├── music_player_play_selector.xml │ │ ├── music_right_tab_selector.xml │ │ ├── music_search_input_bg.xml │ │ ├── music_search_tag_bg.xml │ │ ├── music_song_play_bg.xml │ │ ├── music_tags_driver_trans.xml │ │ ├── music_title_back_white_selector.xml │ │ ├── video_btn_ledt_round_bg.xml │ │ ├── video_details_item_icon_bg.xml │ │ ├── video_details_item_text_bg.xml │ │ ├── video_index_item_list_bottom_bg.xml │ │ ├── video_index_pager_moive_item_bottom_bg.xml │ │ ├── video_item_ab_bg.xml │ │ ├── video_item_tag_bg.xml │ │ ├── video_pager_item_text_bg.xml │ │ ├── video_pager_text_durtion_transparent.xml │ │ └── video_popup_menu_bg.xml │ │ ├── layout │ │ ├── activity_main.xml │ │ ├── activity_test.xml │ │ ├── activity_version_update.xml │ │ ├── music_activity_album_center.xml │ │ ├── music_activity_lock.xml │ │ ├── music_activity_music_list.xml │ │ ├── music_activity_player.xml │ │ ├── music_activity_search.xml │ │ ├── music_details_item_list.xml │ │ ├── music_dialog_details.xml │ │ ├── music_dialog_progress_layout.xml │ │ ├── music_dialog_quire_layout.xml │ │ ├── music_fragment_index_music.xml │ │ ├── music_index_list_album_item.xml │ │ ├── music_index_list_default_item.xml │ │ ├── music_index_list_more_item.xml │ │ ├── music_index_list_music_item.xml │ │ ├── music_index_list_title_item.xml │ │ ├── music_item_empty_list.xml │ │ ├── music_item_local_music_list.xml │ │ ├── music_item_music_list.xml │ │ ├── music_unknown_layout.xml │ │ ├── music_view_list_empty.xml │ │ ├── video_activity_video_list.xml │ │ ├── video_details_head_layout.xml │ │ ├── video_details_header_layout.xml │ │ ├── video_details_item_video.xml │ │ ├── video_details_video_title.xml │ │ ├── video_fragment_index_video.xml │ │ ├── video_index_video_banner.xml │ │ ├── video_index_video_card.xml │ │ ├── video_index_video_title.xml │ │ ├── video_index_video_video.xml │ │ ├── video_pager_item.xml │ │ ├── video_pager_transforme.xml │ │ ├── video_player_activity.xml │ │ └── video_popup_window_layout.xml │ │ ├── values-v17 │ │ └── styles.xml │ │ ├── values-v19 │ │ └── styles.xml │ │ ├── values-zh-rCN │ │ └── strings.xml │ │ ├── values │ │ ├── attrs.xml │ │ ├── colors.xml │ │ ├── ids.xml │ │ ├── integers.xml │ │ ├── strings.xml │ │ └── styles.xml │ │ └── xml │ │ └── file_paths.xml │ └── test │ └── java │ └── com │ └── yc │ └── liaolive │ └── ExampleUnitTest.java ├── bintray.gradle ├── build.gradle ├── config.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── music-player ├── .gitignore ├── build.gradle ├── musiczip.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── music │ │ └── player │ │ └── lib │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── music │ │ │ └── player │ │ │ └── lib │ │ │ ├── adapter │ │ │ ├── MusicAlarmAdapter.java │ │ │ ├── MusicPlayerListAdapter.java │ │ │ └── base │ │ │ │ ├── BaseAdapter.java │ │ │ │ ├── OnItemClickListener.java │ │ │ │ ├── OnItemLongClickListener.java │ │ │ │ ├── OnLoadMoreListener.java │ │ │ │ └── OnLoadMorePresenter.java │ │ │ ├── bean │ │ │ ├── BaseAudioInfo.java │ │ │ ├── MusicAlarmSetting.java │ │ │ ├── MusicLrcRow.java │ │ │ ├── MusicStatus.java │ │ │ └── SearchHistroy.java │ │ │ ├── constants │ │ │ └── MusicConstants.java │ │ │ ├── iinterface │ │ │ ├── MusicLrcRowParser.java │ │ │ ├── MusicOrientationListener.java │ │ │ └── MusicPlayerPresenter.java │ │ │ ├── listener │ │ │ ├── MusicAnimatorListener.java │ │ │ ├── MusicInitializeCallBack.java │ │ │ ├── MusicJukeBoxStatusListener.java │ │ │ ├── MusicLrcParserCallBack.java │ │ │ ├── MusicLrcViewListener.java │ │ │ ├── MusicOnItemClickListener.java │ │ │ ├── MusicOnItemStatusListener.java │ │ │ ├── MusicPlayerEventListener.java │ │ │ ├── MusicPlayerInfoListener.java │ │ │ └── MusicWindowClickListener.java │ │ │ ├── manager │ │ │ ├── MusicAudioFocusManager.java │ │ │ ├── MusicPlayerManager.java │ │ │ ├── MusicSubjectObservable.java │ │ │ ├── MusicWindowManager.java │ │ │ └── SqlLiteCacheManager.java │ │ │ ├── model │ │ │ ├── MusicDefaultLrcParser.java │ │ │ ├── MusicGlideCircleTransform.java │ │ │ ├── MusicItemSpaceDecoration.java │ │ │ ├── MusicPlayerConfig.java │ │ │ ├── SQLCollectHelper.java │ │ │ ├── SQLHistroyHelper.java │ │ │ └── SQLSearchHelper.java │ │ │ ├── service │ │ │ ├── MusicPlayerBinder.java │ │ │ └── MusicPlayerService.java │ │ │ ├── util │ │ │ ├── Logger.java │ │ │ ├── MusicACache.java │ │ │ ├── MusicAlbumCoverTask.java │ │ │ ├── MusicClickControler.java │ │ │ ├── MusicColorUtils.java │ │ │ ├── MusicImageCache.java │ │ │ ├── MusicRomUtil.java │ │ │ ├── MusicStatusUtils.java │ │ │ └── MusicUtils.java │ │ │ └── view │ │ │ ├── CircleProgressBar.java │ │ │ ├── MusicArcMenuView.java │ │ │ ├── MusicCommentTitleView.java │ │ │ ├── MusicCustomTextView.java │ │ │ ├── MusicFanLayout.java │ │ │ ├── MusicJukeBoxBackgroundLayout.java │ │ │ ├── MusicJukeBoxBackgroundLayout1.java │ │ │ ├── MusicJukeBoxCoverPager.java │ │ │ ├── MusicJukeBoxView.java │ │ │ ├── MusicJukeBoxViewSmall.java │ │ │ ├── MusicLrcView.java │ │ │ ├── MusicMarqueeTextView.java │ │ │ ├── MusicPagerAdapter.java │ │ │ ├── MusicPlayerWindow.java │ │ │ ├── MusicRoundImageView.java │ │ │ ├── MusicSildingLayout.java │ │ │ ├── MusicViewPager.java │ │ │ ├── MusicViewPagerScroller.java │ │ │ ├── MusicWindowPlayer.java │ │ │ ├── MusicWindowTrash.java │ │ │ ├── blur │ │ │ ├── impl │ │ │ │ ├── AndroidStockBlurImpl.java │ │ │ │ ├── AndroidXBlurImpl.java │ │ │ │ ├── BlurImpl.java │ │ │ │ ├── EmptyBlurImpl.java │ │ │ │ └── SupportLibraryBlurImpl.java │ │ │ └── widget │ │ │ │ └── RuntimeBlurView.java │ │ │ └── dialog │ │ │ ├── MusicAlarmSettingDialog.java │ │ │ └── MusicPlayerListDialog.java │ └── res │ │ ├── anim │ │ ├── music_bottom_menu_enter.xml │ │ ├── music_bottom_menu_exit.xml │ │ ├── music_cover_alpha_in.xml │ │ ├── music_shake.xml │ │ └── music_shake_cycle_3.xml │ │ ├── drawable-xxhdpi │ │ ├── ic_music_alarm_bg_long.9.png │ │ ├── ic_music_alarm_bg_long_pre.9.png │ │ ├── ic_music_alarm_bg_moon.9.png │ │ ├── ic_music_alarm_bg_moon_pre.9.png │ │ ├── ic_music_alarm_mini.png │ │ ├── ic_music_alarm_noimal.png │ │ ├── ic_music_alarm_pre.png │ │ ├── ic_music_collect_noimal.png │ │ ├── ic_music_collect_pre.png │ │ ├── ic_music_collect_white_noimal.png │ │ ├── ic_music_cover_hand.png │ │ ├── ic_music_default_cover.png │ │ ├── ic_music_disc.png │ │ ├── ic_music_disc_bg_mini.png │ │ ├── ic_music_disc_blackground.png │ │ ├── ic_music_disc_top_line.png │ │ ├── ic_music_juke_default_cover.png │ │ ├── ic_music_menu_noimal.png │ │ ├── ic_music_menu_pre.png │ │ ├── ic_music_mini_close.png │ │ ├── ic_music_mini_last_noimal.png │ │ ├── ic_music_mini_next_noimal.png │ │ ├── ic_music_mini_pause_noimal.png │ │ ├── ic_music_mini_play_noimal.png │ │ ├── ic_music_push.png │ │ ├── ic_music_trash.png │ │ └── ic_music_window_close.png │ │ ├── drawable │ │ ├── music_default_dialog_bg.xml │ │ ├── music_default_music_bg.xml │ │ ├── music_player_alarm_item_selector.xml │ │ ├── music_player_alarm_selector.xml │ │ ├── music_player_menu_selector.xml │ │ └── music_top_title_bg.xml │ │ ├── layout │ │ ├── music_comment_title_layout.xml │ │ ├── music_dialog_alarm_setting.xml │ │ ├── music_dialog_player_list.xml │ │ ├── music_item_player_list.xml │ │ ├── music_notify_big_controller.xml │ │ ├── music_notify_default_controller.xml │ │ ├── music_player_window.xml │ │ ├── music_re_item_alarm_setting.xml │ │ ├── music_trash_window.xml │ │ ├── music_view_cover_pager.xml │ │ ├── music_view_cover_pager2.xml │ │ ├── music_view_discview_layout.xml │ │ ├── music_view_small_disc.xml │ │ └── music_window_player.xml │ │ ├── values-v19 │ │ └── dimens.xml │ │ ├── values-zh-rCN │ │ └── strings.xml │ │ └── values │ │ ├── attrs.xml │ │ ├── dimens.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── music │ └── player │ └── lib │ └── ExampleUnitTest.java ├── settings.gradle └── video-player ├── .gitignore ├── build.gradle ├── proguard-rules.pro ├── src ├── androidTest │ └── java │ │ └── com │ │ └── video │ │ └── player │ │ └── lib │ │ └── ExampleInstrumentedTest.java ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── video │ │ │ └── player │ │ │ └── lib │ │ │ ├── base │ │ │ ├── BaseCoverController.java │ │ │ ├── BaseGestureController.java │ │ │ ├── BaseVideoController.java │ │ │ ├── BaseVideoPlayer.java │ │ │ └── IMediaPlayer.java │ │ │ ├── bean │ │ │ └── VideoParams.java │ │ │ ├── constants │ │ │ └── VideoConstants.java │ │ │ ├── controller │ │ │ ├── DefaultCoverController.java │ │ │ ├── DefaultGestureController.java │ │ │ ├── DefaultVideoController.java │ │ │ ├── DetailsCoverController.java │ │ │ ├── VideoMiniWindowController.java │ │ │ └── VideoWindowController.java │ │ │ ├── listener │ │ │ ├── OnVideoEventListener.java │ │ │ ├── VideoOrientationListener.java │ │ │ └── VideoPlayerEventListener.java │ │ │ ├── manager │ │ │ ├── MediaPlayerPresenter.java │ │ │ ├── ThreadPoolManager.java │ │ │ ├── VideoAudioFocusManager.java │ │ │ ├── VideoPlayerManager.java │ │ │ └── VideoWindowManager.java │ │ │ ├── utils │ │ │ ├── Logger.java │ │ │ └── VideoUtils.java │ │ │ └── view │ │ │ ├── VideoDetailsPlayerTrackView.java │ │ │ ├── VideoPlayerTrackView.java │ │ │ ├── VideoRoundImageView.java │ │ │ ├── VideoShapeTextView.java │ │ │ ├── VideoTextrueProvider.java │ │ │ ├── VideoTextureView.java │ │ │ └── VideoWindowPlayerGroup.java │ └── res │ │ ├── drawable-xxhdpi │ │ ├── ic_player_loading_back_bg.webp │ │ ├── ic_video_back_white.png │ │ ├── ic_video_brightness.png │ │ ├── ic_video_controller_menu.png │ │ ├── ic_video_controller_pause.png │ │ ├── ic_video_controller_play.png │ │ ├── ic_video_cover_play.png │ │ ├── ic_video_default_cover.png │ │ ├── ic_video_full_scrrent.png │ │ ├── ic_video_gesture_last.png │ │ ├── ic_video_gesture_next.png │ │ ├── ic_video_loading_1.png │ │ ├── ic_video_loading_10.png │ │ ├── ic_video_loading_11.png │ │ ├── ic_video_loading_12.png │ │ ├── ic_video_loading_2.png │ │ ├── ic_video_loading_3.png │ │ ├── ic_video_loading_4.png │ │ ├── ic_video_loading_5.png │ │ ├── ic_video_loading_6.png │ │ ├── ic_video_loading_7.png │ │ ├── ic_video_loading_8.png │ │ ├── ic_video_loading_9.png │ │ ├── ic_video_sound.png │ │ ├── ic_video_sound_off.png │ │ ├── ic_video_tiny_close.png │ │ ├── ic_video_title_bar_back_noimal.png │ │ ├── ic_video_title_bar_back_pre.png │ │ ├── ic_video_window.png │ │ └── ic_video_window_scrrent.png │ │ ├── drawable │ │ ├── video_bottom_progress.xml │ │ ├── video_bottom_seek_progress.xml │ │ ├── video_bottom_seek_thumb.xml │ │ ├── video_controllect_bottom_bg.xml │ │ ├── video_controllect_top_bg.xml │ │ ├── video_controller_back_white_selector.xml │ │ ├── video_cover_bottom_bg.xml │ │ ├── video_loading_anim.xml │ │ ├── video_regulate_pogress_bg.xml │ │ ├── video_regulate_progress.xml │ │ ├── video_seek_thumb_normal.xml │ │ ├── video_seek_thumb_pressed.xml │ │ ├── video_text_button_bg.xml │ │ └── video_text_play_bg.xml │ │ ├── layout │ │ ├── video_default_controller_layout.xml │ │ ├── video_default_cover_controller_layout.xml │ │ ├── video_default_track_layout.xml │ │ ├── video_details_cover_controller_layout.xml │ │ ├── video_full_plsyer_gesture_layout.xml │ │ ├── video_mini_window_controller_layout.xml │ │ └── video_window_controller_layout.xml │ │ ├── values-v19 │ │ └── dimens.xml │ │ ├── values-zh-rCN │ │ └── strings.xml │ │ └── values │ │ ├── attrs.xml │ │ ├── color.xml │ │ ├── dimens.xml │ │ ├── ids.xml │ │ ├── integers.xml │ │ └── strings.xml └── test │ └── java │ └── com │ └── video │ └── player │ └── lib │ └── ExampleUnitTest.java └── videozip.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | /local.properties 3 | /build 4 | /captures 5 | .idea/ 6 | .gradle/ -------------------------------------------------------------------------------- /Doc/JavaDoc/music-player-lib/javadoc/com/music/player/lib/adapter/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | com.music.player.lib.adapter (music-player-lib API) 8 | 9 | 10 | 11 | 12 | 13 |

com.music.player.lib.adapter

14 |
15 |

16 | 20 |
21 | 22 | 23 | -------------------------------------------------------------------------------- /Doc/JavaDoc/music-player-lib/javadoc/com/music/player/lib/bean/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | com.music.player.lib.bean (music-player-lib API) 8 | 9 | 10 | 11 | 12 | 13 |

com.music.player.lib.bean

14 |
15 |

16 | 23 |
24 | 25 | 26 | -------------------------------------------------------------------------------- /Doc/JavaDoc/music-player-lib/javadoc/com/music/player/lib/constants/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | com.music.player.lib.constants (music-player-lib API) 8 | 9 | 10 | 11 | 12 | 13 |

com.music.player.lib.constants

14 |
15 |

接口

16 | 19 |
20 | 21 | 22 | -------------------------------------------------------------------------------- /Doc/JavaDoc/music-player-lib/javadoc/com/music/player/lib/service/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | com.music.player.lib.service (music-player-lib API) 8 | 9 | 10 | 11 | 12 | 13 |

com.music.player.lib.service

14 |
15 |

16 | 20 |
21 | 22 | 23 | -------------------------------------------------------------------------------- /Doc/JavaDoc/music-player-lib/javadoc/com/music/player/lib/view/dialog/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | com.music.player.lib.view.dialog (music-player-lib API) 8 | 9 | 10 | 11 | 12 | 13 |

com.music.player.lib.view.dialog

14 |
15 |

接口

16 | 19 |

20 | 24 |
25 | 26 | 27 | -------------------------------------------------------------------------------- /Doc/JavaDoc/music-player-lib/javadoc/package-list: -------------------------------------------------------------------------------- 1 | com.music.player.lib.adapter 2 | com.music.player.lib.adapter.base 3 | com.music.player.lib.bean 4 | com.music.player.lib.constants 5 | com.music.player.lib.iinterface 6 | com.music.player.lib.listener 7 | com.music.player.lib.manager 8 | com.music.player.lib.model 9 | com.music.player.lib.service 10 | com.music.player.lib.util 11 | com.music.player.lib.view 12 | com.music.player.lib.view.dialog 13 | -------------------------------------------------------------------------------- /Doc/JavaDoc/music-player-lib/javadoc/script.js: -------------------------------------------------------------------------------- 1 | function show(type) 2 | { 3 | count = 0; 4 | for (var key in methods) { 5 | var row = document.getElementById(key); 6 | if ((methods[key] & type) != 0) { 7 | row.style.display = ''; 8 | row.className = (count++ % 2) ? rowColor : altColor; 9 | } 10 | else 11 | row.style.display = 'none'; 12 | } 13 | updateTabs(type); 14 | } 15 | 16 | function updateTabs(type) 17 | { 18 | for (var value in tabs) { 19 | var sNode = document.getElementById(tabs[value][0]); 20 | var spanNode = sNode.firstChild; 21 | if (value == type) { 22 | sNode.className = activeTableTab; 23 | spanNode.innerHTML = tabs[value][1]; 24 | } 25 | else { 26 | sNode.className = tableTab; 27 | spanNode.innerHTML = "" + tabs[value][1] + ""; 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Doc/JavaDoc/video-player-lib/javadoc/com/video/player/lib/bean/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | com.video.player.lib.bean (video-player-lib API) 8 | 9 | 10 | 11 | 12 | 13 |

com.video.player.lib.bean

14 |
15 |

16 | 19 |
20 | 21 | 22 | -------------------------------------------------------------------------------- /Doc/JavaDoc/video-player-lib/javadoc/com/video/player/lib/constants/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | com.video.player.lib.constants (video-player-lib API) 8 | 9 | 10 | 11 | 12 | 13 |

com.video.player.lib.constants

14 |
15 |

接口

16 | 19 |
20 | 21 | 22 | -------------------------------------------------------------------------------- /Doc/JavaDoc/video-player-lib/javadoc/com/video/player/lib/utils/package-frame.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | com.video.player.lib.utils (video-player-lib API) 8 | 9 | 10 | 11 | 12 | 13 |

com.video.player.lib.utils

14 |
15 |

16 | 20 |
21 | 22 | 23 | -------------------------------------------------------------------------------- /Doc/JavaDoc/video-player-lib/javadoc/package-list: -------------------------------------------------------------------------------- 1 | com.video.player.lib.base 2 | com.video.player.lib.bean 3 | com.video.player.lib.constants 4 | com.video.player.lib.controller 5 | com.video.player.lib.listener 6 | com.video.player.lib.manager 7 | com.video.player.lib.utils 8 | com.video.player.lib.view 9 | -------------------------------------------------------------------------------- /Doc/JavaDoc/video-player-lib/javadoc/script.js: -------------------------------------------------------------------------------- 1 | function show(type) 2 | { 3 | count = 0; 4 | for (var key in methods) { 5 | var row = document.getElementById(key); 6 | if ((methods[key] & type) != 0) { 7 | row.style.display = ''; 8 | row.className = (count++ % 2) ? rowColor : altColor; 9 | } 10 | else 11 | row.style.display = 'none'; 12 | } 13 | updateTabs(type); 14 | } 15 | 16 | function updateTabs(type) 17 | { 18 | for (var value in tabs) { 19 | var sNode = document.getElementById(tabs[value][0]); 20 | var spanNode = sNode.firstChild; 21 | if (value == type) { 22 | sNode.className = activeTableTab; 23 | spanNode.innerHTML = tabs[value][1]; 24 | } 25 | else { 26 | sNode.className = tableTab; 27 | spanNode.innerHTML = "" + tabs[value][1] + ""; 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Doc/Maven仓库搭建/Nexus/nexus-2.14.8-01-bundle/sonatype-work/nexus/conf/logback.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Sonatype Nexus (TM) Open Source Version 3 | # Copyright (c) 2008-present Sonatype, Inc. 4 | # All rights reserved. Includes the third-party code listed at http://links.sonatype.com/products/nexus/oss/attributions. 5 | # 6 | # This program and the accompanying materials are made available under the terms of the Eclipse Public License Version 1.0, 7 | # which accompanies this distribution and is available at http://www.eclipse.org/legal/epl-v10.html. 8 | # 9 | # Sonatype Nexus (TM) Professional Version is available from Sonatype, Inc. "Sonatype" and "Sonatype Nexus" are trademarks 10 | # of Sonatype, Inc. Apache Maven is a trademark of the Apache Software Foundation. M2eclipse is a trademark of the 11 | # Eclipse Foundation. All other trademarks are the property of their respective owners. 12 | # 13 | 14 | root.level=INFO 15 | 16 | appender.pattern=%d{"yyyy-MM-dd HH:mm:ss,SSSZ"} %-5p [%thread] %X{userId} %c - %m%n 17 | appender.file=${nexus-work}/logs/nexus.log 18 | -------------------------------------------------------------------------------- /Doc/Maven仓库搭建/Nexus/nexus-2.14.8-01-bundle/sonatype-work/nexus/conf/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Doc/Maven仓库搭建/Nexus/nexus-2.14.8-01-bundle/sonatype-work/nexus/conf/lvo-plugin.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 17 | 2.8.0 18 | true 19 | 20 | 21 | nexus-oss 22 | http-get-properties 23 | http://links.sonatype.com/products/nexus/oss/versions 24 | 25 | 26 | nexus-pro 27 | http-get-properties 28 | http://links.sonatype.com/products/nexus/pro/versions 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /Doc/Maven仓库搭建/Nexus/nexus-2.14.8-01-bundle/sonatype-work/nexus/conf/security-configuration.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 2.0.8 4 | true 5 | anonymous 6 | {h+zitTqOwfwHfbKrTQNDQsaPyNIfzDEKsXLli5b471g=} 7 | 8 | XmlAuthenticatingRealm 9 | XmlAuthorizingRealm 10 | 11 | 1024 12 | 13 | -------------------------------------------------------------------------------- /Doc/Maven仓库搭建/Nexus/nexus-2.14.8-01-bundle/sonatype-work/nexus/logs/nexus.log: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/Doc/Maven仓库搭建/Nexus/nexus-2.14.8-01-bundle/sonatype-work/nexus/logs/nexus.log -------------------------------------------------------------------------------- /Doc/Maven仓库搭建/Nexus/nexus-2.14.8-01-bundle/sonatype-work/nexus/logs/request.log: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/Doc/Maven仓库搭建/Nexus/nexus-2.14.8-01-bundle/sonatype-work/nexus/logs/request.log -------------------------------------------------------------------------------- /Doc/Maven仓库搭建/步骤截图/Maven登录.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/Doc/Maven仓库搭建/步骤截图/Maven登录.png -------------------------------------------------------------------------------- /Doc/Maven仓库搭建/步骤截图/Maven账号默认密码修改.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/Doc/Maven仓库搭建/步骤截图/Maven账号默认密码修改.png -------------------------------------------------------------------------------- /Doc/Maven仓库搭建/步骤截图/Nexus启动默认界面.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/Doc/Maven仓库搭建/步骤截图/Nexus启动默认界面.png -------------------------------------------------------------------------------- /Doc/Maven仓库搭建/步骤截图/Nexus端口号修改.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/Doc/Maven仓库搭建/步骤截图/Nexus端口号修改.png -------------------------------------------------------------------------------- /Doc/Maven仓库搭建/步骤截图/Nexus配置完成.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/Doc/Maven仓库搭建/步骤截图/Nexus配置完成.png -------------------------------------------------------------------------------- /Doc/Maven仓库搭建/步骤截图/nexus安装完成1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/Doc/Maven仓库搭建/步骤截图/nexus安装完成1.png -------------------------------------------------------------------------------- /Doc/Maven仓库搭建/步骤截图/nexus目录.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/Doc/Maven仓库搭建/步骤截图/nexus目录.png -------------------------------------------------------------------------------- /Doc/Maven仓库搭建/步骤截图/发布代码到Nexus成功.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/Doc/Maven仓库搭建/步骤截图/发布代码到Nexus成功.png -------------------------------------------------------------------------------- /Doc/Maven仓库搭建/步骤截图/木块本地Maven仓库配置-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/Doc/Maven仓库搭建/步骤截图/木块本地Maven仓库配置-2.png -------------------------------------------------------------------------------- /Doc/Maven仓库搭建/步骤截图/木块本地Maven仓库配置.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/Doc/Maven仓库搭建/步骤截图/木块本地Maven仓库配置.png -------------------------------------------------------------------------------- /Doc/Maven仓库搭建/步骤截图/模块打包到本地Maven仓库成功.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/Doc/Maven仓库搭建/步骤截图/模块打包到本地Maven仓库成功.png -------------------------------------------------------------------------------- /Doc/Maven仓库搭建/步骤截图/模块编译到Maven完成.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/Doc/Maven仓库搭建/步骤截图/模块编译到Maven完成.png -------------------------------------------------------------------------------- /Doc/aar/music-player-1.0.4.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/Doc/aar/music-player-1.0.4.aar -------------------------------------------------------------------------------- /Doc/aar/video-player-1.0.4.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/Doc/aar/video-player-1.0.4.aar -------------------------------------------------------------------------------- /Doc/screenshot/20190417_162033.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/Doc/screenshot/20190417_162033.jpg -------------------------------------------------------------------------------- /Doc/screenshot/20190417_162126.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/Doc/screenshot/20190417_162126.jpg -------------------------------------------------------------------------------- /Doc/screenshot/20190417_162237.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/Doc/screenshot/20190417_162237.jpg -------------------------------------------------------------------------------- /Doc/screenshot/20190417_162345.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/Doc/screenshot/20190417_162345.jpg -------------------------------------------------------------------------------- /Doc/screenshot/20190417_162453.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/Doc/screenshot/20190417_162453.jpg -------------------------------------------------------------------------------- /Doc/screenshot/20190418_135654.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/Doc/screenshot/20190418_135654.jpg -------------------------------------------------------------------------------- /Doc/screenshot/20190418_135655.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/Doc/screenshot/20190418_135655.jpg -------------------------------------------------------------------------------- /Doc/screenshot/imusic_code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/Doc/screenshot/imusic_code.png -------------------------------------------------------------------------------- /Doc/screenshot/music_player.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/Doc/screenshot/music_player.png -------------------------------------------------------------------------------- /Doc/screenshot/videp_player.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/Doc/screenshot/videp_player.png -------------------------------------------------------------------------------- /Doc/video/Music.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/Doc/video/Music.gif -------------------------------------------------------------------------------- /Doc/video/Video.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/Doc/video/Video.gif -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | /music.keystore 3 | /tinkerpatch.gradle -------------------------------------------------------------------------------- /app/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /app/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Wed Apr 17 16:09: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 | -------------------------------------------------------------------------------- /app/imusicPublish/release/iMusic-1.1.9.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/imusicPublish/release/iMusic-1.1.9.apk -------------------------------------------------------------------------------- /app/imusicPublish/release/output-metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "artifactType": { 4 | "type": "APK", 5 | "kind": "Directory" 6 | }, 7 | "applicationId": "com.android.imusic", 8 | "variantName": "imusicPublishRelease", 9 | "elements": [ 10 | { 11 | "type": "SINGLE", 12 | "filters": [], 13 | "properties": [], 14 | "versionCode": 101090, 15 | "versionName": "1.1.9", 16 | "enabled": true, 17 | "outputFile": "app-imusic-publish-release.apk" 18 | } 19 | ] 20 | } -------------------------------------------------------------------------------- /app/local.properties: -------------------------------------------------------------------------------- 1 | ## This file is automatically generated by Android Studio. 2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED! 3 | # 4 | # This file must *NOT* be checked into Version Control Systems, 5 | # as it contains information specific to your local configuration. 6 | # 7 | # Location of the SDK. This is only used by Gradle. 8 | # For customization when using a Version Control System, please read the 9 | # header note. 10 | #Wed Apr 17 16:08:57 CST 2019 11 | ndk.dir=D\:\\Android\\sdk\\ndk-bundle 12 | sdk.dir=D\:\\Android\\sdk 13 | -------------------------------------------------------------------------------- /app/src/androidTest/java/com/yc/liaolive/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package com.yc.liaolive; 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.yc.liaolive", appContext.getPackageName()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/src/main/java/com/android/imusic/base/BaseContract.java: -------------------------------------------------------------------------------- 1 | package com.android.imusic.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 | */ 27 | void showLoading(); 28 | 29 | /** 30 | * 错误、为空回调 31 | * @param code 0:为空 -1:失败 32 | * @param errorMsg 描述信息 33 | */ 34 | void showError(int code,String errorMsg); 35 | } 36 | } -------------------------------------------------------------------------------- /app/src/main/java/com/android/imusic/music/adapter/holder/IndexAlbumViewHolder.java: -------------------------------------------------------------------------------- 1 | package com.android.imusic.music.adapter.holder; 2 | 3 | import android.os.Build; 4 | import android.support.v7.widget.RecyclerView; 5 | import android.view.View; 6 | import android.widget.ImageView; 7 | import android.widget.TextView; 8 | import com.android.imusic.R; 9 | import com.android.imusic.music.view.LayoutProvider; 10 | import com.music.player.lib.util.MusicUtils; 11 | 12 | /** 13 | * hty_Yuye@Outlook.com 14 | * 2019/3/23 15 | */ 16 | 17 | public class IndexAlbumViewHolder extends RecyclerView.ViewHolder { 18 | 19 | public ImageView imageCover; 20 | public TextView textTitle; 21 | public TextView textAnchor; 22 | public View itemRootView; 23 | 24 | public IndexAlbumViewHolder(View itemView) { 25 | super(itemView); 26 | imageCover = (ImageView) itemView.findViewById(R.id.view_item_cover); 27 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 28 | imageCover.setOutlineProvider(new LayoutProvider(MusicUtils.getInstance().dpToPxInt(imageCover.getContext(),5f))); 29 | } 30 | textTitle = (TextView) itemView.findViewById(R.id.view_item_title); 31 | textAnchor = (TextView) itemView.findViewById(R.id.view_item_anchor); 32 | itemRootView = itemView.findViewById(R.id.item_root_view); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /app/src/main/java/com/android/imusic/music/adapter/holder/IndexDefaultViewHolder.java: -------------------------------------------------------------------------------- 1 | package com.android.imusic.music.adapter.holder; 2 | 3 | import android.support.v7.widget.RecyclerView; 4 | import android.view.View; 5 | import android.widget.ImageView; 6 | import android.widget.TextView; 7 | import com.android.imusic.R; 8 | 9 | /** 10 | * hty_Yuye@Outlook.com 11 | * 2019/3/24 12 | */ 13 | 14 | public class IndexDefaultViewHolder extends RecyclerView.ViewHolder { 15 | 16 | public ImageView imageCover; 17 | public TextView textTitle; 18 | public TextView textDesp; 19 | public View itemLine,playingStatus; 20 | 21 | public IndexDefaultViewHolder(View itemView) { 22 | super(itemView); 23 | imageCover = (ImageView) itemView.findViewById(R.id.view_item_icon); 24 | textTitle = (TextView) itemView.findViewById(R.id.view_item_title); 25 | textDesp = (TextView) itemView.findViewById(R.id.view_item_desp); 26 | itemLine = itemView.findViewById(R.id.view_item_line); 27 | playingStatus = itemView.findViewById(R.id.view_playing_status); 28 | } 29 | } -------------------------------------------------------------------------------- /app/src/main/java/com/android/imusic/music/adapter/holder/IndexMusicViewHolder.java: -------------------------------------------------------------------------------- 1 | package com.android.imusic.music.adapter.holder; 2 | 3 | import android.os.Build; 4 | import android.support.v7.widget.RecyclerView; 5 | import android.view.View; 6 | import android.widget.ImageView; 7 | import android.widget.TextView; 8 | import com.android.imusic.R; 9 | import com.android.imusic.music.view.LayoutProvider; 10 | import com.music.player.lib.util.MusicUtils; 11 | 12 | /** 13 | * hty_Yuye@Outlook.com 14 | * 2019/3/23 15 | */ 16 | 17 | public class IndexMusicViewHolder extends RecyclerView.ViewHolder { 18 | 19 | public ImageView imageCover; 20 | public TextView textTitle; 21 | public TextView textAnchor; 22 | public View itemRootView; 23 | 24 | public IndexMusicViewHolder(View itemView) { 25 | super(itemView); 26 | imageCover = (ImageView) itemView.findViewById(R.id.view_item_cover); 27 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 28 | imageCover.setOutlineProvider(new LayoutProvider(MusicUtils.getInstance().dpToPxInt(imageCover.getContext(),5f))); 29 | } 30 | textTitle = (TextView) itemView.findViewById(R.id.view_item_title); 31 | textAnchor = (TextView) itemView.findViewById(R.id.view_item_anchor); 32 | itemRootView = itemView.findViewById(R.id.item_root_view); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /app/src/main/java/com/android/imusic/music/adapter/holder/IndexTitleViewHolder.java: -------------------------------------------------------------------------------- 1 | package com.android.imusic.music.adapter.holder; 2 | 3 | import android.support.v7.widget.RecyclerView; 4 | import android.view.View; 5 | import android.widget.TextView; 6 | import com.android.imusic.R; 7 | 8 | /** 9 | * hty_Yuye@Outlook.com 10 | * 2019/3/24 11 | */ 12 | 13 | public class IndexTitleViewHolder extends RecyclerView.ViewHolder { 14 | 15 | public TextView textTitle; 16 | 17 | public IndexTitleViewHolder(View itemView) { 18 | super(itemView); 19 | textTitle = (TextView) itemView.findViewById(R.id.item_music_title); 20 | } 21 | } -------------------------------------------------------------------------------- /app/src/main/java/com/android/imusic/music/adapter/holder/MusicListViewHolder.java: -------------------------------------------------------------------------------- 1 | package com.android.imusic.music.adapter.holder; 2 | 3 | import android.support.v7.widget.RecyclerView; 4 | import android.view.View; 5 | import android.widget.TextView; 6 | import com.android.imusic.R; 7 | import com.music.player.lib.view.MusicRoundImageView; 8 | 9 | /** 10 | * hty_Yuye@Outlook.com 11 | * 2019/3/23 12 | * Music List Holder 13 | */ 14 | 15 | public class MusicListViewHolder extends RecyclerView.ViewHolder { 16 | 17 | public MusicRoundImageView imageCover; 18 | public TextView textTitle; 19 | public TextView textAnchor; 20 | public View itemRootView,itemMenu,itemPlayingStatus,itemLine; 21 | 22 | public MusicListViewHolder(View itemView) { 23 | super(itemView); 24 | imageCover = (MusicRoundImageView) itemView.findViewById(R.id.view_item_cover); 25 | textTitle = (TextView) itemView.findViewById(R.id.view_item_title); 26 | textAnchor = (TextView) itemView.findViewById(R.id.view_item_anchor); 27 | itemRootView = itemView.findViewById(R.id.item_root_view); 28 | itemMenu = itemView.findViewById(R.id.view_btn_menu); 29 | itemPlayingStatus = itemView.findViewById(R.id.view_playing_status); 30 | itemLine = itemView.findViewById(R.id.view_item_line); 31 | } 32 | } -------------------------------------------------------------------------------- /app/src/main/java/com/android/imusic/music/bean/AlbumInfo.java: -------------------------------------------------------------------------------- 1 | package com.android.imusic.music.bean; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * TinyHung@Outlook.com 7 | * 2019/4/2 8 | */ 9 | 10 | public class AlbumInfo { 11 | 12 | private SingerInfo singer; 13 | private List list; 14 | 15 | public SingerInfo getSinger() { 16 | return singer; 17 | } 18 | 19 | public void setSinger(SingerInfo singer) { 20 | this.singer = singer; 21 | } 22 | 23 | public List getList() { 24 | return list; 25 | } 26 | 27 | public void setList(List list) { 28 | this.list = list; 29 | } 30 | 31 | @Override 32 | public String toString() { 33 | return "AlbumInfo{" + 34 | "singer=" + singer + 35 | ", list=" + list + 36 | '}'; 37 | } 38 | } -------------------------------------------------------------------------------- /app/src/main/java/com/android/imusic/music/bean/MusicDetails.java: -------------------------------------------------------------------------------- 1 | package com.android.imusic.music.bean; 2 | 3 | /** 4 | * hty_Yuye@Outlook.com 5 | * 2019/3/23 6 | */ 7 | 8 | public class MusicDetails { 9 | 10 | public static final int ITEM_ID_NEXT_PLAY = 1; 11 | public static final int ITEM_ID_SHARE = 2; 12 | public static final int ITEM_ID_DETELE = 3; 13 | public static final int ITEM_ID_COLLECT = 4; 14 | private long id; 15 | private int icon; 16 | private int itemID; 17 | private String title; 18 | private String path; 19 | 20 | public long getId() { 21 | return id; 22 | } 23 | 24 | public void setId(long id) { 25 | this.id = id; 26 | } 27 | 28 | public int getIcon() { 29 | return icon; 30 | } 31 | 32 | public void setIcon(int icon) { 33 | this.icon = icon; 34 | } 35 | 36 | public int getItemID() { 37 | return itemID; 38 | } 39 | 40 | public void setItemID(int itemID) { 41 | this.itemID = itemID; 42 | } 43 | 44 | public String getTitle() { 45 | return title; 46 | } 47 | 48 | public void setTitle(String title) { 49 | this.title = title; 50 | } 51 | 52 | public String getPath() { 53 | return path; 54 | } 55 | 56 | public void setPath(String path) { 57 | this.path = path; 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /app/src/main/java/com/android/imusic/music/bean/MusicParams.java: -------------------------------------------------------------------------------- 1 | package com.android.imusic.music.bean; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * Created by TinyHung@outlook.com 7 | * 2019/6/21 8 | * 音乐播放器界面跳转所需参数 9 | */ 10 | 11 | public class MusicParams { 12 | 13 | private List audioInfos; 14 | 15 | public List getAudioInfos() { 16 | return audioInfos; 17 | } 18 | 19 | public void setAudioInfos(List audioInfos) { 20 | this.audioInfos = audioInfos; 21 | } 22 | 23 | @Override 24 | public String toString() { 25 | return "MusicParams{" + 26 | "audioInfos=" + audioInfos + 27 | '}'; 28 | } 29 | } -------------------------------------------------------------------------------- /app/src/main/java/com/android/imusic/music/model/MusicHistroyEngin.java: -------------------------------------------------------------------------------- 1 | package com.android.imusic.music.model; 2 | 3 | import com.android.imusic.base.BaseEngin; 4 | import com.music.player.lib.manager.SqlLiteCacheManager; 5 | import com.android.imusic.net.OnResultCallBack; 6 | import com.music.player.lib.bean.BaseAudioInfo; 7 | import java.util.List; 8 | 9 | /** 10 | * hty_Yuye@Outlook.com 11 | * 2019/5/6 12 | * Histroy Music Model 13 | */ 14 | 15 | public class MusicHistroyEngin extends BaseEngin { 16 | 17 | /** 18 | * 获取历史播放记录 19 | * @param callBack 回调监听器 20 | */ 21 | public void getMusicsByHistroy(final OnResultCallBack callBack){ 22 | List audioInfos = SqlLiteCacheManager.getInstance().queryHistroyAudios(); 23 | if(null!=callBack){ 24 | if(null!=audioInfos&&audioInfos.size()>0){ 25 | callBack.onResponse(audioInfos); 26 | }else{ 27 | callBack.onError(API_RESULT_EMPTY,"播放记录空空如也"); 28 | } 29 | } 30 | } 31 | 32 | /** 33 | * 获取收藏记录 34 | * @param callBack 回调监听器 35 | */ 36 | public void getMusicsByCollect(final OnResultCallBack callBack){ 37 | List audioInfos = SqlLiteCacheManager.getInstance().queryCollectVideos(); 38 | if(null!=callBack){ 39 | if(null!=audioInfos&&audioInfos.size()>0){ 40 | callBack.onResponse(audioInfos); 41 | }else{ 42 | callBack.onError(API_RESULT_EMPTY,"收藏记录空空如也"); 43 | } 44 | } 45 | } 46 | } -------------------------------------------------------------------------------- /app/src/main/java/com/android/imusic/music/ui/contract/MusicHistroyContract.java: -------------------------------------------------------------------------------- 1 | package com.android.imusic.music.ui.contract; 2 | 3 | import com.android.imusic.base.BaseContract; 4 | import com.music.player.lib.bean.BaseAudioInfo; 5 | import java.util.List; 6 | 7 | /** 8 | * hty_Yuye@Outlook.com 9 | * 2019/5/6 10 | * Histroy Music Contract 11 | */ 12 | 13 | public interface MusicHistroyContract { 14 | 15 | interface View extends BaseContract.BaseView{ 16 | /** 17 | * 显示历史、收藏音频列表 18 | * @param data 本地历史、收藏音频列表 19 | */ 20 | void showAudios(List data); 21 | } 22 | 23 | interface Presenter extends BaseContract.BasePresenter{ 24 | 25 | /** 26 | * 获取历史播放记录 27 | */ 28 | void getHistroyAudios(); 29 | 30 | /** 31 | * 获取收藏记录 32 | */ 33 | void getCollectAudios(); 34 | } 35 | } -------------------------------------------------------------------------------- /app/src/main/java/com/android/imusic/music/ui/contract/MusicListContract.java: -------------------------------------------------------------------------------- 1 | package com.android.imusic.music.ui.contract; 2 | 3 | import android.content.Context; 4 | import com.android.imusic.base.BaseContract; 5 | import com.android.imusic.music.bean.AlbumInfo; 6 | import com.android.imusic.music.bean.AudioInfo; 7 | import com.music.player.lib.bean.BaseAudioInfo; 8 | import java.util.List; 9 | 10 | /** 11 | * hty_Yuye@Outlook.com 12 | * 2019/5/6 13 | * Index Contract 14 | */ 15 | 16 | public interface MusicListContract { 17 | 18 | interface View extends BaseContract.BaseView{ 19 | /** 20 | * 显示音频列表 21 | * @param data 音频列表 22 | */ 23 | void showAudios(List data); 24 | 25 | /** 26 | * 显示专辑信息 27 | * @param data 专辑信息 28 | */ 29 | void showAudiosFromTag(AlbumInfo data); 30 | 31 | /** 32 | * 显示本地音频列表 33 | * @param data 本地音频列表 34 | */ 35 | void showLocationAudios(List data); 36 | } 37 | 38 | interface Presenter extends BaseContract.BasePresenter{ 39 | 40 | /** 41 | * 获取主页的音频列表 42 | */ 43 | void getIndexAudios(); 44 | 45 | /** 46 | * 根据TAG ID获取音频列表 47 | * @param tagID tagID 48 | */ 49 | void getAudiosByTag(String tagID); 50 | 51 | /** 52 | * 查询本机音乐 53 | * @param context Activity上下文 54 | */ 55 | void getLocationAudios(Context context); 56 | } 57 | } -------------------------------------------------------------------------------- /app/src/main/java/com/android/imusic/music/ui/contract/MusicLocationContract.java: -------------------------------------------------------------------------------- 1 | package com.android.imusic.music.ui.contract; 2 | 3 | import android.content.Context; 4 | import com.android.imusic.base.BaseContract; 5 | import com.android.imusic.music.bean.AudioInfo; 6 | import java.util.List; 7 | 8 | /** 9 | * hty_Yuye@Outlook.com 10 | * 2019/5/6 11 | * Location Music Contract 12 | */ 13 | 14 | public interface MusicLocationContract { 15 | 16 | interface View extends BaseContract.BaseView{ 17 | /** 18 | * 显示音频列表 19 | * @param data 收藏、历史播放 记录 20 | */ 21 | void showAudios(List data); 22 | } 23 | 24 | interface Presenter extends BaseContract.BasePresenter{ 25 | 26 | /** 27 | * 查询本机音乐 28 | * @param context Activity上下文 29 | */ 30 | void getLocationAudios(Context context); 31 | } 32 | } -------------------------------------------------------------------------------- /app/src/main/java/com/android/imusic/music/ui/contract/MusicSearchContract.java: -------------------------------------------------------------------------------- 1 | package com.android.imusic.music.ui.contract; 2 | 3 | import com.android.imusic.base.BaseContract; 4 | import com.android.imusic.music.bean.SearchMusicData; 5 | import com.android.imusic.music.bean.SearchResult; 6 | import com.android.imusic.music.bean.SearchResultInfo; 7 | 8 | /** 9 | * hty_Yuye@Outlook.com 10 | * 2019/5/6 11 | * Index Contract 12 | */ 13 | 14 | public interface MusicSearchContract { 15 | 16 | interface View extends BaseContract.BaseView{ 17 | /**搜索结果音频列表 18 | * @param data 搜索结果 19 | */ 20 | void showResult(SearchResult data); 21 | 22 | /** 23 | * 音频详细信息 24 | * @param position ITEM Position 25 | * @param item 音频相关的ITEM 26 | * @param data 音频信息 27 | */ 28 | void showAudioData(int position,SearchResultInfo item,SearchMusicData data); 29 | 30 | /** 31 | * 获取音频信息失败、为空 32 | * @param code 错误码 33 | * @param errorMsg 描述信息 34 | */ 35 | void showAudioDataError(int code,String errorMsg); 36 | } 37 | 38 | interface Presenter extends BaseContract.BasePresenter{ 39 | /** 40 | * 根据Key搜索音乐 41 | * @param key key 42 | * @param page 页眉 43 | */ 44 | void queryMusicToKey(String key,int page); 45 | 46 | /** 47 | * 根据hashKey获取播放地址 48 | * @param position ITEM Position 49 | * @param item ITEM 50 | * @param hashKey Music hashKay 51 | */ 52 | void getPathBkKey(int position,SearchResultInfo item,String hashKey); 53 | } 54 | } -------------------------------------------------------------------------------- /app/src/main/java/com/android/imusic/music/view/LayoutProvider.java: -------------------------------------------------------------------------------- 1 | package com.android.imusic.music.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 | } -------------------------------------------------------------------------------- /app/src/main/java/com/android/imusic/net/Constants.java: -------------------------------------------------------------------------------- 1 | package com.android.imusic.net; 2 | 3 | /** 4 | * Created by TinyHung@outlook.com 5 | * 2020/1/5 6 | */ 7 | 8 | public interface Constants { 9 | 10 | //GITEE HOST 11 | String H5_GIT_HOST = "http://hty_yuye.gitee.io/openfile/"; 12 | } -------------------------------------------------------------------------------- /app/src/main/java/com/android/imusic/net/OnDownloadListener.java: -------------------------------------------------------------------------------- 1 | package com.android.imusic.net; 2 | 3 | import java.io.File; 4 | 5 | /** 6 | * Created by TinyHung@outlook.com 7 | * 2019/5/15 8 | * 文件下载监听 9 | */ 10 | 11 | public interface OnDownloadListener { 12 | 13 | /** 14 | * 下载百分比进度,回调在子线程 15 | * @param progress 百分比 16 | * @param totloLength 总长度 17 | * @param readLength 已下载长度 18 | */ 19 | void progress(int progress, long totloLength, long readLength); 20 | 21 | /** 22 | * 下载完成 23 | * @param file 文件信息 24 | */ 25 | void onSuccess(File file); 26 | 27 | /** 28 | * 下载失败 29 | * @param errorCode 错误码 30 | * @param message 描述信息 31 | */ 32 | void onError(int errorCode, String message); 33 | } 34 | -------------------------------------------------------------------------------- /app/src/main/java/com/android/imusic/net/OnResultCallBack.java: -------------------------------------------------------------------------------- 1 | package com.android.imusic.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 String.class; 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/android/imusic/net/bean/ResultList.java: -------------------------------------------------------------------------------- 1 | package com.android.imusic.net.bean; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * TinyHung@Outlook.com 7 | * 2019/3/13 8 | */ 9 | 10 | public class ResultList { 11 | 12 | private List list; 13 | 14 | public List getList() { 15 | return list; 16 | } 17 | 18 | public void setList(List list) { 19 | this.list = list; 20 | } 21 | 22 | @Override 23 | public String toString() { 24 | return "ResultList{" + 25 | "list=" + list + 26 | '}'; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /app/src/main/java/com/android/imusic/video/adapter/holder/VideoBannerViewHolder.java: -------------------------------------------------------------------------------- 1 | package com.android.imusic.video.adapter.holder; 2 | 3 | import android.support.v7.widget.RecyclerView; 4 | import android.view.View; 5 | import android.widget.FrameLayout; 6 | import android.widget.ImageView; 7 | import android.widget.TextView; 8 | import com.android.imusic.R; 9 | 10 | /** 11 | * hty_Yuye@Outlook.com 12 | * 2019/4/8 13 | */ 14 | 15 | public class VideoBannerViewHolder extends RecyclerView.ViewHolder { 16 | 17 | public ImageView itemBannerCover; 18 | public TextView itemBannerTag; 19 | public FrameLayout itemBannerRoot; 20 | 21 | public VideoBannerViewHolder(View itemView) { 22 | super(itemView); 23 | itemBannerCover = (ImageView) itemView.findViewById(R.id.video_item_banner); 24 | itemBannerTag = (TextView) itemView.findViewById(R.id.item_banner_tag); 25 | itemBannerRoot = (FrameLayout) itemView.findViewById(R.id.item_root_view); 26 | } 27 | } -------------------------------------------------------------------------------- /app/src/main/java/com/android/imusic/video/adapter/holder/VideoCardViewHolder.java: -------------------------------------------------------------------------------- 1 | package com.android.imusic.video.adapter.holder; 2 | 3 | import android.support.v7.widget.RecyclerView; 4 | import android.view.View; 5 | import com.android.imusic.R; 6 | import com.android.imusic.video.view.TransformerVideoPager; 7 | 8 | /** 9 | * hty_Yuye@Outlook.com 10 | * 2019/4/8 11 | */ 12 | 13 | public class VideoCardViewHolder extends RecyclerView.ViewHolder { 14 | 15 | public TransformerVideoPager mTransformerVideoPager; 16 | 17 | public VideoCardViewHolder(View itemView) { 18 | super(itemView); 19 | mTransformerVideoPager = (TransformerVideoPager) itemView.findViewById(R.id.trans_video); 20 | } 21 | } -------------------------------------------------------------------------------- /app/src/main/java/com/android/imusic/video/adapter/holder/VideoDetailsItemViewHolder.java: -------------------------------------------------------------------------------- 1 | package com.android.imusic.video.adapter.holder; 2 | 3 | import android.support.v7.widget.RecyclerView; 4 | import android.view.View; 5 | import android.widget.FrameLayout; 6 | import android.widget.ImageView; 7 | import android.widget.TextView; 8 | import com.android.imusic.R; 9 | 10 | /** 11 | * hty_Yuye@Outlook.com 12 | * 2019/4/10 13 | */ 14 | 15 | public class VideoDetailsItemViewHolder extends RecyclerView.ViewHolder { 16 | 17 | public ImageView itemUserCover; 18 | public TextView itemTitle,itemDurtion,itemUserName,itemTime; 19 | public ImageView itemCover; 20 | public FrameLayout itemCoverRoot; 21 | 22 | public VideoDetailsItemViewHolder(View itemView) { 23 | super(itemView); 24 | itemCover = (ImageView) itemView.findViewById(R.id.view_item_cover); 25 | itemUserCover = (ImageView) itemView.findViewById(R.id.video_item_user_cover); 26 | itemTitle = (TextView) itemView.findViewById(R.id.view_item_title); 27 | itemUserName = (TextView) itemView.findViewById(R.id.view_item_user_name); 28 | itemDurtion = (TextView) itemView.findViewById(R.id.view_item_durtion); 29 | itemTime = (TextView) itemView.findViewById(R.id.view_item_time); 30 | itemCoverRoot = (FrameLayout) itemView.findViewById(R.id.view_item_cover_root); 31 | } 32 | } -------------------------------------------------------------------------------- /app/src/main/java/com/android/imusic/video/adapter/holder/VideoTitleViewHolder.java: -------------------------------------------------------------------------------- 1 | package com.android.imusic.video.adapter.holder; 2 | 3 | import android.support.v7.widget.RecyclerView; 4 | import android.view.View; 5 | import android.widget.TextView; 6 | import com.android.imusic.R; 7 | 8 | /** 9 | * hty_Yuye@Outlook.com 10 | * 2019/3/24 11 | */ 12 | 13 | public class VideoTitleViewHolder extends RecyclerView.ViewHolder { 14 | 15 | public TextView textTitle; 16 | public TextView textTitle2; 17 | public View rootTitle,rootTitle1; 18 | 19 | public VideoTitleViewHolder(View itemView) { 20 | super(itemView); 21 | textTitle = (TextView) itemView.findViewById(R.id.item_video_title); 22 | textTitle2 = (TextView) itemView.findViewById(R.id.item_video_title_2); 23 | rootTitle = itemView.findViewById(R.id.item_root_view); 24 | rootTitle1 = itemView.findViewById(R.id.item_root_view1); 25 | } 26 | } -------------------------------------------------------------------------------- /app/src/main/java/com/android/imusic/video/adapter/holder/VideoVideoViewHolder.java: -------------------------------------------------------------------------------- 1 | package com.android.imusic.video.adapter.holder; 2 | 3 | import android.support.v7.widget.RecyclerView; 4 | import android.view.View; 5 | import android.widget.ImageView; 6 | import android.widget.LinearLayout; 7 | import android.widget.TextView; 8 | import com.android.imusic.R; 9 | import com.music.player.lib.view.MusicRoundImageView; 10 | import com.video.player.lib.view.VideoPlayerTrackView; 11 | 12 | /** 13 | * hty_Yuye@Outlook.com 14 | * 2019/4/8 15 | */ 16 | 17 | public class VideoVideoViewHolder extends RecyclerView.ViewHolder { 18 | 19 | public MusicRoundImageView itemUserCover; 20 | public TextView itemTitle; 21 | public ImageView itemMenu; 22 | public VideoPlayerTrackView trackVideo; 23 | public View menuLayout; 24 | public LinearLayout itemRoomItem; 25 | 26 | public VideoVideoViewHolder(View itemView) { 27 | super(itemView); 28 | itemUserCover = (MusicRoundImageView) itemView.findViewById(R.id.video_item_user_cover); 29 | itemTitle = (TextView) itemView.findViewById(R.id.view_item_title); 30 | itemMenu = (ImageView) itemView.findViewById(R.id.view_item_menu); 31 | trackVideo = (VideoPlayerTrackView) itemView.findViewById(R.id.video_track); 32 | menuLayout = (View) itemView.findViewById(R.id.ll_menu_layout); 33 | itemRoomItem = (LinearLayout) itemView.findViewById(R.id.view_root_item); 34 | } 35 | } -------------------------------------------------------------------------------- /app/src/main/java/com/android/imusic/video/bean/OpenEyesContent.java: -------------------------------------------------------------------------------- 1 | package com.android.imusic.video.bean; 2 | 3 | /** 4 | * TinyHung@Outlook.com 5 | * 2019/4/8 6 | */ 7 | 8 | public class OpenEyesContent { 9 | 10 | private long id; 11 | private int adIndex; 12 | //squareCardCollection 13 | private String type; 14 | private OpenEyesIndexItemBean data; 15 | 16 | public long getId() { 17 | return id; 18 | } 19 | 20 | public void setId(long id) { 21 | this.id = id; 22 | } 23 | 24 | public int getAdIndex() { 25 | return adIndex; 26 | } 27 | 28 | public void setAdIndex(int adIndex) { 29 | this.adIndex = adIndex; 30 | } 31 | 32 | public String getType() { 33 | return type; 34 | } 35 | 36 | public void setType(String type) { 37 | this.type = type; 38 | } 39 | 40 | public OpenEyesIndexItemBean getData() { 41 | return data; 42 | } 43 | 44 | public void setData(OpenEyesIndexItemBean data) { 45 | this.data = data; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /app/src/main/java/com/android/imusic/video/ui/contract/IndexVideoContract.java: -------------------------------------------------------------------------------- 1 | package com.android.imusic.video.ui.contract; 2 | 3 | import com.android.imusic.base.BaseContract; 4 | import com.android.imusic.video.bean.OpenEyesIndexItemBean; 5 | import java.util.List; 6 | 7 | /** 8 | * hty_Yuye@Outlook.com 9 | * 2019/5/6 10 | * Index Video Contract 11 | */ 12 | 13 | public interface IndexVideoContract { 14 | 15 | interface View extends BaseContract.BaseView{ 16 | 17 | /** 18 | * 显示视频列表 19 | * @param data 视频列表 20 | * @param isRestart 是否从第一页开始加载的 21 | */ 22 | void showVideos(List data,boolean isRestart); 23 | } 24 | 25 | interface Presenter extends BaseContract.BasePresenter{ 26 | 27 | /** 28 | * 获取主页的视频列表 29 | * @param isRestart 是否重新开始? 30 | */ 31 | void getIndexVideos(boolean isRestart); 32 | 33 | /** 34 | * 根据URL获取视频列表 35 | * @param url url 36 | * @param isRestart 是否从第一页开始加载的 37 | */ 38 | void getVideosByUrl(String url,boolean isRestart); 39 | 40 | /** 41 | * 根据视频ID获取推荐列表 42 | * @param videoID 视频ID 43 | */ 44 | void getVideosByVideo(String videoID); 45 | } 46 | } -------------------------------------------------------------------------------- /app/src/main/java/com/android/imusic/video/view/TransformerPageAnimation.java: -------------------------------------------------------------------------------- 1 | package com.android.imusic.video.view; 2 | 3 | import android.support.v4.view.ViewPager; 4 | import android.view.View; 5 | 6 | /** 7 | * 2019/4/8 8 | * 配合ViewPager滚动 片段缩放 9 | */ 10 | 11 | public class TransformerPageAnimation implements ViewPager.PageTransformer { 12 | 13 | private static final float MAX_SCALE = 1.0f; 14 | private static final float MIN_SCALE = 0.88f;//0.8f 15 | 16 | @Override 17 | public void transformPage(View view, float position) { 18 | if (position < -1){ 19 | view.setScaleX(MIN_SCALE); 20 | view.setScaleY(MIN_SCALE); 21 | } else if (position <= 1){//a页滑动至b页 ; a页从 0.0 -1 ;b页从1 ~ 0.0 22 | float scaleFactor = MIN_SCALE+(1- Math.abs(position))*(MAX_SCALE-MIN_SCALE); 23 | view.setScaleX(scaleFactor); 24 | //每次滑动后进行微小的移动目的是为了防止在三星的某些手机上出现两边的页面为显示的情况 25 | if(position>0){ 26 | view.setTranslationX(-scaleFactor*2); 27 | }else if(position<0){ 28 | view.setTranslationX(scaleFactor*2); 29 | } 30 | view.setScaleY(scaleFactor); 31 | } else { 32 | view.setScaleX(MIN_SCALE); 33 | view.setScaleY(MIN_SCALE); 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /app/src/main/res/color/music_index_tab_color.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v21/lib_item_foreground.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v24/lib_item_foreground.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_desp_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_desp_down.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_desp_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_desp_up.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_kusic_current_play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_kusic_current_play.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_music_audio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_music_audio.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_music_collect_noimal_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_music_collect_noimal_white.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_music_details_album.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_music_details_album.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_music_details_anchor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_music_details_anchor.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_music_details_collect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_music_details_collect.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_music_details_detele.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_music_details_detele.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_music_details_durtion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_music_details_durtion.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_music_details_next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_music_details_next.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_music_details_share.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_music_details_share.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_music_empty_default_img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_music_empty_default_img.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_music_empty_error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_music_empty_error.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_music_index_collect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_music_index_collect.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_music_index_last_play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_music_index_last_play.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_music_index_music.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_music_index_music.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_music_input_clean.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_music_input_clean.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_music_item_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_music_item_menu.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_music_last_noimal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_music_last_noimal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_music_last_pre.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_music_last_pre.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_music_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_music_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_music_lock_model_random_noimal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_music_lock_model_random_noimal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_music_lock_model_random_pre.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_music_lock_model_random_pre.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_music_model_loop_noimal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_music_model_loop_noimal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_music_model_loop_pre.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_music_model_loop_pre.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_music_model_signle_noimal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_music_model_signle_noimal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_music_model_signle_pre.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_music_model_signle_pre.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_music_next_noimal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_music_next_noimal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_music_next_pre.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_music_next_pre.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_music_pause_noimal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_music_pause_noimal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_music_pause_pre.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_music_pause_pre.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_music_play_alll.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_music_play_alll.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_music_play_noimal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_music_play_noimal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_music_play_pre.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_music_play_pre.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_music_private.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_music_private.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_music_search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_music_search.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_music_search_mini.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_music_search_mini.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_music_search_remove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_music_search_remove.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_music_support.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_music_support.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_music_title_bar_back_noimal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_music_title_bar_back_noimal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_music_title_bar_back_pre.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_music_title_bar_back_pre.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_music_update_top_bg.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_music_update_top_bg.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_setting_tips1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_setting_tips1.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_setting_tips2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_setting_tips2.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_setting_tips3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_setting_tips3.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_setting_tips4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_setting_tips4.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_video_pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_video_pause.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_video_play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/ic_video_play.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/index_mine_shadow_bg.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/index_mine_shadow_bg.9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/loading_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/loading_1.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/loading_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/loading_10.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/loading_11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/loading_11.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/loading_12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/loading_12.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/loading_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/loading_2.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/loading_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/loading_3.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/loading_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/loading_4.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/loading_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/loading_5.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/loading_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/loading_6.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/loading_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/loading_7.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/loading_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/loading_8.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/loading_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/loading_9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/music_ic_dialog_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/app/src/main/res/drawable-xxhdpi/music_ic_dialog_close.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/lib_item_foreground.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/music_bg_white_radius_8.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/music_bottom_seek_progress.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/music_bottom_seek_thumb.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 10 | 11 | 12 | 13 | 15 | 16 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/music_diallog_bottom_bg_white_style.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/music_dialog_loading_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/music_download_progressbar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/music_index_item_list_bottom_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/music_index_item_list_top_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/music_index_title_line.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/music_left_tab_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/music_list_scroll_bar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/music_loading_anim.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/music_player_collect_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/music_player_collect_white_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/music_player_last_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/music_player_next_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/music_player_pause_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/music_player_play_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/music_right_tab_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/music_search_input_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/music_search_tag_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/music_song_play_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/music_tags_driver_trans.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/music_title_back_white_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/video_btn_ledt_round_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/video_details_item_icon_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/video_details_item_text_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/video_index_item_list_bottom_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/video_index_pager_moive_item_bottom_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/video_item_ab_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/video_item_tag_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/video_pager_item_text_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/video_pager_text_durtion_transparent.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/video_popup_menu_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/layout/music_activity_music_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 13 | 17 | 26 | 27 | -------------------------------------------------------------------------------- /app/src/main/res/layout/music_dialog_progress_layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 12 | 20 | 31 | 32 | -------------------------------------------------------------------------------- /app/src/main/res/layout/music_fragment_index_music.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 16 | 20 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/layout/music_index_list_more_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 16 | 21 | 32 | 33 | 38 | -------------------------------------------------------------------------------- /app/src/main/res/layout/music_index_list_title_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 14 | 25 | -------------------------------------------------------------------------------- /app/src/main/res/layout/music_item_empty_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/layout/music_unknown_layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/layout/music_view_list_empty.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 12 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/layout/video_activity_video_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 13 | 17 | 23 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/layout/video_details_header_layout.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/video_details_video_title.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 15 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/layout/video_fragment_index_video.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 11 | 15 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/layout/video_index_video_banner.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 11 | 16 | 30 | 31 | 32 | 36 | -------------------------------------------------------------------------------- /app/src/main/res/layout/video_index_video_card.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/layout/video_pager_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/values-v17/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/values-v19/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/values/attrs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #8000FF 4 | #8000FF 5 | #8000FF 6 | #26000000 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/values/ids.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/values/integers.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 60 4 | -------------------------------------------------------------------------------- /app/src/main/res/xml/file_paths.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/test/java/com/yc/liaolive/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.yc.liaolive; 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 | } -------------------------------------------------------------------------------- /bintray.gradle: -------------------------------------------------------------------------------- 1 | //编译并推送到Bintray命令 2 | //gradlew clean build bintrayUpload -PbintrayUser=BINTRAY_USERNAME -PbintrayKey=BINTRAY_KEY -PdryRun=false 3 | //music\video build.gradle 配置 4 | //本地zip打包,gradlew generateRelease 5 | ext{ 6 | userOrg = 'htyopen' 7 | groupId = 'com.imusic.player' 8 | licences = ['Apache-2.0'] 9 | 10 | musicModule = 'music-player' 11 | musicDesc = 'Android MusicPlayer Library' 12 | musicWebsite = 'https://github.com/Yuye584312311/IMusic' 13 | musicVersion = '1.1.6' 14 | 15 | videoModule = 'video-player' 16 | videoDesc = 'Android VideoPlayer Library' 17 | videoWebsite = 'https://github.com/Yuye584312311/IMusic' 18 | videoVersion = '1.0.91' 19 | } -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | //应用Config配置文件 3 | apply from: "config.gradle" 4 | //应用Bintray配置文件 5 | //apply from: "bintray.gradle" 6 | 7 | buildscript { 8 | repositories { 9 | google() 10 | jcenter() 11 | } 12 | dependencies { 13 | classpath 'com.android.tools.build:gradle:4.0.1' 14 | //添加bintray环境 15 | // classpath 'com.novoda:bintray-release:0.8.1' 16 | //添加jitpack.io环境 17 | classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1' 18 | } 19 | } 20 | 21 | allprojects { 22 | repositories { 23 | google() 24 | jcenter() 25 | //本地Maven仓库地址,取决于你的磁盘目录 26 | // maven { url 'file://D://AndroidStudioProjects//IMusic//maven' } 27 | //本地局域网仓库地址 28 | // maven { url 'http://localhost:8081/nexus/content/repositories/releases/' } 29 | //Bintray插件仓库支持 30 | maven { url 'https://dl.bintray.com/novoda-oss/snapshots/' } 31 | maven { url 'https://jitpack.io' } 32 | } 33 | //编译时报注释GBK编码错误解决 34 | tasks.withType(Javadoc) { 35 | //方法上忽略@return和@param注解未添加说明注释 36 | options.addStringOption('Xdoclint:none', '-quiet') 37 | //解决GBK编码错误提示 38 | options.addStringOption('encoding', 'UTF-8') 39 | options.addStringOption('charSet', 'UTF-8') 40 | } 41 | //跳过构建时link检查 42 | tasks.whenTaskAdded { task -> 43 | if (task.name.equals("lint")) { 44 | task.enabled = false 45 | } 46 | } 47 | } 48 | 49 | 50 | 51 | task clean(type: Delete) { 52 | delete rootProject.buildDir 53 | } -------------------------------------------------------------------------------- /config.gradle: -------------------------------------------------------------------------------- 1 | ext { 2 | android = [ 3 | compileSdkVersion : 30, 4 | buildToolsVersion : "30.0.2", 5 | minSdkVersion : 16, 6 | targetSdkVersion : 26, 7 | devMinSdk : 16, 8 | supportLibVersion : "28.0.0" 9 | ] 10 | app=[ 11 | applicationId : "com.android.imusic", 12 | versionCode : 101090, 13 | versionName : "1.1.9" 14 | ] 15 | music=[ 16 | versionCode : 12000, 17 | versionName : "1.2.0", 18 | bintrayVersion : '1.2.0' 19 | ] 20 | video=[ 21 | versionCode : 12000, 22 | versionName : "1.2.0", 23 | bintrayVersion : '1.2.0' 24 | ] 25 | } -------------------------------------------------------------------------------- /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 | # 指定用于守护程序进程的JVM参数。 14 | # 该设置对于调整内存设置特别有用。 15 | # 默认值:-Xmx10248m -XX:MaxPermSize = 256m 16 | #org.gradle.jvmargs = -Xmx2048m -XX:MaxPermSize = 512m -XX:+ HeapDumpOnOutOfMemoryError -Dfile.encoding = UTF-8 17 | 18 | # When configured, Gradle will run in incubating parallel mode. 19 | # This option should only be used with decoupled projects. More details, visit 20 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 21 | 22 | # 设置为true时,Gradle守护程序将运行构建。 23 | org.gradle.daemon = true 24 | # 配置后,Gradle将以孵化并行模式运行。 25 | # 此选项仅应与分离的项目一起使用。更多细节,访问 26 | # http ://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 27 | org.gradle.parallel=true 28 | # 启用新的孵化模式,使Gradle在配置项目时具有选择性。 29 | # 仅配置相关项目,从而加快大型多项目的构建速度。 30 | # http ://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:configuration_on_demand 31 | org.gradle.configureondemand = true -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Wed Apr 17 16:03:00 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-6.1.1-all.zip 7 | -------------------------------------------------------------------------------- /music-player/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /music-player/src/androidTest/java/com/music/player/lib/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package com.music.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.music.player.lib", appContext.getPackageName()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /music-player/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 13 | 14 | 15 | 16 | 17 | 20 | 21 | 24 | 25 | -------------------------------------------------------------------------------- /music-player/src/main/java/com/music/player/lib/adapter/base/OnItemClickListener.java: -------------------------------------------------------------------------------- 1 | package com.music.player.lib.adapter.base; 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 | -------------------------------------------------------------------------------- /music-player/src/main/java/com/music/player/lib/adapter/base/OnItemLongClickListener.java: -------------------------------------------------------------------------------- 1 | package com.music.player.lib.adapter.base; 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 | -------------------------------------------------------------------------------- /music-player/src/main/java/com/music/player/lib/adapter/base/OnLoadMorePresenter.java: -------------------------------------------------------------------------------- 1 | package com.music.player.lib.adapter.base; 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 | -------------------------------------------------------------------------------- /music-player/src/main/java/com/music/player/lib/bean/MusicAlarmSetting.java: -------------------------------------------------------------------------------- 1 | package com.music.player.lib.bean; 2 | 3 | /** 4 | * TinyHung@Outlook.com 5 | * 2019/3/8 6 | * AlarmSetting 7 | */ 8 | 9 | public class MusicAlarmSetting { 10 | 11 | private String title; 12 | private int alarmModel; 13 | 14 | public MusicAlarmSetting(){ 15 | 16 | } 17 | 18 | public MusicAlarmSetting(String title, int alarmModel) { 19 | this.title = title; 20 | this.alarmModel = alarmModel; 21 | } 22 | 23 | public String getTitle() { 24 | return title; 25 | } 26 | 27 | public void setTitle(String title) { 28 | this.title = title; 29 | } 30 | 31 | public int getAlarmModel() { 32 | return alarmModel; 33 | } 34 | 35 | public void setAlarmModel(int alarmModel) { 36 | this.alarmModel = alarmModel; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /music-player/src/main/java/com/music/player/lib/bean/MusicLrcRow.java: -------------------------------------------------------------------------------- 1 | package com.music.player.lib.bean; 2 | 3 | /** 4 | * Created by TinyHung@outlook.com 5 | * 2019/5/23 6 | * 音乐歌词 lrc 7 | */ 8 | 9 | public class MusicLrcRow { 10 | //歌词内容 11 | private String content; 12 | //时间:00:00.12 13 | private String timeText; 14 | //时间位置,毫秒 15 | private long time; 16 | 17 | public MusicLrcRow(){} 18 | 19 | public MusicLrcRow(String content, String timeText, long time) { 20 | this.content = content; 21 | this.timeText = timeText; 22 | this.time = time; 23 | } 24 | 25 | public String getContent() { 26 | return content; 27 | } 28 | 29 | public void setContent(String content) { 30 | this.content = content; 31 | } 32 | 33 | public String getTimeText() { 34 | return timeText; 35 | } 36 | 37 | public void setTimeText(String timeText) { 38 | this.timeText = timeText; 39 | } 40 | 41 | public long getTime() { 42 | return time; 43 | } 44 | 45 | public void setTime(long time) { 46 | this.time = time; 47 | } 48 | 49 | @Override 50 | public String toString() { 51 | return "MusicLrcRow{" + 52 | "content='" + content + '\'' + 53 | ", timeText='" + timeText + '\'' + 54 | ", time=" + time + 55 | '}'; 56 | } 57 | } -------------------------------------------------------------------------------- /music-player/src/main/java/com/music/player/lib/bean/SearchHistroy.java: -------------------------------------------------------------------------------- 1 | package com.music.player.lib.bean; 2 | 3 | import java.io.Serializable; 4 | 5 | /** 6 | * hty_Yuye@Outlook.com 7 | * 2019/3/23 8 | */ 9 | 10 | public class SearchHistroy implements Serializable{ 11 | 12 | private long addtime; 13 | private String key; 14 | 15 | public long getAddtime() { 16 | return addtime; 17 | } 18 | 19 | public void setAddtime(long addtime) { 20 | this.addtime = addtime; 21 | } 22 | 23 | public String getKey() { 24 | return key; 25 | } 26 | 27 | public void setKey(String key) { 28 | this.key = key; 29 | } 30 | 31 | @Override 32 | public String toString() { 33 | return "SearchHistroy{" + 34 | "addtime=" + addtime + 35 | ", key='" + key + '\'' + 36 | '}'; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /music-player/src/main/java/com/music/player/lib/listener/MusicAnimatorListener.java: -------------------------------------------------------------------------------- 1 | package com.music.player.lib.listener; 2 | 3 | /** 4 | * TinyHung@Outlook.com 5 | * 2019/3/12 6 | */ 7 | 8 | public interface MusicAnimatorListener { 9 | void onAnimationStart(); 10 | void onAnimationEnd(); 11 | } 12 | -------------------------------------------------------------------------------- /music-player/src/main/java/com/music/player/lib/listener/MusicInitializeCallBack.java: -------------------------------------------------------------------------------- 1 | package com.music.player.lib.listener; 2 | 3 | /** 4 | * Created by TinyHung@outlook.com 5 | * 2019/5/27 6 | * MusicPlayerManager内部初始化状态 7 | */ 8 | 9 | public interface MusicInitializeCallBack { 10 | void onSuccess(); 11 | } -------------------------------------------------------------------------------- /music-player/src/main/java/com/music/player/lib/listener/MusicJukeBoxStatusListener.java: -------------------------------------------------------------------------------- 1 | package com.music.player.lib.listener; 2 | 3 | import android.view.View; 4 | import com.music.player.lib.bean.BaseAudioInfo; 5 | import com.music.player.lib.bean.MusicLrcRow; 6 | 7 | /** 8 | * hty_Yuye@Outlook.com 9 | * 2019/3/6 10 | * Music JukeBox Status Listener 11 | */ 12 | 13 | public interface MusicJukeBoxStatusListener { 14 | 15 | /** 16 | * 手指横向持续滚动过程对象不断的发生变化,持续调用,请不要在此方法做耗时操作 17 | * @param audioInfo 音频对象 18 | */ 19 | void onScrollOffsetObject(BaseAudioInfo audioInfo); 20 | 21 | /** 22 | * Pager处于可见状态 23 | * @param audioInfo 音频对象 24 | * @param newPosition 刚刚处于可见状态的Position 25 | */ 26 | void onVisible(BaseAudioInfo audioInfo,int newPosition); 27 | 28 | /** 29 | * Pager处于不可见状态 30 | * @param oldPosition 不可见状态的Position 31 | */ 32 | void onInvisible(int oldPosition); 33 | 34 | /** 35 | * 新的Pager落地了,唱片机在Pager滚动后,最终静止不动,回调此方法 36 | * @param offsetPosition 索引 37 | * @param audioInfo 音频对象 38 | * @param startPlayer true:播放事件 false:只是回显同步状态 39 | */ 40 | void onOffsetPosition(int offsetPosition, BaseAudioInfo audioInfo,boolean startPlayer); 41 | 42 | /** 43 | * 唱片机状态发生了变化 44 | * @param playerState 唱片机状态,参见MusicConstants常量定义 45 | */ 46 | void onJukeBoxState(int playerState); 47 | 48 | /** 49 | * 唱片机点击事件,主要抛出给组件来控制歌词控件 50 | * @param view click view 51 | */ 52 | void onClickJukeBox(View view); 53 | 54 | /** 55 | * 歌词被拖动了,跳转至指定位置开始播放 56 | * @param lrcRow 歌词对象 57 | */ 58 | void onLrcSeek(MusicLrcRow lrcRow); 59 | } -------------------------------------------------------------------------------- /music-player/src/main/java/com/music/player/lib/listener/MusicLrcParserCallBack.java: -------------------------------------------------------------------------------- 1 | package com.music.player.lib.listener; 2 | 3 | import com.music.player.lib.bean.MusicLrcRow; 4 | import java.util.List; 5 | 6 | /** 7 | * Created by TinyHung@outlook.com 8 | * 2019/5/23 9 | * Music lrc parser call back 10 | */ 11 | 12 | public interface MusicLrcParserCallBack { 13 | /** 14 | * 回调在主线程的歌词数据 15 | * @param lrcRows 歌词文件 16 | */ 17 | void onLrcRows(List lrcRows); 18 | } -------------------------------------------------------------------------------- /music-player/src/main/java/com/music/player/lib/listener/MusicLrcViewListener.java: -------------------------------------------------------------------------------- 1 | package com.music.player.lib.listener; 2 | 3 | import android.view.View; 4 | import com.music.player.lib.bean.MusicLrcRow; 5 | 6 | /** 7 | * Created by TinyHung@outlook.com 8 | * 2019/5/23 9 | * 歌词控件、事件监听器 10 | */ 11 | 12 | public interface MusicLrcViewListener { 13 | 14 | /** 15 | * 歌词被拖动了 16 | * @param position 位置 17 | * @param lrcRow 歌词实体类 18 | */ 19 | void onLrcSeeked(int position, MusicLrcRow lrcRow); 20 | 21 | /** 22 | * 单击了歌词 23 | * @param view 歌词控件 24 | */ 25 | void onClick(View view); 26 | } -------------------------------------------------------------------------------- /music-player/src/main/java/com/music/player/lib/listener/MusicOnItemClickListener.java: -------------------------------------------------------------------------------- 1 | package com.music.player.lib.listener; 2 | 3 | import android.view.View; 4 | 5 | /** 6 | * TinyHung@Outlook.com 7 | * 2019/3/7 8 | */ 9 | 10 | public interface MusicOnItemClickListener { 11 | void onItemClick(View view,int posotion,long musicID); 12 | } -------------------------------------------------------------------------------- /music-player/src/main/java/com/music/player/lib/listener/MusicOnItemStatusListener.java: -------------------------------------------------------------------------------- 1 | package com.music.player.lib.listener; 2 | 3 | /** 4 | * TinyHung@Outlook.com 5 | * 2019/3/8 6 | */ 7 | 8 | public interface MusicOnItemStatusListener { 9 | void onItemStatus(int posotion); 10 | } -------------------------------------------------------------------------------- /music-player/src/main/java/com/music/player/lib/listener/MusicPlayerInfoListener.java: -------------------------------------------------------------------------------- 1 | package com.music.player.lib.listener; 2 | 3 | import com.music.player.lib.bean.BaseAudioInfo; 4 | 5 | /** 6 | * TinyHung@Outlook.com 7 | * 2019/5/21. 8 | * 如果需要关心正在播放的对象存储播放记录等,注册此监听 9 | * 如果使用默认的通知栏组件,请实现此接口,返回音频文件的收藏状态 10 | * MusicPlayer Event Listener 11 | */ 12 | 13 | public interface MusicPlayerInfoListener { 14 | /** 15 | * 播放器对象发生了变化 16 | * @param musicInfo 播放器内部正在处理的音频对象 17 | * @param position 位置 18 | */ 19 | void onPlayMusiconInfo(BaseAudioInfo musicInfo, int position); 20 | } -------------------------------------------------------------------------------- /music-player/src/main/java/com/music/player/lib/listener/MusicWindowClickListener.java: -------------------------------------------------------------------------------- 1 | package com.music.player.lib.listener; 2 | 3 | import android.view.View; 4 | 5 | /** 6 | * TinyHung@Outlook.com 7 | * 2019/3/20 8 | */ 9 | 10 | public interface MusicWindowClickListener { 11 | 12 | /** 13 | * 悬浮窗单击事件 14 | * @param view 悬浮窗 15 | * @param musicID 当前绑定MediaID 16 | */ 17 | void onWindownClick(View view, long musicID); 18 | 19 | /** 20 | * 悬浮窗取消单击事件 21 | * @param view 悬浮窗 22 | */ 23 | void onWindownCancel(View view); 24 | } -------------------------------------------------------------------------------- /music-player/src/main/java/com/music/player/lib/manager/MusicSubjectObservable.java: -------------------------------------------------------------------------------- 1 | package com.music.player.lib.manager; 2 | 3 | import java.util.Observable; 4 | 5 | /** 6 | * TinyHung@Outlook.com 7 | * 2019/3/5. 8 | * Observable 9 | */ 10 | 11 | public class MusicSubjectObservable extends Observable { 12 | 13 | public MusicSubjectObservable(){ 14 | 15 | } 16 | public void updataSubjectObserivce(Object data){ 17 | setChanged(); 18 | notifyObservers(data); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /music-player/src/main/java/com/music/player/lib/model/MusicDefaultLrcParser.java: -------------------------------------------------------------------------------- 1 | package com.music.player.lib.model; 2 | 3 | import com.music.player.lib.bean.MusicLrcRow; 4 | import com.music.player.lib.iinterface.MusicLrcRowParser; 5 | import com.music.player.lib.listener.MusicLrcParserCallBack; 6 | import java.util.List; 7 | 8 | /** 9 | * Created by TinyHung@outlook.com 10 | * 2019/5/23 11 | * default lrc parser 12 | * 默认解析器支持的歌词格式:[01:15.33] 或者 [00:00] 13 | * 使用默认的歌词解析器,啥也不做 14 | */ 15 | 16 | public final class MusicDefaultLrcParser extends MusicLrcRowParser { 17 | /** 18 | * 解析歌词源文本为java数组,如果不能满足你的需求,请复写实现自己的逻辑 19 | * 此方法被设计为异步回调 20 | * @param lrcContent 源歌词字符串 21 | * @param callBack 回调 22 | */ 23 | @Override 24 | public void formatLrc(String lrcContent, MusicLrcParserCallBack callBack) { 25 | super.formatLrc(lrcContent, callBack); 26 | } 27 | 28 | /** 29 | * 逐行解析歌词源文本为java数组,如果不能满足你的需求,请复写实现自己的逻辑 30 | * @param lrcLineContent 源歌词逐行字符串 31 | * @return 逐行的歌词数组 32 | */ 33 | @Override 34 | public List parserLineLrc(String lrcLineContent) { 35 | return super.parserLineLrc(lrcLineContent); 36 | } 37 | } -------------------------------------------------------------------------------- /music-player/src/main/java/com/music/player/lib/model/MusicItemSpaceDecoration.java: -------------------------------------------------------------------------------- 1 | package com.music.player.lib.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 | * 2019/3/7 10 | */ 11 | 12 | public class MusicItemSpaceDecoration extends RecyclerView.ItemDecoration { 13 | 14 | private int space; 15 | 16 | public MusicItemSpaceDecoration(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.right=space; 23 | outRect.bottom=space; 24 | outRect.left=space; 25 | outRect.top=space; 26 | } 27 | } -------------------------------------------------------------------------------- /music-player/src/main/java/com/music/player/lib/model/MusicPlayerConfig.java: -------------------------------------------------------------------------------- 1 | package com.music.player.lib.model; 2 | 3 | import com.music.player.lib.constants.MusicConstants; 4 | 5 | /** 6 | * TinyHung@Outlook.com 7 | * 2019/3/20 8 | * MusicPlayer Config 9 | */ 10 | 11 | public class MusicPlayerConfig { 12 | 13 | //默认闹钟模式 14 | private int defaultAlarmModel = MusicConstants.MUSIC_ALARM_MODEL_0; 15 | //默认播放模式 16 | private int defaultPlayModel = MusicConstants.MUSIC_MODEL_LOOP; 17 | 18 | public int getDefaultAlarmModel() { 19 | return defaultAlarmModel; 20 | } 21 | 22 | public MusicPlayerConfig setDefaultAlarmModel(int defaultAlarmModel) { 23 | this.defaultAlarmModel = defaultAlarmModel; 24 | return this; 25 | } 26 | 27 | public int getDefaultPlayModel() { 28 | return defaultPlayModel; 29 | } 30 | 31 | public MusicPlayerConfig setDefaultPlayModel(int defaultPlayModel) { 32 | this.defaultPlayModel = defaultPlayModel; 33 | return this; 34 | } 35 | 36 | public static MusicPlayerConfig Build() { 37 | return new MusicPlayerConfig(); 38 | } 39 | } -------------------------------------------------------------------------------- /music-player/src/main/java/com/music/player/lib/model/SQLSearchHelper.java: -------------------------------------------------------------------------------- 1 | package com.music.player.lib.model; 2 | 3 | import android.content.Context; 4 | import android.database.sqlite.SQLiteDatabase; 5 | import android.database.sqlite.SQLiteOpenHelper; 6 | import com.music.player.lib.util.Logger; 7 | 8 | /** 9 | * hty_Yuye@Outlook.com 10 | * 2019/5/21 11 | * Search SQL 12 | */ 13 | 14 | public class SQLSearchHelper extends SQLiteOpenHelper { 15 | 16 | private static final String TAG = "SQLSearchHelper"; 17 | //数据库名 18 | public static final String DB_NAME="imusic_search.db"; 19 | //表名 20 | public static final String TABLE_NAME = "search"; 21 | 22 | //创建数据库,key不能为空,不能重复 23 | private static final String CREATE_TABLE ="create table "+TABLE_NAME+"(" 24 | + "id integer primary key autoincrement," 25 | + "key varchar(255) not null unique," 26 | + "addtime integer" 27 | + ");"; 28 | 29 | public SQLSearchHelper(Context context) { 30 | super(context, DB_NAME, null, 1); 31 | } 32 | 33 | @Override 34 | public void onCreate(SQLiteDatabase db) { 35 | db.execSQL(CREATE_TABLE); 36 | } 37 | 38 | @Override 39 | public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 40 | Logger.d(TAG,"onUpgrade-->,oldVersion:"+oldVersion+",newVersion:"+newVersion); 41 | } 42 | } -------------------------------------------------------------------------------- /music-player/src/main/java/com/music/player/lib/util/Logger.java: -------------------------------------------------------------------------------- 1 | package com.music.player.lib.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 | -------------------------------------------------------------------------------- /music-player/src/main/java/com/music/player/lib/util/MusicClickControler.java: -------------------------------------------------------------------------------- 1 | package com.music.player.lib.util; 2 | 3 | /** 4 | * hty_Yuye@Outlook.com 5 | * 2019/3/6 6 | * ClickControler 7 | */ 8 | 9 | public class MusicClickControler { 10 | 11 | private int mCounts = 0; //设定时间内允许触发的次数 12 | private int mMillisSeconds = 0; //设定的时间毫秒数 13 | private int mCurrentCounts = 0; //当前已经触发的次数 14 | private long mFirstTriggerTime = 0; //当前时间段内首次触发的时间 15 | 16 | public void init(int nCounts, int millisSeconds) { 17 | this.mCounts = nCounts; 18 | this.mMillisSeconds = millisSeconds; 19 | this.mCurrentCounts = 0; 20 | this.mFirstTriggerTime = 0; 21 | } 22 | 23 | public boolean canTrigger() { 24 | long time = System.currentTimeMillis(); 25 | //重置首次触发时间和已经触发次数 26 | if (mFirstTriggerTime == 0 || time - mFirstTriggerTime > mMillisSeconds) { 27 | mFirstTriggerTime = time; 28 | mCurrentCounts = 0; 29 | } 30 | //已经触发了mCounts次,本次不能触发 31 | if (mCurrentCounts >= mCounts) { 32 | return false; 33 | } 34 | 35 | ++mCurrentCounts; 36 | return true; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /music-player/src/main/java/com/music/player/lib/view/MusicMarqueeTextView.java: -------------------------------------------------------------------------------- 1 | package com.music.player.lib.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 MusicMarqueeTextView extends android.support.v7.widget.AppCompatTextView { 13 | 14 | public MusicMarqueeTextView(Context context) { 15 | super(context); 16 | } 17 | 18 | public MusicMarqueeTextView(Context context, @Nullable AttributeSet attrs) { 19 | super(context, attrs); 20 | } 21 | 22 | public MusicMarqueeTextView(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 | -------------------------------------------------------------------------------- /music-player/src/main/java/com/music/player/lib/view/blur/impl/BlurImpl.java: -------------------------------------------------------------------------------- 1 | package com.music.player.lib.view.blur.impl; 2 | 3 | import android.content.Context; 4 | import android.graphics.Bitmap; 5 | 6 | /** 7 | * created by hty 8 | * 2022/6/19 9 | * Desc: 10 | */ 11 | public interface BlurImpl { 12 | 13 | boolean prepare(Context context, Bitmap buffer, float radius); 14 | 15 | void release(); 16 | 17 | void blur(Bitmap input, Bitmap output); 18 | } -------------------------------------------------------------------------------- /music-player/src/main/java/com/music/player/lib/view/blur/impl/EmptyBlurImpl.java: -------------------------------------------------------------------------------- 1 | package com.music.player.lib.view.blur.impl; 2 | 3 | import android.content.Context; 4 | import android.graphics.Bitmap; 5 | 6 | /** 7 | * created by hty 8 | * 2022/6/19 9 | * Desc: 10 | */ 11 | public class EmptyBlurImpl implements BlurImpl { 12 | 13 | @Override 14 | public boolean prepare(Context context, Bitmap buffer, float radius) { 15 | return false; 16 | } 17 | 18 | @Override 19 | public void release() { 20 | 21 | } 22 | 23 | @Override 24 | public void blur(Bitmap input, Bitmap output) { 25 | 26 | } 27 | } -------------------------------------------------------------------------------- /music-player/src/main/res/anim/music_bottom_menu_enter.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /music-player/src/main/res/anim/music_bottom_menu_exit.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | -------------------------------------------------------------------------------- /music-player/src/main/res/anim/music_cover_alpha_in.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /music-player/src/main/res/anim/music_shake.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | -------------------------------------------------------------------------------- /music-player/src/main/res/anim/music_shake_cycle_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /music-player/src/main/res/drawable-xxhdpi/ic_music_alarm_bg_long.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/music-player/src/main/res/drawable-xxhdpi/ic_music_alarm_bg_long.9.png -------------------------------------------------------------------------------- /music-player/src/main/res/drawable-xxhdpi/ic_music_alarm_bg_long_pre.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/music-player/src/main/res/drawable-xxhdpi/ic_music_alarm_bg_long_pre.9.png -------------------------------------------------------------------------------- /music-player/src/main/res/drawable-xxhdpi/ic_music_alarm_bg_moon.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/music-player/src/main/res/drawable-xxhdpi/ic_music_alarm_bg_moon.9.png -------------------------------------------------------------------------------- /music-player/src/main/res/drawable-xxhdpi/ic_music_alarm_bg_moon_pre.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/music-player/src/main/res/drawable-xxhdpi/ic_music_alarm_bg_moon_pre.9.png -------------------------------------------------------------------------------- /music-player/src/main/res/drawable-xxhdpi/ic_music_alarm_mini.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/music-player/src/main/res/drawable-xxhdpi/ic_music_alarm_mini.png -------------------------------------------------------------------------------- /music-player/src/main/res/drawable-xxhdpi/ic_music_alarm_noimal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/music-player/src/main/res/drawable-xxhdpi/ic_music_alarm_noimal.png -------------------------------------------------------------------------------- /music-player/src/main/res/drawable-xxhdpi/ic_music_alarm_pre.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/music-player/src/main/res/drawable-xxhdpi/ic_music_alarm_pre.png -------------------------------------------------------------------------------- /music-player/src/main/res/drawable-xxhdpi/ic_music_collect_noimal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/music-player/src/main/res/drawable-xxhdpi/ic_music_collect_noimal.png -------------------------------------------------------------------------------- /music-player/src/main/res/drawable-xxhdpi/ic_music_collect_pre.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/music-player/src/main/res/drawable-xxhdpi/ic_music_collect_pre.png -------------------------------------------------------------------------------- /music-player/src/main/res/drawable-xxhdpi/ic_music_collect_white_noimal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/music-player/src/main/res/drawable-xxhdpi/ic_music_collect_white_noimal.png -------------------------------------------------------------------------------- /music-player/src/main/res/drawable-xxhdpi/ic_music_cover_hand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/music-player/src/main/res/drawable-xxhdpi/ic_music_cover_hand.png -------------------------------------------------------------------------------- /music-player/src/main/res/drawable-xxhdpi/ic_music_default_cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/music-player/src/main/res/drawable-xxhdpi/ic_music_default_cover.png -------------------------------------------------------------------------------- /music-player/src/main/res/drawable-xxhdpi/ic_music_disc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/music-player/src/main/res/drawable-xxhdpi/ic_music_disc.png -------------------------------------------------------------------------------- /music-player/src/main/res/drawable-xxhdpi/ic_music_disc_bg_mini.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/music-player/src/main/res/drawable-xxhdpi/ic_music_disc_bg_mini.png -------------------------------------------------------------------------------- /music-player/src/main/res/drawable-xxhdpi/ic_music_disc_blackground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/music-player/src/main/res/drawable-xxhdpi/ic_music_disc_blackground.png -------------------------------------------------------------------------------- /music-player/src/main/res/drawable-xxhdpi/ic_music_disc_top_line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/music-player/src/main/res/drawable-xxhdpi/ic_music_disc_top_line.png -------------------------------------------------------------------------------- /music-player/src/main/res/drawable-xxhdpi/ic_music_juke_default_cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/music-player/src/main/res/drawable-xxhdpi/ic_music_juke_default_cover.png -------------------------------------------------------------------------------- /music-player/src/main/res/drawable-xxhdpi/ic_music_menu_noimal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/music-player/src/main/res/drawable-xxhdpi/ic_music_menu_noimal.png -------------------------------------------------------------------------------- /music-player/src/main/res/drawable-xxhdpi/ic_music_menu_pre.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/music-player/src/main/res/drawable-xxhdpi/ic_music_menu_pre.png -------------------------------------------------------------------------------- /music-player/src/main/res/drawable-xxhdpi/ic_music_mini_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/music-player/src/main/res/drawable-xxhdpi/ic_music_mini_close.png -------------------------------------------------------------------------------- /music-player/src/main/res/drawable-xxhdpi/ic_music_mini_last_noimal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/music-player/src/main/res/drawable-xxhdpi/ic_music_mini_last_noimal.png -------------------------------------------------------------------------------- /music-player/src/main/res/drawable-xxhdpi/ic_music_mini_next_noimal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/music-player/src/main/res/drawable-xxhdpi/ic_music_mini_next_noimal.png -------------------------------------------------------------------------------- /music-player/src/main/res/drawable-xxhdpi/ic_music_mini_pause_noimal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/music-player/src/main/res/drawable-xxhdpi/ic_music_mini_pause_noimal.png -------------------------------------------------------------------------------- /music-player/src/main/res/drawable-xxhdpi/ic_music_mini_play_noimal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/music-player/src/main/res/drawable-xxhdpi/ic_music_mini_play_noimal.png -------------------------------------------------------------------------------- /music-player/src/main/res/drawable-xxhdpi/ic_music_push.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/music-player/src/main/res/drawable-xxhdpi/ic_music_push.png -------------------------------------------------------------------------------- /music-player/src/main/res/drawable-xxhdpi/ic_music_trash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/music-player/src/main/res/drawable-xxhdpi/ic_music_trash.png -------------------------------------------------------------------------------- /music-player/src/main/res/drawable-xxhdpi/ic_music_window_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/music-player/src/main/res/drawable-xxhdpi/ic_music_window_close.png -------------------------------------------------------------------------------- /music-player/src/main/res/drawable/music_default_dialog_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /music-player/src/main/res/drawable/music_default_music_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | -------------------------------------------------------------------------------- /music-player/src/main/res/drawable/music_player_alarm_item_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /music-player/src/main/res/drawable/music_player_alarm_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /music-player/src/main/res/drawable/music_player_menu_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /music-player/src/main/res/drawable/music_top_title_bg.xml: -------------------------------------------------------------------------------- 1 | 3 | 9 | -------------------------------------------------------------------------------- /music-player/src/main/res/layout/music_item_player_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 17 | 26 | 33 | 34 | 38 | -------------------------------------------------------------------------------- /music-player/src/main/res/layout/music_player_window.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 11 | -------------------------------------------------------------------------------- /music-player/src/main/res/layout/music_re_item_alarm_setting.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 12 | 20 | 30 | 31 | -------------------------------------------------------------------------------- /music-player/src/main/res/layout/music_trash_window.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | 13 | 19 | 27 | 37 | 38 | -------------------------------------------------------------------------------- /music-player/src/main/res/layout/music_view_cover_pager.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 12 | -------------------------------------------------------------------------------- /music-player/src/main/res/layout/music_view_cover_pager2.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 12 | 13 | 18 | 19 | 24 | 25 | -------------------------------------------------------------------------------- /music-player/src/main/res/layout/music_view_small_disc.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 10 | -------------------------------------------------------------------------------- /music-player/src/main/res/layout/music_window_player.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 12 | 20 | -------------------------------------------------------------------------------- /music-player/src/main/res/values-v19/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 24dp 3 | 4 | -------------------------------------------------------------------------------- /music-player/src/main/res/values-zh-rCN/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 定时关闭播放 4 | 当前音频播放完后 5 | 取消定时 6 | 取消 7 | 关闭 8 | 播放列表(%s首) 9 | 分钟 10 | 暂时没有找到歌词 11 | 歌词获取中... 12 | 正在播放 13 | iMusic通知栏音乐播放 14 | -------------------------------------------------------------------------------- /music-player/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 0dp 3 | 4 | -------------------------------------------------------------------------------- /music-player/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Turn off playback regularly 4 | After the current audio is played 5 | Cancel timing 6 | Cancel 7 | Close 8 | Playlist(%shead) 9 | Minute 10 | No lyrics were found 11 | The lyrics being obtained.... 12 | Playing. 13 | iMusic Notification bar music playback 14 | -------------------------------------------------------------------------------- /music-player/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 17 | 18 | 24 | 25 | 34 | -------------------------------------------------------------------------------- /music-player/src/test/java/com/music/player/lib/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.music.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', ':music-player' , ':video-player' -------------------------------------------------------------------------------- /video-player/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /video-player/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 | -------------------------------------------------------------------------------- /video-player/src/androidTest/java/com/video/player/lib/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package com.video.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.video.player.lib.test", appContext.getPackageName()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /video-player/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /video-player/src/main/java/com/video/player/lib/base/BaseCoverController.java: -------------------------------------------------------------------------------- 1 | package com.video.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.view.View; 8 | import android.widget.FrameLayout; 9 | 10 | /** 11 | * TinyHung@Outlook.com 12 | * 2019/4/9 13 | * Video Cover Controller Base 14 | * 封面控制器基类 15 | */ 16 | 17 | public abstract class BaseCoverController extends FrameLayout { 18 | 19 | public BaseCoverController(@NonNull Context context) { 20 | this(context,null); 21 | } 22 | 23 | public BaseCoverController(@NonNull Context context, @Nullable AttributeSet attrs) { 24 | this(context, attrs,0); 25 | } 26 | 27 | public BaseCoverController(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) { 28 | super(context, attrs, defStyleAttr); 29 | this.setOnClickListener(new OnClickListener() { 30 | @Override 31 | public void onClick(View v) { 32 | if(null!=mOnStartListener){ 33 | mOnStartListener.onStartPlay(); 34 | } 35 | } 36 | }); 37 | } 38 | 39 | public interface OnStartListener{ 40 | void onStartPlay(); 41 | } 42 | 43 | protected OnStartListener mOnStartListener; 44 | 45 | public void setOnStartListener(OnStartListener onStartListener) { 46 | mOnStartListener = onStartListener; 47 | } 48 | 49 | public void onDestroy(){ 50 | mOnStartListener=null; 51 | } 52 | } -------------------------------------------------------------------------------- /video-player/src/main/java/com/video/player/lib/listener/OnVideoEventListener.java: -------------------------------------------------------------------------------- 1 | package com.video.player.lib.listener; 2 | 3 | /** 4 | * TinyHung@Outlook.com 5 | * 2019/4/23 6 | * 视频播放状态,若关心视频播放器内部状态,请注册此抽象类并按需实现抽象方法,所有方法都在主线程回调 7 | * 此抽象类方法回调时机时播放器内部UI处理完成后开始回调,onPlayingPresent()方法 500毫秒回调一次, 8 | * 请注意不要在此方法内耗时操作 9 | */ 10 | 11 | public abstract class OnVideoEventListener { 12 | 13 | /** 14 | * 播放中各种状态,开始、暂停、恢复、停止、完成、失败 等 15 | * @param videoPlayerState 详见 VideoConstants. 定义说明 16 | */ 17 | public void onPlayerStatus(int videoPlayerState){} 18 | 19 | /** 20 | * 播放进度,此方法在播放状态中持续被回调,已暂停情况下总时长和已播放时长返回-1 21 | * @param currentDurtion 实时播放位置 毫秒 22 | * @param totalDurtion 总长度 毫秒 23 | * @param bufferProgress 缓冲进度 百分比 24 | */ 25 | public void onPlayingPresent(long currentDurtion,long totalDurtion,int bufferProgress){} 26 | } -------------------------------------------------------------------------------- /video-player/src/main/java/com/video/player/lib/listener/VideoPlayerEventListener.java: -------------------------------------------------------------------------------- 1 | package com.video.player.lib.listener; 2 | 3 | /** 4 | * TinyHung@Outlook.com 5 | * 2018/1/18. 6 | * MusicPlayer Event Listener 7 | */ 8 | 9 | public interface VideoPlayerEventListener { 10 | 11 | /** 12 | * 播放器所有状态回调 13 | * @param playerState 播放器内部状态,详见VideoConstants.定义 14 | */ 15 | void onVideoPlayerState(int playerState, String message); 16 | 17 | /** 18 | * 播放器准备好了 19 | * @param totalDurtion 总时长 20 | */ 21 | void onPrepared(long totalDurtion); 22 | 23 | /** 24 | * 缓冲百分比 25 | * @param percent 百分比 26 | */ 27 | void onBufferingUpdate(int percent); 28 | 29 | /** 30 | * 播放器反馈信息 31 | * @param event 事件 32 | * @param extra 33 | */ 34 | void onInfo(int event, int extra); 35 | 36 | /** 37 | * 音频地址无效,组件可处理付费购买等逻辑 38 | */ 39 | void onVideoPathInvalid(); 40 | 41 | /** 42 | * @param totalDurtion 音频总时间 43 | * @param currentDurtion 当前播放的位置 44 | * @param bufferPercent 缓冲进度,从常规默认切换至全屏、小窗时,应该关心此进度 45 | */ 46 | void onTaskRuntime(long totalDurtion, long currentDurtion,int bufferPercent); 47 | 48 | /** 49 | * 播放器播放实时进度,每100毫秒回调一次 50 | * @param totalPosition 视频总时长 单位毫秒 51 | * @param currentPosition 播放实时位置时长,单位毫秒 52 | * @param bufferPercent 缓冲进度,单位:百分比 53 | */ 54 | void currentPosition(long totalPosition,long currentPosition,int bufferPercent); 55 | 56 | /** 57 | * 销毁 58 | */ 59 | void onDestroy(); 60 | } -------------------------------------------------------------------------------- /video-player/src/main/java/com/video/player/lib/utils/Logger.java: -------------------------------------------------------------------------------- 1 | package com.video.player.lib.utils; 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 | -------------------------------------------------------------------------------- /video-player/src/main/java/com/video/player/lib/view/VideoDetailsPlayerTrackView.java: -------------------------------------------------------------------------------- 1 | package com.video.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.video.player.lib.R; 8 | import com.video.player.lib.base.BaseVideoPlayer; 9 | import com.video.player.lib.controller.DefaultGestureController; 10 | import com.video.player.lib.controller.DefaultVideoController; 11 | import com.video.player.lib.controller.DetailsCoverController; 12 | 13 | /** 14 | * TinyHung@Outlook.com 15 | * 2019/4/11 16 | * Video Default Controller 17 | */ 18 | 19 | public class VideoDetailsPlayerTrackView extends BaseVideoPlayer{ 21 | 22 | @Override 23 | protected int getLayoutID() { 24 | return R.layout.video_default_track_layout; 25 | } 26 | 27 | public VideoDetailsPlayerTrackView(@NonNull Context context) { 28 | this(context,null); 29 | } 30 | 31 | public VideoDetailsPlayerTrackView(@NonNull Context context, @Nullable AttributeSet attrs) { 32 | this(context, attrs,0); 33 | } 34 | 35 | public VideoDetailsPlayerTrackView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) { 36 | super(context, attrs, defStyleAttr); 37 | } 38 | } -------------------------------------------------------------------------------- /video-player/src/main/java/com/video/player/lib/view/VideoPlayerTrackView.java: -------------------------------------------------------------------------------- 1 | package com.video.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.video.player.lib.R; 8 | import com.video.player.lib.base.BaseVideoPlayer; 9 | import com.video.player.lib.controller.DefaultCoverController; 10 | import com.video.player.lib.controller.DefaultGestureController; 11 | import com.video.player.lib.controller.DefaultVideoController; 12 | 13 | /** 14 | * TinyHung@Outlook.com 15 | * 2019/4/8 16 | * Default Video 17 | * 示例视频播放器 18 | */ 19 | 20 | public class VideoPlayerTrackView extends BaseVideoPlayer { 22 | 23 | @Override 24 | protected int getLayoutID() { 25 | return R.layout.video_default_track_layout; 26 | } 27 | 28 | public VideoPlayerTrackView(@NonNull Context context) { 29 | this(context,null); 30 | } 31 | 32 | public VideoPlayerTrackView(@NonNull Context context, @Nullable AttributeSet attrs) { 33 | this(context, attrs,0); 34 | } 35 | 36 | public VideoPlayerTrackView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) { 37 | super(context, attrs, defStyleAttr); 38 | } 39 | } -------------------------------------------------------------------------------- /video-player/src/main/java/com/video/player/lib/view/VideoTextrueProvider.java: -------------------------------------------------------------------------------- 1 | package com.video.player.lib.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 | * TinyHung@Outlook.com 11 | * 2019/4/11 12 | * ViewRound Radius 13 | */ 14 | 15 | @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) 16 | public class VideoTextrueProvider extends ViewOutlineProvider { 17 | 18 | private float mRadius; 19 | 20 | public VideoTextrueProvider(float radius){ 21 | this.mRadius = radius; 22 | } 23 | 24 | @Override 25 | public void getOutline(View view, Outline outline) { 26 | outline.setRoundRect(0, 0, view.getWidth(), view.getHeight(), mRadius); 27 | view.setClipToOutline(true); 28 | } 29 | } -------------------------------------------------------------------------------- /video-player/src/main/res/drawable-xxhdpi/ic_player_loading_back_bg.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/video-player/src/main/res/drawable-xxhdpi/ic_player_loading_back_bg.webp -------------------------------------------------------------------------------- /video-player/src/main/res/drawable-xxhdpi/ic_video_back_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/video-player/src/main/res/drawable-xxhdpi/ic_video_back_white.png -------------------------------------------------------------------------------- /video-player/src/main/res/drawable-xxhdpi/ic_video_brightness.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/video-player/src/main/res/drawable-xxhdpi/ic_video_brightness.png -------------------------------------------------------------------------------- /video-player/src/main/res/drawable-xxhdpi/ic_video_controller_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/video-player/src/main/res/drawable-xxhdpi/ic_video_controller_menu.png -------------------------------------------------------------------------------- /video-player/src/main/res/drawable-xxhdpi/ic_video_controller_pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/video-player/src/main/res/drawable-xxhdpi/ic_video_controller_pause.png -------------------------------------------------------------------------------- /video-player/src/main/res/drawable-xxhdpi/ic_video_controller_play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/video-player/src/main/res/drawable-xxhdpi/ic_video_controller_play.png -------------------------------------------------------------------------------- /video-player/src/main/res/drawable-xxhdpi/ic_video_cover_play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/video-player/src/main/res/drawable-xxhdpi/ic_video_cover_play.png -------------------------------------------------------------------------------- /video-player/src/main/res/drawable-xxhdpi/ic_video_default_cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/video-player/src/main/res/drawable-xxhdpi/ic_video_default_cover.png -------------------------------------------------------------------------------- /video-player/src/main/res/drawable-xxhdpi/ic_video_full_scrrent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/video-player/src/main/res/drawable-xxhdpi/ic_video_full_scrrent.png -------------------------------------------------------------------------------- /video-player/src/main/res/drawable-xxhdpi/ic_video_gesture_last.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/video-player/src/main/res/drawable-xxhdpi/ic_video_gesture_last.png -------------------------------------------------------------------------------- /video-player/src/main/res/drawable-xxhdpi/ic_video_gesture_next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/video-player/src/main/res/drawable-xxhdpi/ic_video_gesture_next.png -------------------------------------------------------------------------------- /video-player/src/main/res/drawable-xxhdpi/ic_video_loading_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/video-player/src/main/res/drawable-xxhdpi/ic_video_loading_1.png -------------------------------------------------------------------------------- /video-player/src/main/res/drawable-xxhdpi/ic_video_loading_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/video-player/src/main/res/drawable-xxhdpi/ic_video_loading_10.png -------------------------------------------------------------------------------- /video-player/src/main/res/drawable-xxhdpi/ic_video_loading_11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/video-player/src/main/res/drawable-xxhdpi/ic_video_loading_11.png -------------------------------------------------------------------------------- /video-player/src/main/res/drawable-xxhdpi/ic_video_loading_12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/video-player/src/main/res/drawable-xxhdpi/ic_video_loading_12.png -------------------------------------------------------------------------------- /video-player/src/main/res/drawable-xxhdpi/ic_video_loading_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/video-player/src/main/res/drawable-xxhdpi/ic_video_loading_2.png -------------------------------------------------------------------------------- /video-player/src/main/res/drawable-xxhdpi/ic_video_loading_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/video-player/src/main/res/drawable-xxhdpi/ic_video_loading_3.png -------------------------------------------------------------------------------- /video-player/src/main/res/drawable-xxhdpi/ic_video_loading_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/video-player/src/main/res/drawable-xxhdpi/ic_video_loading_4.png -------------------------------------------------------------------------------- /video-player/src/main/res/drawable-xxhdpi/ic_video_loading_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/video-player/src/main/res/drawable-xxhdpi/ic_video_loading_5.png -------------------------------------------------------------------------------- /video-player/src/main/res/drawable-xxhdpi/ic_video_loading_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/video-player/src/main/res/drawable-xxhdpi/ic_video_loading_6.png -------------------------------------------------------------------------------- /video-player/src/main/res/drawable-xxhdpi/ic_video_loading_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/video-player/src/main/res/drawable-xxhdpi/ic_video_loading_7.png -------------------------------------------------------------------------------- /video-player/src/main/res/drawable-xxhdpi/ic_video_loading_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/video-player/src/main/res/drawable-xxhdpi/ic_video_loading_8.png -------------------------------------------------------------------------------- /video-player/src/main/res/drawable-xxhdpi/ic_video_loading_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/video-player/src/main/res/drawable-xxhdpi/ic_video_loading_9.png -------------------------------------------------------------------------------- /video-player/src/main/res/drawable-xxhdpi/ic_video_sound.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/video-player/src/main/res/drawable-xxhdpi/ic_video_sound.png -------------------------------------------------------------------------------- /video-player/src/main/res/drawable-xxhdpi/ic_video_sound_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/video-player/src/main/res/drawable-xxhdpi/ic_video_sound_off.png -------------------------------------------------------------------------------- /video-player/src/main/res/drawable-xxhdpi/ic_video_tiny_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/video-player/src/main/res/drawable-xxhdpi/ic_video_tiny_close.png -------------------------------------------------------------------------------- /video-player/src/main/res/drawable-xxhdpi/ic_video_title_bar_back_noimal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/video-player/src/main/res/drawable-xxhdpi/ic_video_title_bar_back_noimal.png -------------------------------------------------------------------------------- /video-player/src/main/res/drawable-xxhdpi/ic_video_title_bar_back_pre.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/video-player/src/main/res/drawable-xxhdpi/ic_video_title_bar_back_pre.png -------------------------------------------------------------------------------- /video-player/src/main/res/drawable-xxhdpi/ic_video_window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/video-player/src/main/res/drawable-xxhdpi/ic_video_window.png -------------------------------------------------------------------------------- /video-player/src/main/res/drawable-xxhdpi/ic_video_window_scrrent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hty527/iMusic/04223a0892e719fb3495abaad1beeaa9b6d9aedf/video-player/src/main/res/drawable-xxhdpi/ic_video_window_scrrent.png -------------------------------------------------------------------------------- /video-player/src/main/res/drawable/video_bottom_progress.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /video-player/src/main/res/drawable/video_bottom_seek_progress.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /video-player/src/main/res/drawable/video_bottom_seek_thumb.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /video-player/src/main/res/drawable/video_controllect_bottom_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | -------------------------------------------------------------------------------- /video-player/src/main/res/drawable/video_controllect_top_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | -------------------------------------------------------------------------------- /video-player/src/main/res/drawable/video_controller_back_white_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /video-player/src/main/res/drawable/video_cover_bottom_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | -------------------------------------------------------------------------------- /video-player/src/main/res/drawable/video_loading_anim.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /video-player/src/main/res/drawable/video_regulate_pogress_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /video-player/src/main/res/drawable/video_regulate_progress.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /video-player/src/main/res/drawable/video_seek_thumb_normal.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 8 | 9 | -------------------------------------------------------------------------------- /video-player/src/main/res/drawable/video_seek_thumb_pressed.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 8 | 9 | -------------------------------------------------------------------------------- /video-player/src/main/res/drawable/video_text_button_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | -------------------------------------------------------------------------------- /video-player/src/main/res/drawable/video_text_play_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /video-player/src/main/res/layout/video_default_track_layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 11 | 12 | 16 | 17 | 21 | -------------------------------------------------------------------------------- /video-player/src/main/res/layout/video_details_cover_controller_layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 12 | -------------------------------------------------------------------------------- /video-player/src/main/res/layout/video_mini_window_controller_layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 16 | 17 | 25 | 26 | 33 | -------------------------------------------------------------------------------- /video-player/src/main/res/values-v19/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 24dp 3 | 4 | -------------------------------------------------------------------------------- /video-player/src/main/res/values-zh-rCN/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 哎呀,播放视频失败了 请重试 4 | 点击重试 5 | 当前网络未连接WIFI,将使用流量播放 6 | 继续播放 7 | -------------------------------------------------------------------------------- /video-player/src/main/res/values/color.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #8000ff 4 | #5F04B9 5 | -------------------------------------------------------------------------------- /video-player/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 0dp 3 | 4 | -------------------------------------------------------------------------------- /video-player/src/main/res/values/ids.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /video-player/src/main/res/values/integers.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 66 4 | -------------------------------------------------------------------------------- /video-player/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Bad, video playback failed ~ 3 | Click to try again 4 | The current network unconnected WIFI, will play using traffic 5 | Keep playing 6 | -------------------------------------------------------------------------------- /video-player/src/test/java/com/video/player/lib/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.video.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 | } --------------------------------------------------------------------------------