├── .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 |
14 |
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 |
14 |
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 |
14 |
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 |
14 |
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 |
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 |
14 |
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 |
14 |
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 |
14 |
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 | }
--------------------------------------------------------------------------------