package me.zhengken.zkmusicplayer.mainactivity; import android.graphics.Bitmap; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.SeekBar; import android.widget.TextView; import java.io.File; import butterknife.BindView; import butterknife.ButterKnife; import me.zhengken.lyricview.LyricView; import me.zhengken.zkmusicplayer.R; import me.zhengken.zkmusicplayer.util.TextUtils; import static com.google.common.base.Preconditions.checkNotNull; public class MainFragment extends Fragment implements MainContract.View, View.OnClickListener, SeekBar.OnSeekBarChangeListener, LyricView.OnPlayerClickListener { private static final String TAG = "MainFragment"; private MainContract.Presenter mPresenter; private boolean displayLrc = false; @BindView(R.id.background_blur) ImageView mCoverGauss; @BindView(R.id.linear_layout_music_cover) LinearLayout mDisplayLrc; @BindView(R.id.custom_lyric_view) LyricView mLyricView; @BindView(R.id.cover) ImageView mCover; @BindView(R.id.cover_mirror) ImageView mCoverMirror; @BindView(R.id.music_title) TextView mTitle; @BindView(R.id.music_artist) TextView mArtist; @BindView(R.id.end_time) TextView mEndTime; @BindView(R.id.start_time) TextView mStartTime; @BindView(R.id.music_seek_bar) SeekBar mSeekBar; @BindView(R.id.btn_mode) ImageView mPlayMode; @BindView(R.id.btn_prev) ImageView mPrev; @BindView(R.id.btn_play_pause) ImageView mPlayPause; @BindView(R.id.btn_next) ImageView mNext; public MainFragment() { // Required empty public constructor } /** * Use this factory method to create a new instance of this fragment using the provided * parameters. * * @return A new instance of fragment MainFragment. */ // TODO: Rename and change types and number of parameters public static MainFragment newInstance() { return new MainFragment(); } @Override public void setPresenter(@NonNull MainContract.Presenter presenter) { mPresenter = checkNotNull(presenter); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_main, container, false); ButterKnife.bind(this, view); // Inflate the layout for this fragment return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); setListener(); } @Override public void updateTitle(String title) { if (mTitle == null) { return; } checkNotNull(title); mTitle.setText(title); } @Override public void updateArtist(String artist) { if (mArtist == null) { return; } checkNotNull(artist); mArtist.setText(artist); } @Override public void setEndTime(String time) { if (mEndTime == null) { return; } mEndTime.setText(time); } @Override public void resetSeekBar(int max) { if (mSeekBar == null) { return; } mSeekBar.setMax(max); mSeekBar.setProgress(0); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_play_pause: mPresenter.onBtnPlayPausePressed(); break; case R.id.linear_layout_music_cover: if (displayLrc = !displayLrc) { mLyricView.setVisibility(View.VISIBLE); mCover.setVisibility(View.GONE); mCoverMirror.setVisibility(View.GONE); } else { mLyricView.setVisibility(View.GONE); mCover.setVisibility(View.VISIBLE); mCoverMirror.setVisibility(View.VISIBLE); } break; } } @Override public void setListener() { mDisplayLrc.setOnClickListener(this); mPlayMode.setOnClickListener(this); mPrev.setOnClickListener(this); mPlayPause.setOnClickListener(this); mNext.setOnClickListener(this); mSeekBar.setOnSeekBarChangeListener(this); mLyricView.setOnPlayerClickListener(this); } @Override public void initLrcView(File lrcFile) { mLyricView.setLyricFile(lrcFile); } @Override public void updateLrcView(int progress) { mLyricView.setCurrentTimeMillis(progress); } @Override public void updateCoverGauss(Bitmap bitmap) { if (bitmap != null) { mCoverGauss.setImageBitmap(bitmap); } else { mCoverGauss.setImageDrawable(getResources().getDrawable(R.drawable.default_cover_blur)); } } @Override public void updateCover(Bitmap bitmap) { if (bitmap != null) { mCover.setImageBitmap(bitmap); } else { mCover.setImageDrawable(getResources().getDrawable(R.drawable.default_cover)); } } @Override public void updateCoverMirror(Bitmap bitmap) { if (bitmap != null) { mCoverMirror.setImageBitmap(bitmap); } else { mCover.setImageDrawable(getResources().getDrawable(R.drawable.default_cover_mirror)); } } @Override public void updatePlayButton(boolean setPlayImage) { if (mPlayPause == null) { return; } if (setPlayImage) { mPlayPause.setImageDrawable(getResources().getDrawable(R.drawable.btn_play_selector)); } else { mPlayPause.setImageDrawable(getResources().getDrawable(R.drawable.btn_pause_selector)); } } @Override public void updateSeekBar(int progress) { if (mSeekBar == null || mStartTime == null) { return; } mStartTime.setText(TextUtils.duration2String(progress)); mSeekBar.setProgress(progress); } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { if (fromUser) { mPresenter.onProgressChanged(progress); } } @Override public void onStartTrackingTouch(SeekBar seekBar) { mPresenter.pause(); } @Override public void onStopTrackingTouch(SeekBar seekBar) { mPresenter.play(); } @Override public void onPlayerClicked(long progress, String content) { mPresenter.play(); mPresenter.onProgressChanged((int) progress); } }