diff --git a/app/src/main/assets/litepal.xml b/app/src/main/assets/litepal.xml index 2472e5c..4a00860 100644 --- a/app/src/main/assets/litepal.xml +++ b/app/src/main/assets/litepal.xml @@ -2,7 +2,7 @@ - + @@ -10,5 +10,6 @@ + \ No newline at end of file diff --git a/app/src/main/java/com/example/musicplayer/adapter/ExpandableListViewAdapter.java b/app/src/main/java/com/example/musicplayer/adapter/ExpandableListViewAdapter.java index 8759fbe..b52072d 100644 --- a/app/src/main/java/com/example/musicplayer/adapter/ExpandableListViewAdapter.java +++ b/app/src/main/java/com/example/musicplayer/adapter/ExpandableListViewAdapter.java @@ -8,20 +8,33 @@ import android.widget.BaseExpandableListAdapter; import android.widget.ImageView; import android.widget.TextView; +import com.andexert.library.RippleView; import com.example.musicplayer.R; +import com.example.musicplayer.entiy.AlbumCollection; +import com.example.musicplayer.util.CommonUtil; + +import java.util.List; /** * Created by 残渊 on 2018/9/23. */ public class ExpandableListViewAdapter extends BaseExpandableListAdapter { - private String [] mGroupStrings; - private String [][] mChildStrings; + private static final String TAG = "ExpandableListViewAdapter"; + + private String[] mGroupStrings; + private List> mAlbumCollectionList; private Context mContext; - public ExpandableListViewAdapter(Context context, String [] groupStrings, String [][] childStrings){ - mChildStrings=childStrings; - mGroupStrings=groupStrings; - mContext=context; + private OnChildItemClickListener mChildClickListener; + + + public ExpandableListViewAdapter(Context context, String[] groupStrings, List> albumCollectionList) { + mAlbumCollectionList = albumCollectionList; + mGroupStrings = groupStrings; + mContext = context; + } + public void setOnChildItemClickListener(OnChildItemClickListener onChildItemClickListener){ + mChildClickListener=onChildItemClickListener; } @Override @@ -31,7 +44,7 @@ public class ExpandableListViewAdapter extends BaseExpandableListAdapter { @Override public int getChildrenCount(int groupPosition) { - return mChildStrings[groupPosition].length; + return mAlbumCollectionList.get(groupPosition).size(); } @Override @@ -41,7 +54,7 @@ public class ExpandableListViewAdapter extends BaseExpandableListAdapter { @Override public Object getChild(int groupPosition, int childPosition) { - return mChildStrings[groupPosition][childPosition]; + return mAlbumCollectionList.get(groupPosition).get(childPosition); } @Override @@ -56,54 +69,84 @@ public class ExpandableListViewAdapter extends BaseExpandableListAdapter { @Override public boolean hasStableIds() { - return false; + return true; } @Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { View view; - GroupViewHolder groupViewHolder; - if(convertView==null){ - view= LayoutInflater.from(mContext).inflate(R.layout.item_first,parent,false); - groupViewHolder=new GroupViewHolder(); - groupViewHolder.groupTextView=view.findViewById(R.id.tv_new_song); + final GroupViewHolder groupViewHolder; + if (convertView == null) { + view = LayoutInflater.from(mContext).inflate(R.layout.item_first, parent, false); + groupViewHolder = new GroupViewHolder(); + groupViewHolder.groupTextView = view.findViewById(R.id.tv_new_song); + groupViewHolder.pointIv = view.findViewById(R.id.iv_point); + groupViewHolder.addIv = view.findViewById(R.id.iv_add); view.setTag(groupViewHolder); - }else{ - view=convertView; - groupViewHolder=(GroupViewHolder)view.getTag(); + } else { + view = convertView; + groupViewHolder = (GroupViewHolder) view.getTag(); } groupViewHolder.groupTextView.setText(mGroupStrings[groupPosition]); + if (isExpanded) { + groupViewHolder.pointIv.setImageResource(R.drawable.up); + } else { + groupViewHolder.pointIv.setImageResource(R.drawable.down); + } return view; } + @Override - public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { + public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { View view; - ChildViewHolder childViewHolder; - if(convertView==null){ - view= LayoutInflater.from(mContext).inflate(R.layout.item_second,parent,false); - childViewHolder=new ChildViewHolder(); - childViewHolder.childTextView=view.findViewById(R.id.tv_song_list_name); + final ChildViewHolder childViewHolder; + if (convertView == null) { + childViewHolder = new ChildViewHolder(); + view = LayoutInflater.from(mContext).inflate(R.layout.item_second, parent, false); + childViewHolder.albumNameTv = view.findViewById(R.id.tv_album_name); + childViewHolder.faceIv = view.findViewById(R.id.iv_album); + childViewHolder.authorTv = view.findViewById(R.id.tv_author); + childViewHolder.childView = view.findViewById(R.id.ripple); view.setTag(childViewHolder); - }else{ - view=convertView; - childViewHolder=(ChildViewHolder) view.getTag(); + } else { + view = convertView; + childViewHolder = (ChildViewHolder) view.getTag(); } - childViewHolder.childTextView.setText(mChildStrings[groupPosition][childPosition]); + view.setBackgroundResource(R.color.translucent); + childViewHolder.albumNameTv.setText(mAlbumCollectionList.get(groupPosition).get(childPosition).getAlbumName()); + childViewHolder.authorTv.setText(mAlbumCollectionList.get(groupPosition).get(childPosition).getSingerName()); + CommonUtil.setImgWithGlide(mContext, + mAlbumCollectionList.get(groupPosition).get(childPosition).getAlbumPic(), childViewHolder.faceIv); + childViewHolder.childView.setOnRippleCompleteListener(new RippleView.OnRippleCompleteListener() { + @Override + public void onComplete(RippleView rippleView) { + mChildClickListener.onClick(groupPosition,childPosition); + } + }); return view; } @Override public boolean isChildSelectable(int groupPosition, int childPosition) { - return false; + return true; } - class GroupViewHolder{ + + + class GroupViewHolder { private TextView groupTextView; private ImageView pointIv; private ImageView addIv; } - class ChildViewHolder{ - private TextView childTextView; - private ImageView faceIv; + + class ChildViewHolder { + TextView albumNameTv; + ImageView faceIv; + TextView authorTv; + RippleView childView; + } + public interface OnChildItemClickListener{ + void onClick(int groupPosition,int childPosition); } + } diff --git a/app/src/main/java/com/example/musicplayer/constant/BroadcastName.java b/app/src/main/java/com/example/musicplayer/constant/BroadcastName.java index a4ea134..db60fef 100644 --- a/app/src/main/java/com/example/musicplayer/constant/BroadcastName.java +++ b/app/src/main/java/com/example/musicplayer/constant/BroadcastName.java @@ -16,5 +16,6 @@ public class BroadcastName { public static final String LOVE_SONG_CHANGE="love_song_change"; public static final String LOVE_SONG_CANCEL="love_song_cancel"; public static final String HISTORY_SONG_CHANGE="history_song_change"; + public static final String COLLECTION_ALBUM_CHANGE="collection_album_change"; } diff --git a/app/src/main/java/com/example/musicplayer/entiy/AlbumCollection.java b/app/src/main/java/com/example/musicplayer/entiy/AlbumCollection.java new file mode 100644 index 0000000..94a42cd --- /dev/null +++ b/app/src/main/java/com/example/musicplayer/entiy/AlbumCollection.java @@ -0,0 +1,73 @@ +package com.example.musicplayer.entiy; + +import org.litepal.crud.LitePalSupport; + +/** + * Created by 残渊 on 2018/12/4. + */ + +public class AlbumCollection extends LitePalSupport { + private long id; + private String albumId; + private String albumName; + private String singerName; + private String albumPic; + private String publicTime; + private String SongNum; + + public void setId(long id) { + this.id = id; + } + + public long getId() { + return id; + } + + public void setAlbumId(String albumId) { + this.albumId = albumId; + } + + public String getAlbumId() { + return albumId; + } + + public String getAlbumName() { + return albumName; + } + + public String getAlbumPic() { + return albumPic; + } + + public String getPublicTime() { + return publicTime; + } + + public String getSingerName() { + return singerName; + } + + public String getSongNum() { + return SongNum; + } + + public void setAlbumName(String albumName) { + this.albumName = albumName; + } + + public void setAlbumPic(String albumPic) { + this.albumPic = albumPic; + } + + public void setPublicTime(String publicTime) { + this.publicTime = publicTime; + } + + public void setSingerName(String singerName) { + this.singerName = singerName; + } + + public void setSongNum(String songNum) { + SongNum = songNum; + } +} diff --git a/app/src/main/java/com/example/musicplayer/service/PlayerService.java b/app/src/main/java/com/example/musicplayer/service/PlayerService.java index a700b64..83bbe0f 100644 --- a/app/src/main/java/com/example/musicplayer/service/PlayerService.java +++ b/app/src/main/java/com/example/musicplayer/service/PlayerService.java @@ -449,7 +449,7 @@ public class PlayerService extends Service { public void onFinish(boolean success) { if (success) { if(LitePal.findAll(HistorySong.class).size()>Constant.HISTORY_MAX_SIZE){ - LitePal.delete(HistorySong.class,LitePal.findAll(HistorySong.class).get(0).getId()); + LitePal.delete(HistorySong.class,LitePal.findFirst(HistorySong.class).getId()); } } } diff --git a/app/src/main/java/com/example/musicplayer/util/CommonUtil.java b/app/src/main/java/com/example/musicplayer/util/CommonUtil.java index bab84ec..bf32592 100644 --- a/app/src/main/java/com/example/musicplayer/util/CommonUtil.java +++ b/app/src/main/java/com/example/musicplayer/util/CommonUtil.java @@ -14,6 +14,7 @@ import android.view.View; import android.view.WindowManager; import android.view.inputmethod.InputMethodManager; import android.widget.EditText; +import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; @@ -168,5 +169,12 @@ public class CommonUtil { .into(target); return null; } + public static void setImgWithGlide(Context context,String imgUrl,ImageView view){ + Glide.with(context) + .load(imgUrl) + .apply(RequestOptions.placeholderOf(R.drawable.welcome)) + .apply(RequestOptions.errorOf(R.drawable.love)) + .into(view); + } } diff --git a/app/src/main/java/com/example/musicplayer/view/AlbumContentFragment.java b/app/src/main/java/com/example/musicplayer/view/AlbumContentFragment.java index 47e2f6f..0af72a9 100644 --- a/app/src/main/java/com/example/musicplayer/view/AlbumContentFragment.java +++ b/app/src/main/java/com/example/musicplayer/view/AlbumContentFragment.java @@ -1,5 +1,8 @@ package com.example.musicplayer.view; +import android.animation.AnimatorInflater; +import android.animation.AnimatorSet; +import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.drawable.BitmapDrawable; @@ -13,9 +16,12 @@ import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.util.Log; import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; +import android.widget.Button; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; @@ -26,9 +32,16 @@ import com.bumptech.glide.request.target.SimpleTarget; import com.bumptech.glide.request.target.Target; import com.bumptech.glide.request.transition.Transition; import com.example.musicplayer.R; +import com.example.musicplayer.constant.BroadcastName; +import com.example.musicplayer.entiy.Album; +import com.example.musicplayer.entiy.AlbumCollection; import com.example.musicplayer.util.CommonUtil; import com.github.florent37.materialviewpager.MaterialViewPager; +import org.litepal.LitePal; +import org.litepal.crud.callback.SaveCallback; +import org.litepal.crud.callback.UpdateOrDeleteCallback; + import javax.microedition.khronos.opengles.GL; /** @@ -36,15 +49,15 @@ import javax.microedition.khronos.opengles.GL; */ public class AlbumContentFragment extends Fragment { - private static final String TAG="AlbumContentFragment"; + private static final String TAG = "AlbumContentFragment"; - public static final String ALBUM_ID_KEY="id"; - private static final String ALBUM_NAME_KEY="albumName"; - private static final String SINGER_NAME_KEY="singerName"; - private static final String ALBUM_PIC_KEY="albumPic"; - public static final String PUBLIC_TIEM_KEY="publicTime"; + public static final String ALBUM_ID_KEY = "id"; + private static final String ALBUM_NAME_KEY = "albumName"; + private static final String SINGER_NAME_KEY = "singerName"; + private static final String ALBUM_PIC_KEY = "albumPic"; + public static final String PUBLIC_TIEM_KEY = "publicTime"; - private String mAlbumName,mSingerNmae,mAlbumPic,mPublicTime,mId; + private String mAlbumName, mSingerNmae, mAlbumPic, mPublicTime, mId; private MaterialViewPager mViewPager; private Toolbar toolbar; @@ -52,6 +65,14 @@ public class AlbumContentFragment extends Fragment { private TextView mSingerNameTv; private TextView mPublicTimeTv; private ImageView mAlbumPicIv; + private MenuItem mLoveBtn; + private boolean mLove; + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setHasOptionsMenu(true);//加上这句话,menu才会显示出来 + } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, @@ -66,12 +87,21 @@ public class AlbumContentFragment extends Fragment { mPublicTimeTv = mViewPager.getHeaderBackgroundContainer().findViewById(R.id.tv_public_time); return view; } + @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); initView(); } - private void initView(){ + @Override + public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { + inflater.inflate(R.menu.love, menu); + mLoveBtn = menu.findItem(R.id.btn_love); + showLove(); + super.onCreateOptionsMenu(menu, inflater); + } + + private void initView() { toolbar.setTitle(mAlbumName); SimpleTarget target = new SimpleTarget(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL) { @@ -88,16 +118,13 @@ public class AlbumContentFragment extends Fragment { .apply(RequestOptions.errorOf(R.drawable.welcome)) .into(target); - - - mSingerNameTv.setText("歌手 "+mSingerNmae); - mPublicTimeTv.setText("发行时间 "+mPublicTime); - + mSingerNameTv.setText("歌手 " + mSingerNmae); + mPublicTimeTv.setText("发行时间 " + mPublicTime); toolbar.setTitleTextColor(getActivity().getResources().getColor(R.color.white)); if (toolbar != null) { - ((AppCompatActivity)getActivity()).setSupportActionBar(toolbar); + ((AppCompatActivity) getActivity()).setSupportActionBar(toolbar); - final ActionBar actionBar = ((AppCompatActivity)getActivity()).getSupportActionBar(); + final ActionBar actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar(); if (actionBar != null) { actionBar.setDisplayHomeAsUpEnabled(true); actionBar.setDisplayShowHomeEnabled(true); @@ -113,16 +140,15 @@ public class AlbumContentFragment extends Fragment { getActivity().getSupportFragmentManager().popBackStack(); } }); - mViewPager.getViewPager().setAdapter(new FragmentStatePagerAdapter(getActivity().getSupportFragmentManager()) { @Override public Fragment getItem(int position) { switch (position) { case 0: - return AlbumSongFragment.newInstance(AlbumSongFragment.ALBUM_SONG,mId,mPublicTime); + return AlbumSongFragment.newInstance(AlbumSongFragment.ALBUM_SONG, mId, mPublicTime); case 1: - return AlbumSongFragment.newInstance(AlbumSongFragment.ALBUM_INFORATION,mId,mPublicTime); + return AlbumSongFragment.newInstance(AlbumSongFragment.ALBUM_INFORATION, mId, mPublicTime); default: return null; } @@ -153,22 +179,70 @@ public class AlbumContentFragment extends Fragment { } + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch (item.getItemId()) { + case R.id.btn_love: + if (mLove) { + LitePal.deleteAllAsync(AlbumCollection.class, "albumId=?", mId).listen(new UpdateOrDeleteCallback() { + @Override + public void onFinish(int rowsAffected) { + mLoveBtn.setIcon(R.drawable.favorites); + CommonUtil.showToast(getActivity(), "你已取消收藏该专辑"); + } + }); + } else { + AlbumCollection albumCollection = new AlbumCollection(); + albumCollection.setAlbumId(mId); + albumCollection.setAlbumName(mAlbumName); + albumCollection.setAlbumPic(mAlbumPic); + albumCollection.setPublicTime(mPublicTime); + albumCollection.setSingerName(mSingerNmae); + albumCollection.saveAsync().listen(new SaveCallback() { + @Override + public void onFinish(boolean success) { + mLoveBtn.setIcon(R.drawable.favorites_selected); + CommonUtil.showToast(getActivity(), "收藏专辑成功"); + } + }); + } + mLove = !mLove; + //发送收藏改变的广播通知收藏列表 + getActivity().sendBroadcast(new Intent(BroadcastName.COLLECTION_ALBUM_CHANGE)); + break; + } + return super.onOptionsItemSelected(item); + } + - public static Fragment newInstance(String id,String albumName,String albumPic,String singerName,String publicTime){ + private void showLove() { + if (LitePal.where("albumId=?", mId).find(AlbumCollection.class).size() != 0) { + mLove = true; + mLoveBtn.setIcon(R.drawable.favorites_selected); + } else { + mLove = false; + mLoveBtn.setIcon(R.drawable.favorites); + } + } + + + public static Fragment newInstance(String id, String albumName, String albumPic, String + singerName, String publicTime) { AlbumContentFragment albumContentFragment = new AlbumContentFragment(); Bundle bundle = new Bundle(); - bundle.putString(ALBUM_ID_KEY,id); - bundle.putString(ALBUM_NAME_KEY,albumName); - bundle.putString(ALBUM_PIC_KEY,albumPic); - bundle.putString(SINGER_NAME_KEY,singerName); - bundle.putString(PUBLIC_TIEM_KEY,publicTime); + bundle.putString(ALBUM_ID_KEY, id); + bundle.putString(ALBUM_NAME_KEY, albumName); + bundle.putString(ALBUM_PIC_KEY, albumPic); + bundle.putString(SINGER_NAME_KEY, singerName); + bundle.putString(PUBLIC_TIEM_KEY, publicTime); albumContentFragment.setArguments(bundle); return albumContentFragment; } - private void getBundle(){ - Bundle bundle =getArguments(); - if(bundle !=null){ - mId =bundle.getString(ALBUM_ID_KEY); + + private void getBundle() { + Bundle bundle = getArguments(); + if (bundle != null) { + mId = bundle.getString(ALBUM_ID_KEY); mAlbumName = bundle.getString(ALBUM_NAME_KEY); mAlbumPic = bundle.getString(ALBUM_PIC_KEY); mSingerNmae = bundle.getString(SINGER_NAME_KEY); diff --git a/app/src/main/java/com/example/musicplayer/view/AlbumSongFragment.java b/app/src/main/java/com/example/musicplayer/view/AlbumSongFragment.java index 184aba7..41afe71 100644 --- a/app/src/main/java/com/example/musicplayer/view/AlbumSongFragment.java +++ b/app/src/main/java/com/example/musicplayer/view/AlbumSongFragment.java @@ -132,7 +132,6 @@ public class AlbumSongFragment extends Fragment implements IAlbumSongContract.Vi @Override public void onDestroy(){ super.onDestroy(); - getActivity().unbindService(connection); getActivity().unregisterReceiver(albumSongChangeReceiver); } diff --git a/app/src/main/java/com/example/musicplayer/view/MainActivity.java b/app/src/main/java/com/example/musicplayer/view/MainActivity.java index 3c7a042..f61540d 100644 --- a/app/src/main/java/com/example/musicplayer/view/MainActivity.java +++ b/app/src/main/java/com/example/musicplayer/view/MainActivity.java @@ -259,7 +259,7 @@ public class MainActivity extends AppCompatActivity { public void onDestroy() { unbindService(connection); unregisterReceiver(songChangeReceiver); - mSeekBarThread.interrupt(); + if(mSeekBarThread!=null) mSeekBarThread.interrupt(); Song song = FileHelper.getSong(); song.setCurrentTime(mPlayStatusBinder.getCurrentTime()); Log.d(TAG, "onServiceDisconnected: " + song.getCurrentTime()); diff --git a/app/src/main/java/com/example/musicplayer/view/MainFragment.java b/app/src/main/java/com/example/musicplayer/view/MainFragment.java index c3fb5fc..f552da6 100644 --- a/app/src/main/java/com/example/musicplayer/view/MainFragment.java +++ b/app/src/main/java/com/example/musicplayer/view/MainFragment.java @@ -15,6 +15,7 @@ import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.ExpandableListAdapter; +import android.widget.ExpandableListView; import android.widget.LinearLayout; import android.widget.TextView; @@ -22,6 +23,8 @@ import com.example.musicplayer.R; import com.example.musicplayer.adapter.ExpandableListViewAdapter; import com.example.musicplayer.adapter.HistoryAdapter; import com.example.musicplayer.constant.BroadcastName; +import com.example.musicplayer.entiy.Album; +import com.example.musicplayer.entiy.AlbumCollection; import com.example.musicplayer.entiy.HistorySong; import com.example.musicplayer.entiy.LocalSong; import com.example.musicplayer.entiy.Love; @@ -30,6 +33,9 @@ import com.example.musicplayer.widget.MyListView; import org.litepal.LitePal; +import java.util.ArrayList; +import java.util.List; + /** * A simple {@link Fragment} subclass. */ @@ -38,16 +44,20 @@ public class MainFragment extends Fragment { private LinearLayout mFunctionLinear; private MyListView myListView; - private ExpandableListAdapter mAdapter; - private LinearLayout mLocalMusicLinear,mCollectionLinear,mHistoryMusicLinear; + private ExpandableListViewAdapter mAdapter; + private LinearLayout mLocalMusicLinear, mCollectionLinear, mHistoryMusicLinear; private Button playerBtn; - private TextView mLocalMusicNum,mLoveMusicNum,mHistoryMusicNum; + private TextView mLocalMusicNum, mLoveMusicNum, mHistoryMusicNum; private TextView mSeekBtn; + private List> mAlbumCollectionList; + private List mLoveAlbumList; + private boolean oneExpand; + private boolean twoExpand; private String[] mGroupStrings = {"自建歌单", "收藏歌单"}; private String[][] mSongStrings = { - {"我喜欢", "默认收藏", "哎呀不错哦", "残渊"}, - {"啦啦", "哈哈"} + {"我喜欢"}, + {"Jay", "魔杰座"} }; //注册广播 private IntentFilter intentFilter; @@ -76,22 +86,34 @@ public class MainFragment extends Fragment { @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - mAdapter = new ExpandableListViewAdapter(getActivity(), mGroupStrings, mSongStrings); + + mLoveAlbumList = new ArrayList<>(); + mAlbumCollectionList = new ArrayList<>(); + AlbumCollection albumCollection = new AlbumCollection(); + albumCollection.setAlbumName("我喜欢"); + albumCollection.setSingerName("袁健策"); + mLoveAlbumList.add(albumCollection); + mAlbumCollectionList.add(mLoveAlbumList); + mAlbumCollectionList.add(orderCollection(LitePal.findAll(AlbumCollection.class))); + mAdapter = new ExpandableListViewAdapter(getActivity(), mGroupStrings, mAlbumCollectionList); myListView.setAdapter(mAdapter); //注册广播 intentFilter = new IntentFilter(); intentFilter.addAction(BroadcastName.SONG_CHANGE); + intentFilter.addAction(BroadcastName.COLLECTION_ALBUM_CHANGE); songChangeReceiver = new SongChangeReceiver(); getActivity().registerReceiver(songChangeReceiver, intentFilter); onClick(); } + @Override - public void onDestroy(){ + public void onDestroy() { super.onDestroy(); getActivity().unregisterReceiver(songChangeReceiver); } + @Override - public void onResume(){ + public void onResume() { super.onResume(); showMusicNum(); Log.d(TAG, "onResume: true"); @@ -125,6 +147,50 @@ public class MainFragment extends Fragment { replaceFragment(new HistoryFragment()); } }); + myListView.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() { + @Override + public void onGroupExpand(int groupPosition) { + if (groupPosition == 0) { + oneExpand = true; + } else if (groupPosition == 1) { + twoExpand = true; + } + } + }); + myListView.setOnGroupCollapseListener(new ExpandableListView.OnGroupCollapseListener() { + @Override + public void onGroupCollapse(int groupPosition) { + if (groupPosition == 0) { + oneExpand = false; + } else if (groupPosition == 1) { + twoExpand = false; + } + } + }); + myListView.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() { + @Override + public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) { + return false; + } + }); + + mAdapter.setOnChildItemClickListener(new ExpandableListViewAdapter.OnChildItemClickListener() { + @Override + public void onClick(int groupPosition, int childPosition) { + if (groupPosition == 0 && childPosition == 0) { + replaceFragment(new CollectionFragment()); + } else if (groupPosition == 1) { + AlbumCollection albumCollection = mAlbumCollectionList.get(groupPosition).get(childPosition); + replaceFragment(AlbumContentFragment.newInstance( + albumCollection.getAlbumId(), + albumCollection.getAlbumName(), + albumCollection.getAlbumPic(), + albumCollection.getSingerName(), + albumCollection.getPublicTime() + )); + } + } + }); } @@ -140,16 +206,41 @@ public class MainFragment extends Fragment { transaction.addToBackStack(null); transaction.commit(); } - private void showMusicNum(){ - mLoveMusicNum.setText(""+LitePal.findAll(LocalSong.class).size()); - mLoveMusicNum.setText(""+LitePal.findAll(Love.class).size()); - mHistoryMusicNum.setText(""+LitePal.findAll(HistorySong.class).size()); + private void showMusicNum() { + mLoveMusicNum.setText("" + LitePal.findAll(LocalSong.class).size()); + mLoveMusicNum.setText("" + LitePal.findAll(Love.class).size()); + mHistoryMusicNum.setText("" + LitePal.findAll(HistorySong.class).size()); + + } + + private List orderCollection(List tempList) { + List mAlbumCollectionList = new ArrayList<>(); + for (int i = tempList.size() - 1; i >= 0; i--) { + mAlbumCollectionList.add(tempList.get(i)); + } + return mAlbumCollectionList; } + private class SongChangeReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { - mHistoryMusicNum.setText(""+LitePal.findAll(HistorySong.class).size()); + String action = intent.getAction(); + if (action.equals(BroadcastName.SONG_CHANGE)) { + mHistoryMusicNum.setText("" + LitePal.findAll(HistorySong.class).size()); + } else if (action.equals(BroadcastName.COLLECTION_ALBUM_CHANGE)) { + mAlbumCollectionList.clear(); + mAlbumCollectionList.add(mLoveAlbumList); + mAlbumCollectionList.add(orderCollection(LitePal.findAll(AlbumCollection.class))); + if (twoExpand) { + myListView.collapseGroup(1); + myListView.expandGroup(1); + } else { + myListView.expandGroup(1); + myListView.collapseGroup(1); + } + } + } } diff --git a/app/src/main/java/com/example/musicplayer/view/PlayActivity.java b/app/src/main/java/com/example/musicplayer/view/PlayActivity.java index f6372ea..ad1ff17 100644 --- a/app/src/main/java/com/example/musicplayer/view/PlayActivity.java +++ b/app/src/main/java/com/example/musicplayer/view/PlayActivity.java @@ -365,7 +365,7 @@ public class PlayActivity extends BaseActivity implements IPlayContract.View { mLoveBtn.setSelected(true); mPresenter.saveToLove(FileHelper.getSong()); } - + isLove = !isLove; } }); } @@ -443,7 +443,6 @@ public class PlayActivity extends BaseActivity implements IPlayContract.View { @Override public void showLoveAnim() { - mLoveBtn.setSelected(true); AnimatorSet animatorSet = (AnimatorSet) AnimatorInflater.loadAnimator(PlayActivity.this, R.animator.favorites_anim); animatorSet.setTarget(mLoveBtn); animatorSet.start(); diff --git a/app/src/main/java/com/example/musicplayer/widget/MyScrollView.java b/app/src/main/java/com/example/musicplayer/widget/MyScrollView.java deleted file mode 100644 index b98852b..0000000 --- a/app/src/main/java/com/example/musicplayer/widget/MyScrollView.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.example.musicplayer.widget; - -import android.content.Context; -import android.util.AttributeSet; -import android.util.Log; -import android.view.MotionEvent; -import android.widget.ScrollView; - -/** - * Created by 残渊 on 2018/9/25. - */ - -public class MyScrollView extends ScrollView { - private int mLastYIntercept=0; - - public MyScrollView(Context context) { - super(context); - - } - - public MyScrollView(Context context, AttributeSet attrs) { - super(context, attrs); - } - - public MyScrollView(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - } - - @Override - public boolean onInterceptTouchEvent(MotionEvent event) { - super.onInterceptTouchEvent(event); - boolean intercepted = false; - int y = (int) event.getY(); - switch (event.getAction()) { - case MotionEvent.ACTION_DOWN: - intercepted = false; - break; - case MotionEvent.ACTION_MOVE: - intercepted=true; - break; - case MotionEvent.ACTION_UP: - intercepted = false; - break; - } - Log.d("jsyjst", "----------------"+intercepted); - mLastYIntercept=y; - return intercepted; - } -} diff --git a/app/src/main/res/drawable-xxhdpi/love.png b/app/src/main/res/drawable-xxhdpi/love.png new file mode 100644 index 0000000..e95ec2a Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/love.png differ diff --git a/app/src/main/res/drawable/love.xml b/app/src/main/res/drawable/selector_love.xml similarity index 100% rename from app/src/main/res/drawable/love.xml rename to app/src/main/res/drawable/selector_love.xml diff --git a/app/src/main/res/layout/activity_play.xml b/app/src/main/res/layout/activity_play.xml index b13449e..4dcf095 100644 --- a/app/src/main/res/layout/activity_play.xml +++ b/app/src/main/res/layout/activity_play.xml @@ -173,7 +173,7 @@ android:layout_centerVertical="true" android:layout_alignParentEnd="true" android:layout_marginEnd="20dp" - android:background="@drawable/love" /> + android:background="@drawable/selector_love" /> diff --git a/app/src/main/res/layout/fragment_main.xml b/app/src/main/res/layout/fragment_main.xml index 91bb5ad..13fd93e 100644 --- a/app/src/main/res/layout/fragment_main.xml +++ b/app/src/main/res/layout/fragment_main.xml @@ -26,4 +26,9 @@ + diff --git a/app/src/main/res/layout/function.xml b/app/src/main/res/layout/function.xml index 5ca9aaa..999861a 100644 --- a/app/src/main/res/layout/function.xml +++ b/app/src/main/res/layout/function.xml @@ -44,7 +44,7 @@ diff --git a/app/src/main/res/layout/header_logo.xml b/app/src/main/res/layout/header_logo.xml deleted file mode 100644 index d5dde14..0000000 --- a/app/src/main/res/layout/header_logo.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/item_first.xml b/app/src/main/res/layout/item_first.xml index a4651be..1632599 100644 --- a/app/src/main/res/layout/item_first.xml +++ b/app/src/main/res/layout/item_first.xml @@ -2,14 +2,15 @@ + android:orientation="vertical" + android:background="@color/translucent"> + android:layout_marginTop="10dp"> + android:textSize="16sp" + android:layout_centerVertical="true"/> - - + + + + + + + - - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/layout/new_song_list.xml b/app/src/main/res/layout/new_song_list.xml index 4186146..845d811 100644 --- a/app/src/main/res/layout/new_song_list.xml +++ b/app/src/main/res/layout/new_song_list.xml @@ -4,23 +4,20 @@ android:layout_height="match_parent" android:layout_below="@+id/linear_function" android:layout_marginTop="20dp" - android:background="@color/translucent" android:orientation="vertical"> + android:divider="@color/line_default" + android:childDivider="@color/line_default" + android:groupIndicator="@null" + android:dividerHeight="1dip" + android:layout_marginBottom="70dp"> - diff --git a/app/src/main/res/layout/recycler_album_item.xml b/app/src/main/res/layout/recycler_album_item.xml index 86794fd..3be7ee1 100644 --- a/app/src/main/res/layout/recycler_album_item.xml +++ b/app/src/main/res/layout/recycler_album_item.xml @@ -24,8 +24,8 @@ diff --git a/app/src/main/res/menu/love.xml b/app/src/main/res/menu/love.xml new file mode 100644 index 0000000..5e76acb --- /dev/null +++ b/app/src/main/res/menu/love.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 6d5cd59..c7f53cd 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -23,4 +23,5 @@ #caeefc #50aebcbf #555 + #1E000000