增加列表和按钮点击水波纹效果,同时完善了最近播放功能

pull/1/head
jsyjst 7 years ago
parent 33d0cd8db2
commit 15583cdd65

@ -58,5 +58,7 @@ dependencies {
implementation 'com.jpardogo.materialtabstrip:library:1.1.0'
//litePal
implementation 'org.litepal.android:java:3.0.0'
//
compile 'com.patrickpissurno:ripple-effect:1.3.1'
}

@ -8,6 +8,7 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.andexert.library.RippleView;
import com.example.musicplayer.R;
import com.example.musicplayer.entiy.AlbumSong;
import com.example.musicplayer.util.FileHelper;
@ -64,9 +65,9 @@ public class AlbumSongAdapter extends RecyclerView.Adapter<RecyclerView.ViewHold
? View.VISIBLE : View.INVISIBLE));
holder.mItemView.setBackgroundResource((songsBean.getId().equals(FileHelper.getSong().getOnlineId())
? R.color.click : R.color.translucent));
holder.mItemView.setOnClickListener(new View.OnClickListener() {
holder.mItemView.setOnRippleCompleteListener(new RippleView.OnRippleCompleteListener() {
@Override
public void onClick(View v) {
public void onComplete(RippleView rippleView) {
mSongClick.onClick(position);
equalPosition(position);
}
@ -88,7 +89,7 @@ public class AlbumSongAdapter extends RecyclerView.Adapter<RecyclerView.ViewHold
TextView titleTv;
TextView artistTv;
View mItemView;
RippleView mItemView;
View playLine;
public ViewHolder(View itemView) {
@ -96,7 +97,7 @@ public class AlbumSongAdapter extends RecyclerView.Adapter<RecyclerView.ViewHold
titleTv = itemView.findViewById(R.id.tv_title);
artistTv = itemView.findViewById(R.id.tv_artist);
playLine = itemView.findViewById(R.id.line_play);
mItemView = itemView;
mItemView = itemView.findViewById(R.id.ripple);
}
}

@ -8,7 +8,9 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.andexert.library.RippleView;
import com.example.musicplayer.R;
import com.example.musicplayer.constant.Constant;
import com.example.musicplayer.entiy.HistorySong;
import com.example.musicplayer.util.FileHelper;
@ -41,7 +43,7 @@ public class HistoryAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder
class ViewHolder extends RecyclerView.ViewHolder {
TextView songNameTv;
TextView singerTv;
View mItemView;
RippleView mItemView;
View playLine;
public ViewHolder(View itemView) {
@ -49,7 +51,7 @@ public class HistoryAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder
songNameTv = itemView.findViewById(R.id.tv_title);
singerTv = itemView.findViewById(R.id.tv_artist);
playLine = itemView.findViewById(R.id.line_play);
mItemView = itemView;
mItemView = itemView.findViewById(R.id.ripple);
}
}
@ -104,16 +106,16 @@ public class HistoryAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder
holder.singerTv.setTextColor(mContext.getResources()
.getColor(R.color.white_blue));
}
holder.mItemView.setOnClickListener(new View.OnClickListener() {
holder.mItemView.setOnRippleCompleteListener(new RippleView.OnRippleCompleteListener() {
@Override
public void onClick(View v) {
public void onComplete(RippleView rippleView) {
onItemClickListener.onSongClick(position);
equalPosition(position);
}
});
} else {
FooterHolder footerHolder = (FooterHolder) viewHolder;
footerHolder.numTv.setText("这里会记录你最近播放的100首歌");
footerHolder.numTv.setText("这里会记录你最近播放的"+ Constant.HISTORY_MAX_SIZE+"首歌");
}
}

@ -9,6 +9,7 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.andexert.library.RippleView;
import com.example.musicplayer.R;
import com.example.musicplayer.entiy.Love;
import com.example.musicplayer.util.FileHelper;
@ -19,39 +20,38 @@ import java.util.List;
* Created by on 2018/11/30.
*/
public class LoveSongAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
public class LoveSongAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private static final String TAG = "LoveSongAdapter";
private int footerViewType = 1;
private int itemViewType = 0;
private List<Love> mLoveList;
private Context mContext;
private int mLastPosition = -1;
private OnItemClickListener onItemClickListener;
public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
this.onItemClickListener = onItemClickListener;
}
public LoveSongAdapter(Context context, List<Love> loveList) {
mContext = context;
mLoveList = loveList;
}
private int footerViewType = 1;
private int itemViewType = 0;
private List<Love> mLoveList;
private Context mContext;
private int mLastPosition = -1;
private OnItemClickListener onItemClickListener;
public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
this.onItemClickListener = onItemClickListener;
}
public LoveSongAdapter(Context context, List<Love> loveList) {
mContext = context;
mLoveList = loveList;
}
class ViewHolder extends RecyclerView.ViewHolder {
TextView songNameTv;
TextView singerTv;
View mItemView;
View playLine;
class ViewHolder extends RecyclerView.ViewHolder {
TextView songNameTv;
TextView singerTv;
View playLine;
RippleView item;
public ViewHolder(View itemView) {
super(itemView);
songNameTv = itemView.findViewById(R.id.tv_title);
singerTv = itemView.findViewById(R.id.tv_artist);
playLine = itemView.findViewById(R.id.line_play);
mItemView = itemView;
}
public ViewHolder(View itemView) {
super(itemView);
songNameTv = itemView.findViewById(R.id.tv_title);
singerTv = itemView.findViewById(R.id.tv_artist);
playLine = itemView.findViewById(R.id.line_play);
item = itemView.findViewById(R.id.ripple);
}
}
/**
@ -87,29 +87,31 @@ public class LoveSongAdapter extends RecyclerView.Adapter<RecyclerView.ViewHold
if (viewHolder instanceof ViewHolder) {
ViewHolder holder = (ViewHolder) viewHolder;
final Love love = mLoveList.get(position);
Log.d(TAG, "onBindViewHolder: "+position);
Log.d(TAG, "onBindViewHolder: " + position);
holder.songNameTv.setText(love.getName());
holder.singerTv.setText(love.getSinger());
//根据点击显示
if(love.getSongId().equals(FileHelper.getSong().getOnlineId())){
if (love.getSongId().equals(FileHelper.getSong().getOnlineId())) {
holder.playLine.setVisibility(View.VISIBLE);
mLastPosition =position;
mLastPosition = position;
holder.songNameTv.setTextColor(mContext.getResources()
.getColor(R.color.yellow));
holder.singerTv.setTextColor(mContext.getResources()
.getColor(R.color.yellow));
}else {
} else {
holder.playLine.setVisibility(View.INVISIBLE);
holder.songNameTv.setTextColor(mContext.getResources()
.getColor(R.color.white));
holder.singerTv.setTextColor(mContext.getResources()
.getColor(R.color.white_blue));
}
holder.mItemView.setOnClickListener(new View.OnClickListener() {
holder.item.setOnRippleCompleteListener(new RippleView.OnRippleCompleteListener() {
@Override
public void onClick(View v) {
onItemClickListener.onSongClick(position);
public void onComplete(RippleView rippleView) {
if (onItemClickListener != null) {
onItemClickListener.onSongClick(position);
}
equalPosition(position);
}
});

@ -11,6 +11,7 @@ import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.andexert.library.RippleView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import com.example.musicplayer.R;
@ -103,10 +104,9 @@ public class SearchContentAdapter extends RecyclerView.Adapter<RecyclerView.View
songHolder.playLine.setVisibility(View.INVISIBLE);
songHolder.mItemView.setBackgroundResource(R.color.translucent);
}
songHolder.mItemView.setOnClickListener(new View.OnClickListener() {
songHolder.mItemView.setOnRippleCompleteListener(new RippleView.OnRippleCompleteListener() {
@Override
public void onClick(View v) {
public void onComplete(RippleView rippleView) {
mItemClick.onClick(position);
equalPosition(position);
}
@ -122,9 +122,9 @@ public class SearchContentAdapter extends RecyclerView.Adapter<RecyclerView.View
CommonUtil.showStringColor(mSeek, albumList.getAlbumName(), albumHolder.albumName);
CommonUtil.showStringColor(mSeek, albumList.getSingerName(), albumHolder.singerName);
CommonUtil.showStringColor(mSeek, albumList.getPublicTime(), albumHolder.publicTime);
albumHolder.item.setOnClickListener(new View.OnClickListener() {
albumHolder.item.setOnRippleCompleteListener(new RippleView.OnRippleCompleteListener() {
@Override
public void onClick(View v) {
public void onComplete(RippleView rippleView) {
Log.d(TAG, "onClick: album");
mAlbumClick.onClick(position);
}
@ -146,7 +146,7 @@ public class SearchContentAdapter extends RecyclerView.Adapter<RecyclerView.View
class ViewHolder extends RecyclerView.ViewHolder {
TextView titleTv;
TextView artistTv;
View mItemView;
RippleView mItemView;
View playLine;
public ViewHolder(View itemView) {
@ -154,7 +154,7 @@ public class SearchContentAdapter extends RecyclerView.Adapter<RecyclerView.View
titleTv = itemView.findViewById(R.id.tv_title);
artistTv = itemView.findViewById(R.id.tv_artist);
playLine = itemView.findViewById(R.id.line_play);
mItemView = itemView;
mItemView = itemView.findViewById(R.id.ripple);
}
}
@ -163,7 +163,7 @@ public class SearchContentAdapter extends RecyclerView.Adapter<RecyclerView.View
TextView singerName;
TextView albumName;
TextView publicTime;
View item;
RippleView item;
public AlbumHolder(View itemView) {
super(itemView);
@ -171,7 +171,7 @@ public class SearchContentAdapter extends RecyclerView.Adapter<RecyclerView.View
singerName = itemView.findViewById(R.id.tv_singer_name);
albumName = itemView.findViewById(R.id.tv_album_name);
publicTime = itemView.findViewById(R.id.tv_public_time);
item = itemView;
item = itemView.findViewById(R.id.ripple);
}
}

@ -8,6 +8,7 @@ import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.andexert.library.RippleView;
import com.example.musicplayer.R;
import com.example.musicplayer.entiy.SearchHistory;
@ -59,9 +60,9 @@ public class SearchHistoryAdapter extends RecyclerView.Adapter<RecyclerView.View
}
});
historyHolder.mItemView.setOnClickListener(new View.OnClickListener() {
historyHolder.mItemView.setOnRippleCompleteListener(new RippleView.OnRippleCompleteListener() {
@Override
public void onClick(View v) {
public void onComplete(RippleView rippleView) {
mOnItemClcikListener.onClick(position);
}
});
@ -88,13 +89,13 @@ public class SearchHistoryAdapter extends RecyclerView.Adapter<RecyclerView.View
private class HistoryHolder extends RecyclerView.ViewHolder {
TextView historyTv;
ImageView deleteIv;
View mItemView;
RippleView mItemView;
public HistoryHolder(View itemView) {
super(itemView);
historyTv = itemView.findViewById(R.id.tv_seek_history);
deleteIv = itemView.findViewById(R.id.iv_history_delete);
mItemView = itemView;
mItemView = itemView.findViewById(R.id.ripple);
}
}

@ -9,6 +9,7 @@ import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.andexert.library.RippleView;
import com.example.musicplayer.constant.Constant;
import com.example.musicplayer.constant.MyApplication;
import com.example.musicplayer.entiy.Song;
@ -45,11 +46,11 @@ public class SongAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
TextView songNameTv;
TextView artistTv;
ImageView playingIv;
View songView;
RippleView songView;
public ViewHolder(View itemView) {
super(itemView);
songView = itemView;
songView = itemView.findViewById(R.id.ripple);
songNameTv = itemView.findViewById(R.id.tv_song_name);
artistTv = itemView.findViewById(R.id.tv_artist);
playingIv = itemView.findViewById(R.id.iv_playing);
@ -106,23 +107,10 @@ public class SongAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
getResources().getColor(R.color.white));
holder.playingIv.setVisibility(View.GONE);
}
holder.songView.setOnClickListener(new View.OnClickListener() {
holder.songView.setOnRippleCompleteListener(new RippleView.OnRippleCompleteListener() {
@Override
public void onClick(View v) {
//将点击的序列化到本地
Song song = new Song();
song.setSongName(mp3Info.getName());
song.setSinger(mp3Info.getSinger());
song.setUrl(mp3Info.getUrl());
song.setDuration(mp3Info.getDuration());
song.setCurrent(position);
song.setOnline(false);
song.setOnlineId(mp3Info.getSongId());
song.setListType(Constant.LIST_TYPE_LOCAL);
FileHelper.saveSong(song);
onItemClickListener.onSongClick();
public void onComplete(RippleView rippleView) {
onItemClickListener.onSongClick(position);
equalPosition(position);
}
});
@ -154,7 +142,7 @@ public class SongAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
public interface OnItemClickListener {
void onSongClick();
void onSongClick(int position);
}
}

@ -13,4 +13,5 @@ public class Constant {
public static final int LIST_TYPE_ONLINE=5;
public static final int LIST_TYPE_LOVE=6;
public static final int LIST_TYPE_HISTORY=7;
public static final int HISTORY_MAX_SIZE=100;
}

@ -447,12 +447,14 @@ public class PlayerService extends Service {
history.saveAsync().listen(new SaveCallback() {
@Override
public void onFinish(boolean success) {
Log.d(TAG, "onFinish: " + success);
if (success) {
Log.d(TAG, "onFinish: " + history.getName());
if(LitePal.findAll(HistorySong.class).size()>Constant.HISTORY_MAX_SIZE){
LitePal.delete(HistorySong.class,LitePal.findAll(HistorySong.class).get(0).getId());
}
}
}
});
}
});

@ -102,6 +102,7 @@ public class CollectionFragment extends Fragment {
}
private void showSongList() {
mRecycler.setHasFixedSize(true);
mLoveList = orderList(LitePal.findAll(Love.class));
mAdapter = new LoveSongAdapter(getActivity(), mLoveList);
mManager = new LinearLayoutManager(getActivity());

@ -17,6 +17,7 @@ import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.example.musicplayer.R;
import com.example.musicplayer.adapter.HistoryAdapter;
@ -47,6 +48,7 @@ public class HistoryFragment extends Fragment {
private LinearLayout mSongListLinear;
private RelativeLayout mEmptyRelative;
private List<HistorySong> mHistoryList;
private TextView mTitleTv;
//注册广播
private IntentFilter intentFilter;
private SongChangeReceiver songChangeReceiver;
@ -73,6 +75,8 @@ public class HistoryFragment extends Fragment {
mBackIv = view.findViewById(R.id.iv_back);
mEmptyRelative = view.findViewById(R.id.relative_empty);
mSongListLinear = view.findViewById(R.id.linear_song_list);
mTitleTv = view.findViewById(R.id.tv_title);
mTitleTv.setText("最近播放");
return view;
}

@ -25,6 +25,7 @@ import com.example.musicplayer.constant.BroadcastName;
import com.example.musicplayer.constant.Constant;
import com.example.musicplayer.contract.ILocalMusicContract;
import com.example.musicplayer.entiy.LocalSong;
import com.example.musicplayer.entiy.Song;
import com.example.musicplayer.presenter.LocalMusicPresenter;
import com.example.musicplayer.service.PlayerService;
import com.example.musicplayer.util.CommonUtil;
@ -135,7 +136,19 @@ public class LocalMusicFragment extends Fragment implements ILocalMusicContract.
songAdapter.setOnItemClickListener(new SongAdapter.OnItemClickListener() {
@Override
public void onSongClick() {
public void onSongClick(int position) {
//将点击的序列化到本地
LocalSong mp3Info = mLocalSongsList.get(position);
Song song = new Song();
song.setSongName(mp3Info.getName());
song.setSinger(mp3Info.getSinger());
song.setUrl(mp3Info.getUrl());
song.setDuration(mp3Info.getDuration());
song.setCurrent(position);
song.setOnline(false);
song.setOnlineId(mp3Info.getSongId());
song.setListType(Constant.LIST_TYPE_LOCAL);
FileHelper.saveSong(song);
mPlayStatusBinder.play(Constant.LIST_TYPE_LOCAL);
}
});

@ -25,6 +25,7 @@ import android.widget.LinearLayout;
import android.widget.SeekBar;
import android.widget.TextView;
import com.andexert.library.RippleView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import com.example.musicplayer.R;
@ -50,7 +51,7 @@ public class MainActivity extends AppCompatActivity {
private boolean flag; //用做暂停的标记
private int time; //记录暂停的时间
private Button mPlayerBtn;
private ImageView mNextIv;
private RippleView mNextIv;
private TextView mSongNameTv;
private TextView mSingerTv;
private CircleImageView mCoverIv;//封面
@ -258,6 +259,7 @@ public class MainActivity extends AppCompatActivity {
public void onDestroy() {
unbindService(connection);
unregisterReceiver(songChangeReceiver);
mSeekBarThread.interrupt();
Song song = FileHelper.getSong();
song.setCurrentTime(mPlayStatusBinder.getCurrentTime());
Log.d(TAG, "onServiceDisconnected: " + song.getCurrentTime());

@ -12,6 +12,7 @@ import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import com.andexert.library.RippleView;
import com.example.musicplayer.R;
import com.example.musicplayer.entiy.SearchHistory;
import com.example.musicplayer.util.CommonUtil;
@ -27,8 +28,8 @@ import java.util.List;
public class SearchFragment extends Fragment {
private static final String TAG = "SearchFragment";
private EditText mSeekEdit;
private TextView mSeekTv;
private ImageView mBackIv;
private RippleView mSeekTv;
private RippleView mBackIv;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background">
<shape>
<corners android:radius="3dp"/>
<solid android:color="@color/white"/>
</shape>
</item>
<item android:id="@android:id/secondaryProgress">
<clip>
<shape>
<corners android:radius="3dp"/>
<solid android:color="@color/short_white"/>
</shape>
</clip>
</item>
<item android:id="@android:id/progress">
<clip>
<shape>
<corners android:radius="3dp"/>
<solid android:color="@color/musicStyle" />
</shape>
</clip>
</item>
</layer-list>

@ -102,10 +102,13 @@
android:id="@+id/seek"
style="@style/neteasa_music_time_seek_bar_sytle"
android:layout_centerInParent="true"
android:progressDrawable="@drawable/seekbar_bg"
android:maxHeight="2dp"
android:layout_toEndOf="@id/tv_current_time"
android:layout_toStartOf="@+id/tv_duration_time"
android:paddingEnd="15dp"
android:paddingStart="15dp" />
android:paddingStart="15dp"
/>
<TextView
android:id="@+id/tv_duration_time"

@ -52,6 +52,9 @@
android:layout_height="wrap_content"
android:layout_weight="3"
android:text="我很忙"
android:singleLine="true"
android:ellipsize="end"
android:paddingEnd="20dp"
android:textColor="@color/white_blue"
android:textSize="16sp" />
@ -83,6 +86,9 @@
android:layout_height="wrap_content"
android:layout_weight="3"
android:text="周杰伦"
android:singleLine="true"
android:ellipsize="end"
android:paddingEnd="20dp"
android:textColor="@color/white_blue"
android:textSize="16sp" />

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ripple="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
@ -10,13 +11,19 @@
android:layout_height="?android:attr/actionBarSize"
android:background="@color/actionBarColor">
<ImageView
<com.andexert.library.RippleView
android:id="@+id/iv_back"
android:layout_marginStart="10dp"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:src="@drawable/back" />
android:layout_marginStart="10dp"
ripple:rv_centered="true">
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:src="@drawable/back" />
</com.andexert.library.RippleView>
<EditText
android:id="@+id/edit_seek"
@ -28,31 +35,36 @@
android:layout_toEndOf="@id/iv_back"
android:layout_toStartOf="@+id/tv_search"
android:background="@drawable/seek_sp"
android:focusable="true"
android:focusableInTouchMode="true"
android:paddingStart="15dp"
android:textColor="@color/white"
android:textSize="16sp"
android:focusable="true"
android:focusableInTouchMode="true"/>
android:textSize="16sp" />
<TextView
<com.andexert.library.RippleView
android:id="@+id/tv_search"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_width="50dp"
android:layout_height="40dp"
ripple:rv_centered="true"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_marginEnd="20dp"
android:clickable="true"
android:focusable="true"
android:layout_marginEnd="20dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/search"
android:textColor="@color/white"
android:layout_centerInParent="true"
android:textSize="16sp" />
</com.andexert.library.RippleView>
</RelativeLayout>
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>

@ -1,13 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ripple="http://schemas.android.com/apk/res-auto"
android:id="@+id/linear_player"
android:layout_width="match_parent"
android:clickable="true"
android:focusable="true"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:elevation="10dp">
android:clickable="true"
android:elevation="10dp"
android:focusable="true">
<FrameLayout
android:layout_width="match_parent"
@ -27,53 +28,64 @@
<SeekBar
style="@style/neteasa_music_time_seek_bar_sytle"
android:id="@+id/sb_progress"/>
android:id="@+id/sb_progress"
style="@style/neteasa_music_time_seek_bar_sytle" />
<TextView
android:id="@+id/tv_song_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/sb_progress"
android:layout_marginStart="15dp"
android:ellipsize="end"
android:maxEms="10"
android:singleLine="true"
android:textColor="@color/white"
android:textSize="14sp"
android:layout_marginStart="15dp"/>
android:textSize="14sp" />
<TextView
android:id="@+id/tv_singer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/tv_song_name"
android:layout_marginStart="15dp"
android:ellipsize="end"
android:maxEms="10"
android:singleLine="true"
android:textSize="12sp"
android:textColor="@color/white_blue"
android:layout_marginStart="15dp"/>
android:textSize="12sp" />
<ImageView
android:clickable="true"
android:focusable="true"
<com.andexert.library.RippleView
android:id="@+id/song_next"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_marginEnd="10dp"
android:layout_below="@+id/sb_progress"
android:layout_marginEnd="10dp"
android:layout_marginTop="8dp"
android:src="@drawable/song_next" />
ripple:rv_centered="true">
<ImageView
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_centerInParent="true"
android:src="@drawable/song_next" />
</com.andexert.library.RippleView>
<Button
android:id="@+id/btn_player"
android:layout_width="55dp"
android:layout_height="55dp"
<com.andexert.library.RippleView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/sb_progress"
android:layout_marginEnd="10dp"
android:layout_toLeftOf="@+id/song_next"
android:background="@drawable/selector_player" />
ripple:rv_centered="true">
<Button
android:id="@+id/btn_player"
android:layout_width="55dp"
android:layout_height="55dp"
android:background="@drawable/selector_player" />
</com.andexert.library.RippleView>
</RelativeLayout>
</RelativeLayout>

@ -1,9 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
<com.andexert.library.RippleView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ripple"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto"
>
xmlns:ripple="http://schemas.android.com/tools"
ripple:rv_type="rectangle">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.CardView
android:id="@+id/iv_album_pic"
@ -74,6 +81,6 @@
android:layout_width="match_parent"
android:layout_height="0.1dip"
android:background="@color/gray" />
</RelativeLayout>
</RelativeLayout>
</com.andexert.library.RippleView>

@ -1,8 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
<com.andexert.library.RippleView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ripple="http://schemas.android.com/apk/res-auto"
android:id="@+id/ripple"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
ripple:rv_type="rectangle">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/iv_history"
@ -41,5 +48,5 @@
android:background="@color/gray"
android:layout_alignParentBottom="true"
/>
</RelativeLayout>
</RelativeLayout>
</com.andexert.library.RippleView>

@ -1,8 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
<com.andexert.library.RippleView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ripple"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
xmlns:ripple="http://schemas.android.com/apk/res-auto"
ripple:rv_type="rectangle">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/iv_playing"
@ -50,4 +58,5 @@
android:layout_width="match_parent"
android:layout_height="0.1dip"
android:background="@color/gray" />
</RelativeLayout>
</RelativeLayout>
</com.andexert.library.RippleView>

@ -1,8 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
<com.andexert.library.RippleView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ripple"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
xmlns:ripple="http://schemas.android.com/apk/res-auto"
ripple:rv_type="rectangle">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<View
android:id="@+id/line_play"
@ -64,4 +72,5 @@
android:layout_width="match_parent"
android:layout_height="0.1dip"
android:background="@color/gray" />
</RelativeLayout>
</RelativeLayout>
</com.andexert.library.RippleView>
Loading…
Cancel
Save