package org.cuieney.videolife.ui.fragment.music; import android.content.res.ColorStateList; import android.graphics.Bitmap; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.design.widget.CollapsingToolbarLayout; import android.support.design.widget.FloatingActionButton; import android.support.v7.graphics.Palette; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.Toolbar; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.bumptech.glide.Glide; import com.bumptech.glide.request.animation.GlideAnimation; import com.bumptech.glide.request.target.SimpleTarget; import com.google.gson.Gson; import com.jcodecraeer.xrecyclerview.XRecyclerView; import com.konifar.fab_transformation.FabTransformation; import com.ms.square.android.expandabletextview.ExpandableTextView; import org.cuieney.videolife.R; import org.cuieney.videolife.common.image.ImageLoader; import org.cuieney.videolife.common.utils.LogUtil; import org.cuieney.videolife.common.utils.PreferenceUtil; import org.cuieney.videolife.entity.MusicListBean; import org.cuieney.videolife.ui.adapter.MusicItemAdapter; import org.cuieney.videolife.common.base.BaseBackFragment; import org.cuieney.videolife.ui.video.JumpUtils; /** * Created by cuieney on 17/3/4. */ public class MusicDetailFragment extends BaseBackFragment { ImageView mImgDetail; Toolbar mToolbar; FloatingActionButton mFab; private CollapsingToolbarLayout collToolBar; private XRecyclerView recycler; private MusicListBean dataBean; public static MusicDetailFragment newInstance(MusicListBean dataBean) { Bundle args = new Bundle(); args.putParcelable(ARG_ITEM, dataBean); MusicDetailFragment fragment = new MusicDetailFragment(); fragment.setArguments(args); return fragment; } @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); dataBean = getArguments().getParcelable(ARG_ITEM); PreferenceUtil.getInstance(getContext()).putString("JSON",new Gson().toJson(dataBean.getTracks())); } @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.music_home_detail_fragment, container, false); initView(view); return view; } private void initView(View view) { mToolbar = ((Toolbar) view.findViewById(R.id.toolbar)); collToolBar = ((CollapsingToolbarLayout) view.findViewById(R.id.toolbar_layout)); mImgDetail = (ImageView) view.findViewById(R.id.img_detail); mFab = (FloatingActionButton) view.findViewById(R.id.fab); recycler = ((XRecyclerView) view.findViewById(R.id.recycler)); recycler.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false)); initColor(); mToolbar.setTitle(""); initToolbarNav(mToolbar); ImageLoader.loadAll(getActivity(), dataBean.getOphoto(), mImgDetail); recycler.setLoadingMoreEnabled(false); recycler.setPullRefreshEnabled(false); recycler.setAdapter(new MusicItemAdapter(getActivity(), dataBean.getTracks())); initHeadView(); mFab.setOnClickListener(v -> { if (mFab.getVisibility() == View.VISIBLE) { FabTransformation.with(mFab).setListener(new FabTransformation.OnTransformListener() { @Override public void onStartTransform() { } @Override public void onEndTransform() { JumpUtils.goToMusicPlayer(getActivity(), mImgDetail, dataBean); } }).transformTo(mImgDetail); } }); } private void initHeadView() { View inflate = LayoutInflater.from(getContext()).inflate(R.layout.music_detial_top_item, null); TextView title = (TextView) inflate.findViewById(R.id.title); ExpandableTextView expandableTextView = (ExpandableTextView) inflate.findViewById(R.id.expand_text_view); expandableTextView.setText(dataBean.getMdesc()); title.setText(dataBean.getMname()); recycler.addHeaderView(inflate); } int color = 0xffffcc00; private void initColor() { Glide.with(getContext()).load(dataBean.getOphoto()).asBitmap().into(new SimpleTarget<Bitmap>() { @Override public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) { Palette.from(resource).generate(palette -> { try { color = palette.getLightMutedSwatch().getRgb(); } catch (Exception e) { LogUtil.d(e.getMessage()); } collToolBar.setContentScrimColor(color); mFab.setBackgroundTintList(new ColorStateList(new int[][]{new int[0]}, new int[]{color})); }); } }); } @Override public void onResume() { super.onResume(); FabTransformation.with(mFab).setListener(new FabTransformation.OnTransformListener() { @Override public void onStartTransform() { } @Override public void onEndTransform() { if (mImgDetail.getVisibility() == View.INVISIBLE) { mImgDetail.setVisibility(View.VISIBLE); } } }).transformFrom(mImgDetail); } }