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