use of com.cyl.musiclake.bean.Music in project MusicLake by caiyonglong.
the class ArtistSongsFragment method listener.
@SuppressWarnings({ "unchecked", "varargs" })
@Override
protected void listener() {
mAdapter.setOnItemClickListener((adapter, view, position) -> {
if (view.getId() != R.id.iv_more) {
List<Music> musicList = adapter.getData();
PlayManager.setPlayList(musicList);
PlayManager.play(position);
}
});
mAdapter.setOnItemChildClickListener((adapter, view, position) -> {
PopupMenu popupMenu = new PopupMenu(getContext(), view);
popupMenu.setOnMenuItemClickListener(item -> {
switch(item.getItemId()) {
case R.id.popup_song_play:
PlayManager.setPlayList((List<Music>) adapter.getData());
PlayManager.play(position);
break;
case R.id.popup_song_detail:
ShowDetailDialog.newInstance((Music) adapter.getItem(position)).show(getChildFragmentManager(), getTag());
break;
case R.id.popup_song_addto_queue:
AddPlaylistDialog.newInstance(musicInfos.get(position)).show(getChildFragmentManager(), "ADD_PLAYLIST");
break;
}
return false;
});
popupMenu.inflate(R.menu.popup_album);
popupMenu.show();
});
}
use of com.cyl.musiclake.bean.Music in project MusicLake by caiyonglong.
the class ArtistInfoActivity method initData.
@Override
protected void initData() {
Music music = getIntent().getParcelableExtra(Extras.TING_UID);
mPresenter = new ArtistInfoPresenter();
mPresenter.attachView(this);
mPresenter.loadArtistInfo(music);
}
use of com.cyl.musiclake.bean.Music in project MusicLake by caiyonglong.
the class SearchActivity method listener.
@SuppressWarnings({ "unchecked", "varargs" })
@Override
protected void listener() {
mAdapter.setOnItemClickListener((adapter, view, position) -> {
Music music = searchResults.get(position);
Log.e(TAG, music.toString());
mPresenter.getMusicInfo(0, music);
});
mAdapter.setOnItemChildClickListener((adapter, view, position) -> {
Music music = searchResults.get(position);
PopupMenu popupMenu = new PopupMenu(this, view);
popupMenu.setOnMenuItemClickListener(item -> {
switch(item.getItemId()) {
case R.id.popup_song_detail:
ShowDetailDialog.newInstance(music).show(getSupportFragmentManager(), TAG);
break;
case R.id.popup_song_goto_artist:
Log.e(TAG, music.toString());
Intent intent = new Intent(this, ArtistInfoActivity.class);
intent.putExtra(Extras.TING_UID, music);
startActivity(intent);
break;
case R.id.popup_add_playlist:
mPresenter.addPlaylist(music);
break;
case R.id.popup_song_download:
mPresenter.getMusicInfo(1, music);
break;
}
return true;
});
popupMenu.inflate(R.menu.popup_song_online);
popupMenu.show();
});
mAdapter.setOnLoadMoreListener(() -> mRecyclerView.postDelayed(() -> {
TOTAL_COUNTER = limit * mOffset * 2;
if (mCurrentCounter < TOTAL_COUNTER) {
// 数据全部加载完毕
mAdapter.loadMoreEnd();
} else {
mOffset++;
// 成功获取更多数据
mPresenter.search(queryString, limit, mOffset);
}
}, 1000), mRecyclerView);
}
use of com.cyl.musiclake.bean.Music in project MusicLake by caiyonglong.
the class PlayControlsPresenter method updateNowPlayingCard.
@Override
public void updateNowPlayingCard() {
Log.d(TAG, "updateNowPlayingCard" + mProgress);
Music music = PlayManager.getPlayingMusic();
if (music == null || PlayManager.getPlayList().size() == 0) {
Bitmap bitmap = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.default_cover);
mView.setAlbumArt(bitmap);
mView.setTitle(mContext.getResources().getString(R.string.app_name));
mView.setArtist("");
mView.updatePanelLayout(false);
return;
} else {
mView.updatePanelLayout(true);
}
final String title = PlayManager.getSongName();
final String artist = PlayManager.getSongArtist();
if (TextUtils.isEmpty(title) && TextUtils.isEmpty(artist)) {
mView.setTitle(mContext.getResources().getString(R.string.app_name));
mView.setArtist("");
} else {
mView.setTitle(title);
mView.setArtist(artist);
}
String picUrl = CoverLoader.getInstance().getCoverUriByMusic(music);
// 设置音乐来源
mView.setOtherInfo(music.getTypeName(false));
// 获取当前歌曲状态
AppRepository.getMusicInfo(mContext, music).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(music1 -> mView.updateFavorite(music1.isLove()));
if (!isPlayPauseClick && !activity.isFinishing()) {
loadLyric();
GlideApp.with(mContext).asBitmap().load(picUrl != null ? picUrl : CoverLoader.getInstance().getCoverUriByRandom()).error(CoverLoader.getInstance().getCoverUriByRandom()).diskCacheStrategy(DiskCacheStrategy.ALL).into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(Bitmap resource, Transition<? super Bitmap> transition) {
mView.setAlbumArt(resource);
mView.setAlbumArt(ImageUtils.createBlurredImageFromBitmap(resource, mContext, 12));
new Palette.Builder(resource).generate(palette -> mView.setPalette(palette));
}
});
}
isPlayPauseClick = false;
mHandler.post(updateProgress);
}
use of com.cyl.musiclake.bean.Music in project MusicLake by caiyonglong.
the class PlayControlsPresenter method loadLyric.
@Override
public void loadLyric() {
Music music = PlayManager.getPlayingMusic();
if (music == null) {
return;
}
if (isPlayPauseClick)
return;
String lrcPath = FileUtils.getLrcDir() + music.getTitle() + "-" + music.getArtist() + ".lrc";
if (FileUtils.exists(lrcPath)) {
mView.showLyric(lrcPath, true);
} else {
Observable<String> observable = MusicApi.getLyricInfo(music);
if (observable == null) {
LogUtil.e(TAG, "本地文件为空");
mView.showLyric(null, false);
} else {
observable.subscribe(new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(String lyricInfo) {
Log.e(TAG, lyricInfo);
mView.showLyric(lyricInfo, false);
}
@Override
public void onError(Throwable e) {
mView.showLyric(null, false);
}
@Override
public void onComplete() {
}
});
}
}
}
Aggregations