Skip to content

Commit 03fcd28

Browse files
committed
完善夜间模式,增加API配置,同步搜索配置
1 parent 4292dbb commit 03fcd28

34 files changed

Lines changed: 363 additions & 100 deletions

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
<activity
5555
android:name=".ui.main.WelcomeActivity"
5656
android:screenOrientation="portrait"
57-
android:theme="@style/FullScreen">
57+
android:theme="@style/AppTheme.Welcome">
5858
<intent-filter>
5959
<action android:name="android.intent.action.MAIN" />
6060

app/src/main/java/com/cyl/musiclake/MusicApp.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232

3333
import org.litepal.LitePal;
3434

35+
import java.util.ArrayList;
3536
import java.util.List;
3637

3738
/**
@@ -69,6 +70,7 @@ public static Context getAppContext() {
6970
return sInstance.getApplicationContext();
7071
}
7172

73+
public static List<Activity> activities = new ArrayList<>();
7274

7375
@Override
7476
public void onCreate() {
@@ -160,6 +162,7 @@ private void registerListener() {
160162
this.registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
161163
@Override
162164
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
165+
activities.add(activity);
163166
Activitycount++;
164167
}
165168

@@ -196,6 +199,7 @@ public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
196199
@Override
197200
public void onActivityDestroyed(Activity activity) {
198201
Activitycount--;
202+
activities.remove(activity);
199203
if (Activitycount == 0) {
200204
LogUtil.d(">>>>>>>>>>>>>>>>>>>APP 关闭");
201205
if (socketManager != null) {

app/src/main/java/com/cyl/musiclake/api/PlaylistApiServiceImpl.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import com.cyl.musiclake.common.Constants
99
import com.cyl.musiclake.net.ApiManager
1010
import com.cyl.musiclake.ui.my.user.User
1111
import com.cyl.musiclake.ui.my.user.UserStatus
12+
import com.cyl.musiclake.utils.SPUtils
1213
import com.google.gson.Gson
1314
import com.google.gson.reflect.TypeToken
1415
import io.reactivex.Observable
@@ -20,7 +21,7 @@ import io.reactivex.ObservableOnSubscribe
2021

2122
object PlaylistApiServiceImpl {
2223
private val TAG = "PlaylistApiServiceImpl"
23-
val playlistApiService by lazy { ApiManager.getInstance().create(PlaylistApiService::class.java, Constants.BASE_PLAYER_URL) }
24+
val playlistApiService by lazy { ApiManager.getInstance().create(PlaylistApiService::class.java, SPUtils.getAnyByKey(SPUtils.SP_KEY_PLATER_API_URL, Constants.BASE_PLAYER_URL)) }
2425

2526
val token: String?
2627
get() = UserStatus.getUserInfo()?.token

app/src/main/java/com/cyl/musiclake/api/netease/NeteaseApiServiceImpl.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import com.cyl.musiclake.bean.Music
88
import com.cyl.musiclake.bean.Playlist
99
import com.cyl.musiclake.common.Constants
1010
import com.cyl.musiclake.net.ApiManager
11+
import com.cyl.musiclake.utils.SPUtils
1112
import io.reactivex.Observable
1213
import io.reactivex.ObservableOnSubscribe
1314

@@ -18,7 +19,7 @@ import io.reactivex.ObservableOnSubscribe
1819
object NeteaseApiServiceImpl {
1920
private val TAG = "NeteaseApiServiceImpl"
2021

21-
val apiService by lazy { ApiManager.getInstance().create(NeteaseApiService::class.java, Constants.BASE_NETEASE_URL) }
22+
val apiService by lazy { ApiManager.getInstance().create(NeteaseApiService::class.java, SPUtils.getAnyByKey(SPUtils.SP_KEY_NETEASE_API_URL, Constants.BASE_NETEASE_URL)) }
2223

2324
/**
2425
* 获取歌单歌曲
@@ -184,7 +185,7 @@ object NeteaseApiServiceImpl {
184185
* 搜索
185186
*/
186187
fun searchMoreInfo(keywords: String, limit: Int, offset: Int, type: Int): Observable<SearchInfo> {
187-
val url = Constants.BASE_NETEASE_URL+"search?keywords= $keywords&limit=$limit&offset=$offset&type=$type"
188+
val url = SPUtils.getAnyByKey(SPUtils.SP_KEY_NETEASE_API_URL, Constants.BASE_NETEASE_URL) + "search?keywords= $keywords&limit=$limit&offset=$offset&type=$type"
188189
// return apiService.searchNetease(url)
189190
// @Query("keywords") keywords: String, @Query("limit") limit: Int, @Query("offset") offset: Int, @Query("type") type: Int
190191
return apiService.searchNetease(url)

app/src/main/java/com/cyl/musiclake/ui/base/BaseFragment.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import android.content.Context;
55
import android.graphics.Color;
66
import android.os.Bundle;
7+
import android.os.Handler;
78
import android.support.annotation.Nullable;
89
import android.support.v4.widget.SwipeRefreshLayout;
910
import android.support.v7.app.AppCompatActivity;
@@ -20,6 +21,7 @@
2021
import com.cyl.musiclake.di.component.DaggerFragmentComponent;
2122
import com.cyl.musiclake.di.component.FragmentComponent;
2223
import com.cyl.musiclake.di.module.FragmentModule;
24+
import com.cyl.musiclake.utils.LogUtil;
2325
import com.trello.rxlifecycle2.LifecycleTransformer;
2426
import com.trello.rxlifecycle2.components.support.RxFragment;
2527

@@ -92,9 +94,15 @@ private void initToolBar() {
9294
}
9395
if (mSwipeRefreshLayout != null) {
9496
mSwipeRefreshLayout.setColorSchemeColors(Color.BLUE, Color.RED, Color.YELLOW);
95-
mSwipeRefreshLayout.setProgressBackgroundColorSchemeColor(Color.parseColor("#BBFFFF"));
96-
97-
mSwipeRefreshLayout.setEnabled(false);
97+
// mSwipeRefreshLayout.setProgressBackgroundColorSchemeColor(Color.parseColor("#FFFFFF"));
98+
mSwipeRefreshLayout.setEnabled(true);
99+
mSwipeRefreshLayout.setOnRefreshListener(() -> {
100+
LogUtil.d("下拉刷新");
101+
new Handler().postDelayed(() -> {
102+
mSwipeRefreshLayout.setRefreshing(false);
103+
loadData();
104+
}, 2000);
105+
});
98106
}
99107
}
100108

app/src/main/java/com/cyl/musiclake/ui/main/WelcomeActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ private void initWelcome() {
9595
getCoverImageUrl();
9696
SPUtils.putAnyCommit(SPUtils.SP_KEY_FIRST_COMING, false);
9797
} else {
98-
startMainActivity();
98+
mHandler.postDelayed(WelcomeActivity.this::startMainActivity, 1000);
9999
}
100100
}
101101

app/src/main/java/com/cyl/musiclake/ui/music/discover/DiscoverFragment.kt

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,6 @@ class DiscoverFragment : BaseFragment<DiscoverPresenter>(), DiscoverContract.Vie
7474
* 初始化
7575
*/
7676
override fun initViews() {
77-
mSwipeRefreshLayout?.setOnRefreshListener {
78-
loadData()
79-
}
8077
}
8178

8279
override fun onClick(v: View?) {
@@ -182,7 +179,7 @@ class DiscoverFragment : BaseFragment<DiscoverPresenter>(), DiscoverContract.Vie
182179
NavigationHelper.navigateToPlaylist(mFragmentComponent.activity, playlist, Pair(view.findViewById(R.id.iv_cover), getString(R.string.transition_album)))
183180
}
184181
} else {
185-
mNeteaseAdapter?.notifyDataSetChanged()
182+
mNeteaseAdapter?.setNewData(playlist)
186183
}
187184
playlistView.visibility = if (playlist.size > 0) View.VISIBLE else View.GONE
188185
}
@@ -205,7 +202,7 @@ class DiscoverFragment : BaseFragment<DiscoverPresenter>(), DiscoverContract.Vie
205202
NavigationHelper.navigateToPlaylist(mFragmentComponent.activity, artist, Pair<View, String>(view.findViewById<View>(R.id.iv_cover), getString(R.string.transition_album)))
206203
}
207204
} else {
208-
mArtistListAdapter?.notifyDataSetChanged()
205+
mArtistListAdapter?.setNewData(artists)
209206
}
210207
artistView.visibility = if (artists.size <= 0) View.GONE else View.VISIBLE
211208
}
@@ -217,7 +214,7 @@ class DiscoverFragment : BaseFragment<DiscoverPresenter>(), DiscoverContract.Vie
217214
this.channels = channels
218215
if (mRadioAdapter == null) {
219216
//适配器
220-
mRadioAdapter = BaiduRadioAdapter(channels)
217+
mRadioAdapter = BaiduRadioAdapter(this.channels)
221218
//电台列表
222219
radioRsv?.layoutManager = GridLayoutManager(activity, 2, LinearLayoutManager.HORIZONTAL, false)
223220
radioRsv?.adapter = mRadioAdapter
@@ -248,7 +245,7 @@ class DiscoverFragment : BaseFragment<DiscoverPresenter>(), DiscoverContract.Vie
248245
recommendPlaylistRsv.isNestedScrollingEnabled = false
249246
mPlaylistAdapter?.bindToRecyclerView(recommendPlaylistRsv)
250247
} else {
251-
mPlaylistAdapter?.notifyDataSetChanged()
248+
mPlaylistAdapter?.setNewData(this.recommendPlaylist)
252249
}
253250
recommendPlaylistView.visibility = if (recommendPlaylist.size <= 0) View.GONE else View.VISIBLE
254251
}

app/src/main/java/com/cyl/musiclake/ui/music/playqueue/PlayQueueAdapter.kt

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import com.cyl.musiclake.api.MusicApi
1212
import com.cyl.musiclake.common.Constants
1313
import com.cyl.musiclake.bean.Music
1414
import com.cyl.musiclake.player.PlayManager
15+
import com.cyl.musiclake.ui.theme.ThemeStore
1516
import com.cyl.musiclake.utils.ConvertUtils
1617
import com.cyl.musiclake.utils.CoverLoader
1718
import com.cyl.musiclake.utils.ToastUtils
@@ -29,31 +30,35 @@ class PlayQueueAdapter(musicList: List<Music>) : BaseItemDraggableAdapter<Music,
2930

3031
//音质图标显示
3132
val quality = when {
32-
item.sq -> mContext.resources.getDrawable(R.drawable.sq_icon,null)
33-
item.hq -> mContext.resources.getDrawable(R.drawable.hq_icon,null)
33+
item.sq -> mContext.resources.getDrawable(R.drawable.sq_icon, null)
34+
item.hq -> mContext.resources.getDrawable(R.drawable.hq_icon, null)
3435
else -> null
3536
}
3637
quality?.let {
37-
quality.setBounds(0, 0, quality.minimumWidth+mContext.dip(2), quality.minimumHeight)
38-
holder.getView<TextView>(R.id.tv_artist).setCompoundDrawables(quality,null,null,null)
38+
quality.setBounds(0, 0, quality.minimumWidth + mContext.dip(2), quality.minimumHeight)
39+
holder.getView<TextView>(R.id.tv_artist).setCompoundDrawables(quality, null, null, null)
3940
}
4041
//设置歌手专辑名
4142
holder.setText(R.id.tv_artist, ConvertUtils.getArtistAndAlbum(item.artist, item.album))
4243
//设置播放状态
4344
if (PlayManager.getPlayingId() == item.mid) {
4445
holder.getView<View>(R.id.v_playing).visibility = View.VISIBLE
45-
holder.setTextColor(R.id.tv_title, ContextCompat.getColor(mContext,R.color.app_green))
46-
holder.setTextColor(R.id.tv_artist, ContextCompat.getColor(mContext,R.color.app_green))
46+
holder.setTextColor(R.id.tv_title, ContextCompat.getColor(mContext, R.color.app_green))
47+
holder.setTextColor(R.id.tv_artist, ContextCompat.getColor(mContext, R.color.app_green))
4748
} else {
49+
if (ThemeStore.THEME_MODE == ThemeStore.DAY) {
50+
holder.setTextColor(R.id.tv_title, ContextCompat.getColor(mContext, R.color.black))
51+
} else {
52+
holder.setTextColor(R.id.tv_title, ContextCompat.getColor(mContext, R.color.white))
53+
}
4854
holder.getView<View>(R.id.v_playing).visibility = View.GONE
49-
holder.setTextColor(R.id.tv_title, ContextCompat.getColor(mContext,R.color.black))
50-
holder.setTextColor(R.id.tv_artist, ContextCompat.getColor(mContext,R.color.grey))
55+
holder.setTextColor(R.id.tv_artist, ContextCompat.getColor(mContext, R.color.grey))
5156
}
5257
holder.addOnClickListener(R.id.iv_more)
5358

5459
if (item.isCp) {
55-
holder.setTextColor(R.id.tv_title, ContextCompat.getColor(mContext,R.color.grey))
56-
holder.setTextColor(R.id.tv_artist, ContextCompat.getColor(mContext,R.color.grey))
60+
holder.setTextColor(R.id.tv_title, ContextCompat.getColor(mContext, R.color.grey))
61+
holder.setTextColor(R.id.tv_artist, ContextCompat.getColor(mContext, R.color.grey))
5762
}
5863

5964
if (item.type == Constants.LOCAL) {

app/src/main/java/com/cyl/musiclake/ui/music/search/SearchActivity.kt

Lines changed: 42 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.cyl.musiclake.ui.music.search
22

3+
import android.app.PendingIntent.getActivity
34
import android.preference.PreferenceManager
45
import android.support.v7.widget.LinearLayoutManager
56
import android.text.Editable
@@ -230,12 +231,32 @@ class SearchActivity : BaseActivity<SearchPresenter>(), SearchContract.View {
230231
return true
231232
}
232233

234+
/**
235+
* 改变过滤设置
236+
*/
233237
private fun changeFilter(item: MenuItem, filterType: SearchEngine.Filter) {
234238
filter.put(key = filterType, value = !(filter[filterType] ?: true))
235239
item.isChecked = filter[filterType] ?: true
236240
if (!TextUtils.isEmpty(queryString)) {
237241
isSearchOnline = true
238242
}
243+
244+
245+
val prefs = PreferenceManager.getDefaultSharedPreferences(this)
246+
val options = prefs.getStringSet("key_search_filter", mutableSetOf())
247+
val searchFilters = resources.getStringArray(R.array.pref_search_filter_select)
248+
249+
for (i in 0 until searchFilters.size) {
250+
if (searchFilters[i] == item.title) {
251+
if (item.isChecked) options.add((i + 1).toString())
252+
else options.remove((i + 1).toString())
253+
}
254+
}
255+
options.forEach {
256+
LogUtil.d("保存过滤设置 ${searchFilters[it.toInt() - 1]}");
257+
}
258+
//保存
259+
prefs.edit().putStringSet("key_search_filter", options).apply()
239260
showFilterResult()
240261
}
241262

@@ -254,6 +275,7 @@ class SearchActivity : BaseActivity<SearchPresenter>(), SearchContract.View {
254275
mAdapter.setOnLoadMoreListener(null, resultListRcv)
255276
}
256277
}
278+
257279
/**
258280
* 歌单搜索
259281
*
@@ -357,19 +379,31 @@ class SearchActivity : BaseActivity<SearchPresenter>(), SearchContract.View {
357379
* 初始化过滤条件
358380
*/
359381
private fun initSearchFilter(menu: Menu) {
360-
filter[SearchEngine.Filter.QQ] = PreferenceManager.getDefaultSharedPreferences(this).getBoolean("key_search_filter_qq", true)
361-
filter[SearchEngine.Filter.XIAMI] = PreferenceManager.getDefaultSharedPreferences(this).getBoolean("key_search_filter_xiami", true)
362-
filter[SearchEngine.Filter.BAIDU] = PreferenceManager.getDefaultSharedPreferences(this).getBoolean("key_search_filter_baidu", true)
363-
filter[SearchEngine.Filter.NETEASE] = PreferenceManager.getDefaultSharedPreferences(this).getBoolean("key_search_filter_netease", true)
364-
filter[SearchEngine.Filter.CP] = PreferenceManager.getDefaultSharedPreferences(this).getBoolean("key_search_filter_cp", true)
365-
filter[SearchEngine.Filter.REPEAT] = PreferenceManager.getDefaultSharedPreferences(this).getBoolean("key_search_filter_repeat", true)
382+
val prefs = PreferenceManager.getDefaultSharedPreferences(this)
383+
val options = prefs.getStringSet("key_search_filter", null)
384+
val searchFilters = resources.getStringArray(R.array.pref_search_filter_select)
385+
val selectFilters = mutableListOf<String>()
386+
if (options != null) {
387+
for (t in options) {
388+
selectFilters.add(searchFilters[t.toInt() - 1])
389+
}
390+
}
391+
392+
filter[SearchEngine.Filter.QQ] = selectFilters.contains(getString(R.string.search_filter_qq))// PreferenceManager.getDefaultSharedPreferences(this).getBoolean("key_search_filter_qq", true)
393+
filter[SearchEngine.Filter.XIAMI] = selectFilters.contains(getString(R.string.search_filter_xiami))// PreferenceManager.getDefaultSharedPreferences(this).getBoolean("key_search_filter_xiami", true)
394+
filter[SearchEngine.Filter.BAIDU] = selectFilters.contains(getString(R.string.search_filter_baidu))// PreferenceManager.getDefaultSharedPreferences(this).getBoolean("key_search_filter_baidu", true)
395+
filter[SearchEngine.Filter.NETEASE] = selectFilters.contains(getString(R.string.search_filter_netease))// PreferenceManager.getDefaultSharedPreferences(this).getBoolean("key_search_filter_netease", true)
396+
filter[SearchEngine.Filter.CP] = selectFilters.contains(getString(R.string.search_filter_cp))//selectFilters.contains(getString(R.string.search_filter_cp)) PreferenceManager.getDefaultSharedPreferences(this).getBoolean("key_search_filter_cp", true)
397+
filter[SearchEngine.Filter.REPEAT] = selectFilters.contains(getString(R.string.search_filter_repeat))// PreferenceManager.getDefaultSharedPreferences(this).getBoolean("key_search_filter_repeat", true)
366398

367399
menu.findItem(R.id.menu_filter_qq).isChecked = filter[SearchEngine.Filter.QQ] ?: true
368400
menu.findItem(R.id.menu_filter_xiami).isChecked = filter[SearchEngine.Filter.XIAMI] ?: true
369-
menu.findItem(R.id.menu_filter_netease).isChecked = filter[SearchEngine.Filter.NETEASE] ?: true
401+
menu.findItem(R.id.menu_filter_netease).isChecked = filter[SearchEngine.Filter.NETEASE]
402+
?: true
370403
menu.findItem(R.id.menu_filter_baidu).isChecked = filter[SearchEngine.Filter.BAIDU] ?: true
371404
menu.findItem(R.id.menu_filter_copyright).isChecked = filter[SearchEngine.Filter.CP] ?: true
372-
menu.findItem(R.id.menu_filter_repeat).isChecked = filter[SearchEngine.Filter.REPEAT] ?: true
405+
menu.findItem(R.id.menu_filter_repeat).isChecked = filter[SearchEngine.Filter.REPEAT]
406+
?: true
373407
}
374408

375409
/**

0 commit comments

Comments
 (0)