修复歌单搜索BUG,修复平板模式播放器显示BUG,修复液已知的歌单操作BUG

添加播放器UI手势,完善播放器控制内部组件
This commit is contained in:
muqing 2023-12-03 12:53:03 +08:00
parent 1196201abe
commit 5e39127b19
27 changed files with 530 additions and 327 deletions

View File

@ -18,7 +18,7 @@ android {
//noinspection OldTargetApi
targetSdk 31
versionCode 1
versionName "1.7.0"
versionName "1.7.1"
}
compileOptions {

View File

@ -12,8 +12,8 @@
"filters": [],
"attributes": [],
"versionCode": 1,
"versionName": "1.7.0",
"outputFile": "Cloud_music-debug-v1.7.0.apk"
"versionName": "1.7.1",
"outputFile": "Cloud_music-debug-v1.7.1.apk"
}
],
"elementType": "File"

View File

@ -52,7 +52,7 @@
<activity android:name=".activity_search" />
<activity
android:name=".bfq"
android:configChanges="orientation|screenLayout"
android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@style/fragment_dialog" />
<activity android:name=".fragment.mp3" />

View File

@ -171,12 +171,7 @@ public class MediaPlayer {
}
bfq_db.setname(name);
bfq_db.setzz(zz);
if (bfqkz.notify.notificationManager != null) {
bfqkz.notify.notificationBuilder.setContentTitle(name);
bfqkz.notify.notificationBuilder.setContentText(zz);
bfqkz.notify.notificationManager_notify();
}
if (com.muqingbfq.fragment.mp3.lbspq != null) {
com.muqingbfq.fragment.mp3.lbspq.notifyDataSetChanged();
}

View File

@ -135,7 +135,6 @@ public class MyButtonClickReceiver extends BroadcastReceiver {
if (bfqkz.mt == null) {
return;
}
gj.sc(bfqkz.mt);
// gj.sc(isMusicServiceBound);播放/暂停按钮点击事件 if (isMusicServiceBound)
if (bfqkz.mt.isPlaying()) {
bfqkz.mt.pause();

View File

@ -17,7 +17,6 @@ import android.widget.ListView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.flexbox.AlignItems;
@ -48,8 +47,7 @@ public class activity_search extends ActivityToolbar {
private final List<String> list = new ArrayList<>();
ListView listPopupWindow;
ActivitySearchBinding inflate;
@SuppressLint({"RestrictedApi", "NotifyDataSetChanged"})
@SuppressLint("NotifyDataSetChanged")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@ -197,9 +195,13 @@ public class activity_search extends ActivityToolbar {
public void start(String name) {
dismiss();
if (!TextUtils.isEmpty(name)) {
search search = (com.muqingbfq.fragment.search) getSupportFragmentManager().
findFragmentById(R.id.search_fragment);
search.setStart(name);
search sea = (search) getSupportFragmentManager().findFragmentById(R.id.search_fragment);
if (!name.equals(sea.name)) {
sea.i = 0;
sea.inflate.tablayout.getTabAt(0).select();
}
sea.setVisibility(true);
sea.setStart(name);
addSearchRecord(name);
}
}
@ -266,11 +268,15 @@ public class activity_search extends ActivityToolbar {
private void end() {
search search = (com.muqingbfq.fragment.search) getSupportFragmentManager().
findFragmentById(R.id.search_fragment);
if (search.getVisibility()) {
if (search.isVisible()) {
search.setVisibility(false);
} else {
finish();
}
}
@Override
public void finish() {
super.finish();
com.muqingbfq.fragment.search.lbspq = null;
}
}

View File

@ -64,6 +64,9 @@ public class playlist extends Thread {
list.clear();
try {
JSONObject json = gd.like;
if (json == null || json.length() < 1) {
return false;
}
for (Iterator<String> it = json.keys(); it.hasNext(); ) {
String id = it.next();
JSONObject jsonObject = json.getJSONObject(id);
@ -72,7 +75,7 @@ public class playlist extends Thread {
String picUrl = jsonObject.getString("picUrl");
list.add(new xm(id, name, zz, picUrl));
}
main.handler.post(new mp3.lbspq_sx());
// main.handler.post(new mp3.lbspq_sx());
return true;
} catch (Exception e) {
gj.sc("失败的错误 " + e);

View File

@ -61,7 +61,11 @@ public class resource {
for (int i = 0; i < length; i++) {
JSONObject get = list_array.getJSONObject(i);
String id = get.getString("id");
String name = get.getString("name") + "\n" + get.getString("description");
String name = get.getString("name") + "\n";
String description = get.getString("description");
if (!TextUtils.isEmpty(description) && !description.equals("null")) {
name += description;
}
boolean cz = wj.cz(wj.gd + id);
String coverImgUrl = get.getString("coverImgUrl");
list.add(new xm(id, name, coverImgUrl, cz));

View File

@ -1,12 +1,18 @@
package com.muqingbfq;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.View;
import android.util.TypedValue;
import android.view.MotionEvent;
import android.view.WindowManager;
import android.widget.LinearLayout;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@ -15,18 +21,26 @@ import androidx.appcompat.widget.Toolbar;
import com.muqingbfq.databinding.ActivityBfqBinding;
import com.muqingbfq.fragment.Media;
import com.muqingbfq.mq.gj;
public class bfq extends AppCompatActivity {
@SuppressLint("StaticFieldLeak")
public static AppCompatActivity context;
ActivityBfqBinding inflate;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
context = this;
ActivityBfqBinding inflate = ActivityBfqBinding.inflate(getLayoutInflater());
setContentView(inflate.getRoot());
inflate = ActivityBfqBinding.inflate(getLayoutInflater());
LinearLayout root = inflate.getRoot();
TypedValue typedValue = new TypedValue();
home.appCompatActivity.getTheme().resolveAttribute(android.R.attr.windowBackground, typedValue, true);
// 设置背景颜色
root.setBackgroundColor(typedValue.data);
setContentView(root);
Media media = (Media) getSupportFragmentManager().findFragmentById(R.id.fragment_bfq);
media.setBfq(this);
Toolbar toolbar = inflate.toolbar;
toolbar.setNavigationOnClickListener(view1 -> finish());
toolbar.setOnMenuItemClickListener(item -> {
@ -42,11 +56,22 @@ public class bfq extends AppCompatActivity {
Media.setname(bfqkz.xm.name);
Media.setzz(bfqkz.xm.zz);
}
inflate.name.setOnLongClickListener(view -> {
/* inflate.name.setOnLongClickListener(view -> {
gj.fz(bfq.this, inflate.name.getText().toString());
gj.ts(bfq.this, "复制成功");
return false;
});
});*/
bfq_an.kz kz = new bfq_an.kz();
inflate.kg.setOnClickListener(kz);
inflate.xyq.setOnClickListener(kz);
inflate.xyq.setOnClickListener(kz);
inflate.bfqListMp3.
setOnClickListener(view1 -> com.muqingbfq.fragment.bflb_db.start(this));
inflate.control.setOnClickListener(new bfq_an.control(inflate.control));
if (bfqkz.mt != null && bfqkz.mt.build.isPlaying()) {
inflate.kg.setImageResource(R.drawable.bf);
}
text();
}
public static Bitmap bitmap;
@ -58,9 +83,59 @@ public class bfq extends AppCompatActivity {
context.startActivity(intent);
}
public void kgsetImageResource(int a) {
if (inflate == null) {
return;
}
inflate.kg.setImageResource(a);
}
@Override
public void onConfigurationChanged(@NonNull Configuration newConfig) {
super.onConfigurationChanged(newConfig);
Media.view = null;
}
float downY, moveY;
@SuppressLint("ClickableViewAccessibility")
public void text() {
inflate.toolbar.setOnTouchListener((view, motionEvent) -> {
LinearLayout root = inflate.getRoot();
switch (motionEvent.getAction()) {
case MotionEvent.ACTION_DOWN:
downY = motionEvent.getRawY();
break;
case MotionEvent.ACTION_MOVE:
//长按事件可以移动
moveY = motionEvent.getRawY();
//移动的距离
float dy = moveY - downY;
//重新设置控件的位置移动
if (dy <= 0) {
return true;
} else if (dy > main.g - main.g / 5.0) {
finish();
return true;
}
root.setTranslationY(dy);
break;
case MotionEvent.ACTION_UP:
if (inflate.getRoot().getY() > main.g - main.g / 1.5) {
finish();
return true;
}
ObjectAnimator animator = ObjectAnimator.ofFloat(root, "y", root.getY(), 0);
animator.setDuration(300);
animator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
root.setY(0);
}
});
animator.start();
break;
}
return true;
});
}
}

View File

@ -3,14 +3,20 @@ package com.muqingbfq;
import android.annotation.SuppressLint;
import android.app.Service;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Binder;
import android.os.Bundle;
import android.os.IBinder;
import android.support.v4.media.MediaMetadataCompat;
import android.support.v4.media.session.MediaSessionCompat;
import android.support.v4.media.session.PlaybackStateCompat;
import android.text.TextUtils;
import android.view.KeyEvent;
import androidx.annotation.Nullable;
import androidx.media3.common.MediaItem;
import com.muqingbfq.api.url;
import com.muqingbfq.mq.BluetoothMusicController;
@ -58,6 +64,27 @@ public class bfqkz extends Service {
yc.start(home.appCompatActivity, "bfqkz mp3(" + id + ") :" + e);
}
}
public static void mp3(Uri id) {
try {
if (TextUtils.isEmpty(id.toString())) {
return;
}
gj.sc(xm.picurl);
if (TextUtils.isEmpty(xm.picurl.toString())) {
xm.picurl = url.picurl(xm.id);
}
MediaItem mediaItem = MediaItem.fromUri(id);
main.handler.post(() -> {
mt.build.setMediaItem(mediaItem);
mt.build.prepare();
mt.build.setPlayWhenReady(true);
mt.start();
});
} catch (Exception e) {
yc.start(home.appCompatActivity, "bfqkz mp3(" + id + ") :" + e);
}
}
public static MediaSessionCompat mSession;
public static MediaMetadataCompat build;
@ -73,36 +100,76 @@ public class bfqkz extends Service {
playback=new PlaybackStateCompat.Builder()
.setState(PlaybackStateCompat.STATE_NONE,0,1.0f)
.build();
/* mSession.setCallback(new MediaSessionCompat.Callback() {
@Override
public void onPlay() {
mt.start();
}
@Override
public void onPause() {
// 处理暂停音乐逻辑
mt.pause();
}
@Override
public void onSkipToNext() {
// 处理切换到下一首音乐逻辑
}
mSession.setCallback(new callback());
mSession.setFlags(MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS);
mSession.setPlaybackState(playback);
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon);
@Override
public void onSkipToPrevious() {
// 处理切换到上一首音乐逻辑
}
});*/
build = new MediaMetadataCompat.Builder()
.putString(MediaMetadataCompat.METADATA_KEY_TITLE, "Song Title")
.putString(MediaMetadataCompat.METADATA_KEY_ARTIST, "Artist Name")
.putBitmap(MediaMetadataCompat.METADATA_KEY_ALBUM_ART, bitmap)
.putLong(MediaMetadataCompat.METADATA_KEY_DURATION, 1000) // 单位为毫秒
.build();
mSession.setMetadata(build);
mSession.setPlaybackState(playback);
mSession.setActive(true);
// setSessionToken(mSession.getSessionToken());
notify = new com.muqingbfq.mq.NotificationManagerCompat(this);
}
class callback extends MediaSessionCompat.Callback {
@Override
public boolean onMediaButtonEvent(Intent mediaButtonEvent) {
KeyEvent event = (KeyEvent) mediaButtonEvent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
return true;
}
@Override
public void onPlay() {
super.onPlay();
if(playback.getState() == PlaybackStateCompat.STATE_PAUSED){
mt.start();
playback = new PlaybackStateCompat.Builder()
.setState(PlaybackStateCompat.STATE_PLAYING,0,1.0f)
.build();
mSession.setPlaybackState(playback);
}
}
@Override
public void onPause() {
super.onPause();
if(playback.getState() == PlaybackStateCompat.STATE_PLAYING){
mt.pause();
playback = new PlaybackStateCompat.Builder()
.setState(PlaybackStateCompat.STATE_PAUSED,0,1.0f)
.build();
mSession.setPlaybackState(playback);
}
}
@Override
public void onPlayFromUri(Uri uri, Bundle extras) {
try {
switch (playback.getState()){
case PlaybackStateCompat.STATE_PLAYING:
case PlaybackStateCompat.STATE_PAUSED:
case PlaybackStateCompat.STATE_NONE:
mp3(uri);
playback = new PlaybackStateCompat.Builder()
.setState(PlaybackStateCompat.STATE_CONNECTING,0,1.0f)
.build();
mSession.setPlaybackState(playback);
//我们可以保存当前播放音乐的信息以便客户端刷新UI
mSession.setMetadata(new MediaMetadataCompat.Builder()
.putString(MediaMetadataCompat.METADATA_KEY_TITLE,extras.getString("title"))
.build()
);
break;
}
}catch (Exception e){
e.printStackTrace();
}
}
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
@ -118,7 +185,7 @@ public class bfqkz extends Service {
try {
// 更新通知栏的播放状态
if (notify.notificationBuilder != null) {
notify.tzl_an();
notify.tzl();
}
} catch (Exception e) {
gj.sc("bfqkz updateNotification:" + e);

View File

@ -33,6 +33,12 @@ import me.wcy.lrcview.LrcView;
public class Media extends Fragment {
@SuppressLint("StaticFieldLeak")
public static LinearLayout view;
private static bfq bfq;
public void setBfq(bfq bfq) {
Media.bfq = bfq;
}
@SuppressLint("StaticFieldLeak")
private static TextView time_a, time_b;
@SuppressLint("StaticFieldLeak")
@ -63,24 +69,19 @@ public class Media extends Fragment {
}
public static void setbf(boolean bool) {
if (bfq != null) {
if (bool) {
//开始
kgsetImageResource(R.drawable.bf);
bfq.kgsetImageResource(R.drawable.bf);
} else {
//暂停
kgsetImageResource(R.drawable.zt);
bfq.kgsetImageResource(R.drawable.zt);
}
}
bfq_db.setkg(bool);
bfqkz.updateNotification();
}
private static void kgsetImageResource(int a) {
if (view == null) {
return;
}
ImageView imageView = view.findViewById(R.id.kg);
imageView.setImageResource(a);
}
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@ -90,17 +91,8 @@ public class Media extends Fragment {
}
FragmentBfqBinding inflate = FragmentBfqBinding.inflate(inflater, container, false);
view = inflate.getRoot();
/* if (home.imageView == null) {
home.imageView = new ImageView(home.appCompatActivity);
home.imageView.setScaleType(ImageView.ScaleType.FIT_XY);
home.imageView.setImageResource(R.drawable.icon);
}*/
inflate.cardview.addView(home.imageView);
bfq_an.kz kz = new bfq_an.kz();
ImageView kg = view.findViewById(R.id.kg);
kg.setOnClickListener(kz);
view.findViewById(R.id.xyq).setOnClickListener(kz);
view.findViewById(R.id.syq).setOnClickListener(kz);
tdt = inflate.tdt;
tdt.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
@ -130,7 +122,7 @@ public class Media extends Fragment {
bfqkz.mt.build.seekTo(Math.toIntExact(time));
return false;
});
if (!isTablet(bfq.context)) {
if (!isTablet(com.muqingbfq.bfq.context)) {
lrcview.setOnTapListener((view, x, y) -> {
View kp = inflate.kp1;
if (kp.getVisibility() == View.VISIBLE) {
@ -141,10 +133,7 @@ public class Media extends Fragment {
});
}
//初始化播放器列表
inflate.bfqListMp3.
setOnClickListener(view1 -> com.muqingbfq.fragment.bflb_db.start(bfq.context));
inflate.like.setOnClickListener(view1 -> {
bfq.findViewById(R.id.like).setOnClickListener(view1 -> {
ImageView like = (ImageView) view1;
try {
if (bfqkz.like_bool) {
@ -166,22 +155,15 @@ public class Media extends Fragment {
e.printStackTrace();
}
});
inflate.control.setOnClickListener(new bfq_an.control(inflate.control));
if (bfqkz.xm != null) {
main.handler.removeCallbacks(bfqkz.mt.updateSeekBar); // 在播放开始时启动更新进度
long duration = bfqkz.mt.build.getDuration();
tdt.setMax((int) bfqkz.mt.build.getDuration());
setTime_a(bfq_an.getTime(duration));
long position = bfqkz.mt.build.getCurrentPosition();
setProgress((int) position);
main.handler.post(bfqkz.mt.updateSeekBar); // 在播放开始时启动更新进度
if (bfqkz.mt.build.isPlaying()) {
kg.setImageResource(R.drawable.bf);
}
bfq_an.islike(bfq.context);
bfq_an.islike(com.muqingbfq.bfq.context);
new Thread() {
@Override
public void run() {
@ -209,7 +191,7 @@ public class Media extends Fragment {
}
public static void setlike(boolean bool) {
ImageView imageView = view.findViewById(R.id.like);
ImageView imageView = bfq.findViewById(R.id.like);
int color = R.color.text;
if (bool) {
color = android.R.color.holo_red_dark;
@ -222,22 +204,22 @@ public class Media extends Fragment {
if (home.imageView == null) {
return;
}
main.handler.post(() -> home.imageView.setImageBitmap(bfq.bitmap));
main.handler.post(() -> home.imageView.setImageBitmap(com.muqingbfq.bfq.bitmap));
}
public static void setname(String str) {
if (bfq.context == null) {
if (com.muqingbfq.bfq.context == null) {
return;
}
TextView name = bfq.context.findViewById(R.id.name);
TextView name = com.muqingbfq.bfq.context.findViewById(R.id.name);
name.setText(str);
}
public static void setzz(String str) {
if (bfq.context == null) {
if (com.muqingbfq.bfq.context == null) {
return;
}
TextView zz = bfq.context.findViewById(R.id.zz);
TextView zz = com.muqingbfq.bfq.context.findViewById(R.id.zz);
zz.setText(str);
}

View File

@ -102,6 +102,10 @@ public class gd extends Fragment {
return new VH(view);
}
public void setList(List<xm> list) {
this.list = list;
}
@Override
public void onBindViewHolder(@NonNull VH holder, int position) {
xm xm = list.get(position);

View File

@ -30,7 +30,7 @@ import com.muqingbfq.xm;
import java.util.ArrayList;
import java.util.List;
public class mp3 extends AppCompatActivity {
public class mp3 extends com.muqingbfq.mq.ActivityToolbar {
private final List<xm> list = new ArrayList<>();
public static RecyclerView.Adapter<MyViewHoder> lbspq;
@ -41,8 +41,6 @@ public class mp3 extends AppCompatActivity {
Intent intent = getIntent();
Toolbar toolbar = findViewById(R.id.toolbar);
toolbar.setTitle(intent.getStringExtra("name"));
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
lbspq = new spq();
RecyclerView lb = findViewById(R.id.lb);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
@ -50,8 +48,6 @@ public class mp3 extends AppCompatActivity {
lb.setAdapter(lbspq);
String id = intent.getStringExtra("id");
new start(id);
/* getSupportFragmentManager().beginTransaction()
.add(R.id.bfq_db,home.bfq_db).commit();*/
}
@SuppressLint("NotifyDataSetChanged")

View File

@ -37,22 +37,22 @@ import java.util.List;
public class search extends Fragment {
public static RecyclerView.Adapter<MyViewHoder> lbspq;
List<xm> list = new ArrayList<>();
gd.baseadapter adapter_gd;
public String name;
private String name;
FragmentSearchBinding inflate;
private int i = 0;
public FragmentSearchBinding inflate;
public int i = 0;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
inflate = FragmentSearchBinding.inflate(inflater, container, false);
lbspq = new spq();
View view = inflate.getRoot();
TypedValue typedValue = new TypedValue();
requireContext().getTheme().resolveAttribute(android.R.attr.windowBackground, typedValue, true);
// 设置背景颜色
lbspq = new spq();
adapter_gd = new gd.baseadapter(getContext(), list);
view.setBackgroundColor(typedValue.data);
inflate.tablayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
@ -86,13 +86,19 @@ public class search extends Fragment {
}
}
public boolean getVisibility() {
return inflate.getRoot().isShown();
}
public int k;
public void setStart(String name) {
setVisibility(true);
gj.sc(i);
if (i == 0) {
new spq();
inflate.recyclerview.setLayoutManager(new LinearLayoutManager(getContext()));
inflate.recyclerview.setAdapter(lbspq);
} else if (i == 1) {
k = (int) (main.k / getResources().getDisplayMetrics().density + 0.5f) / 120;
GridLayoutManager gridLayoutManager = new GridLayoutManager(getContext(),
k);
inflate.recyclerview.setLayoutManager(gridLayoutManager);
inflate.recyclerview.setAdapter(adapter_gd);
}
new start(name);
}
@ -100,7 +106,6 @@ public class search extends Fragment {
public start(String name) {
list.clear();
search.this.name = name;
start();
}
@ -115,13 +120,9 @@ public class search extends Fragment {
}
main.handler.post(() -> {
if (i == 0) {
inflate.recyclerview.setLayoutManager(new LinearLayoutManager(getContext()));
inflate.recyclerview.setAdapter(new spq());
lbspq.notifyDataSetChanged();
} else if (i == 1) {
int k = (int) (main.k / getResources().getDisplayMetrics().density + 0.5f);
GridLayoutManager gridLayoutManager = new GridLayoutManager(getContext(), 3);
inflate.recyclerview.setLayoutManager(gridLayoutManager);
inflate.recyclerview.setAdapter(new gd.baseadapter(getContext(), list));
adapter_gd.notifyDataSetChanged();
}
// lbspq.notifyDataSetChanged();
});
@ -158,7 +159,7 @@ public class search extends Fragment {
}
private void gd() {
String hq = wl.hq("/search?keywords=" + name + "&type=1000");
String hq = wl.hq("/search?keywords=" + name + "&limit=" + (k * k) + "&type=1000");
try {
JSONArray jsonArray = new JSONObject(hq).getJSONObject("result")
.getJSONArray("playlists");

View File

@ -14,6 +14,7 @@ import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.drawerlayout.widget.DrawerLayout;
import com.google.android.material.card.MaterialCardView;
import com.google.android.material.navigation.NavigationView;
import com.muqingbfq.fragment.Media;
import com.muqingbfq.fragment.bfq_db;
@ -22,9 +23,9 @@ import com.muqingbfq.mq.gj;
public class home extends AppCompatActivity {
@SuppressLint("StaticFieldLeak")
public static AppCompatActivity appCompatActivity;
@SuppressLint("StaticFieldLeak")
public static ImageView imageView;
@SuppressLint({"CommitTransaction", "ObsoleteSdkInt"})
@Override
protected void onCreate(Bundle savedInstanceState) {
setTheme(R.style.Theme_muqing);
@ -35,11 +36,12 @@ public class home extends AppCompatActivity {
if (imageView == null) {
imageView = new ImageView(this);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
if (bfq.bitmap == null) {
imageView.setImageResource(R.drawable.icon);
}
if (bfq.bitmap != null) {
} else {
Media.setImageBitmap();
}
}
try {
//初始化工具栏
Toolbar toolbar = findViewById(R.id.toolbar);

View File

@ -12,11 +12,10 @@ import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.BitmapFactory;
import android.os.Build;
import android.support.v4.media.session.PlaybackStateCompat;
import android.support.v4.media.MediaMetadataCompat;
import androidx.core.app.ActivityCompat;
import androidx.core.app.NotificationCompat;
import androidx.media.session.MediaButtonReceiver;
import com.muqingbfq.MyButtonClickReceiver;
import com.muqingbfq.R;
@ -30,11 +29,12 @@ public class NotificationManagerCompat {
Service context;
public NotificationCompat.Builder notificationBuilder;
public androidx.core.app.NotificationManagerCompat notificationManager;
private String name, zz;
public NotificationManagerCompat(Service context) {
this.context = context;
CharSequence name = context.getString(R.string.app_name);
String zz = context.getString(R.string.zz);
name = context.getString(R.string.app_name);
zz = context.getString(R.string.zz);
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name,
@ -54,7 +54,7 @@ public class NotificationManagerCompat {
intent.setComponent(new ComponentName(context, home.class));//用ComponentName得到class对象
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);// 关键的一步设置启动模式两种情况
PendingIntent pendingIntent = getActivity(context, intent);
pendingIntent = getActivity(context, intent);
Intent my = new Intent(context, MyButtonClickReceiver.class);
pendingIntent_kg = getBroadcast(context, my.
setAction("kg"));
@ -64,15 +64,14 @@ public class NotificationManagerCompat {
setAction("xyq"));
// 取消操作的PendingIntent
// 取消操作的PendingIntent
PendingIntent cancelIntent = MediaButtonReceiver.buildMediaButtonPendingIntent(context,
PlaybackStateCompat.ACTION_STOP);
androidx.media.app.NotificationCompat.MediaStyle style =
new androidx.media.app.NotificationCompat.MediaStyle()
/* PendingIntent cancelIntent = MediaButtonReceiver.buildMediaButtonPendingIntent(context,
PlaybackStateCompat.ACTION_STOP);*/
style = new androidx.media.app.NotificationCompat.MediaStyle()
.setShowActionsInCompactView(0, 1, 2)
.setMediaSession(bfqkz.mSession.getSessionToken())
.setShowCancelButton(true)
.setCancelButtonIntent(cancelIntent);
.setMediaSession(bfqkz.mSession.getSessionToken());
// .setShowCancelButton(true)
// .setCancelButtonIntent(cancelIntent);
notificationManager = androidx.core.app.NotificationManagerCompat.from(context);
notificationBuilder = getNotificationBuilder(context)
.setSmallIcon(R.drawable.icon)
.setContentTitle(name).setContentText(zz)
@ -81,35 +80,43 @@ public class NotificationManagerCompat {
.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
.setContentIntent(pendingIntent)
.setStyle(style);
notificationManager = androidx.core.app.NotificationManagerCompat.from(context);
tzl_an();
tzl();
// context.startForeground(1, notificationBuilder.build());
} catch (Exception e) {
yc.start(context, e);
}
}
PendingIntent pendingIntent;
androidx.media.app.NotificationCompat.MediaStyle style;
@SuppressLint("RestrictedApi")
public void tzl() {
if (bfqkz.xm != null) {
name = bfqkz.xm.name;
zz = bfqkz.xm.zz;
}
bfqkz.build = new MediaMetadataCompat.Builder()
.putString(MediaMetadataCompat.METADATA_KEY_TITLE, name)
.putString(MediaMetadataCompat.METADATA_KEY_ARTIST, zz)
.build();
bfqkz.mSession.setMetadata(bfqkz.build);
notificationBuilder.mActions.clear();
notificationBuilder.addAction(android.R.drawable.ic_media_previous, "syq", pendingIntent_syq) // #0
.addAction(bfqkz.mt.isPlaying() ? android.R.drawable.ic_media_pause : android.R.drawable.ic_media_play
, "kg", pendingIntent_kg) // #1
.addAction(android.R.drawable.ic_media_next, "xyq", pendingIntent_xyq)
.setContentTitle(name)
.setContentText(zz)
.setOngoing(bfqkz.mt.isPlaying());
notificationManager_notify();
}
private PendingIntent pendingIntent_kg,
pendingIntent_syq,
pendingIntent_xyq;
private final String CHANNEL_ID = "muqing_yy_id";
@SuppressLint("RestrictedApi")
public void tzl_an() {
notificationBuilder.mActions.clear();
notificationBuilder
/* .addAction(R.drawable.syq, "syq", pendingIntent_syq) // #0
.addAction(bfqkz.mt.isPlaying() ? R.drawable.bf : R.drawable.zt
, "kg", pendingIntent_kg) // #1
.addAction(R.drawable.xyq, "xyq", pendingIntent_xyq);*/
.addAction(android.R.drawable.ic_media_previous, "syq", pendingIntent_syq) // #0
.addAction(bfqkz.mt.isPlaying() ? android.R.drawable.ic_media_pause : android.R.drawable.ic_media_play
, "kg", pendingIntent_kg) // #1
.addAction(android.R.drawable.ic_media_next, "xyq", pendingIntent_xyq);
notificationBuilder.setOngoing(bfqkz.mt.isPlaying());
notificationManager_notify();
}
public void notificationManager_notify() {
if (ActivityCompat.checkSelfPermission(context, Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED) {
return;

View File

@ -27,9 +27,12 @@ import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;
public class floating extends Service {
private static RecyclerView.Adapter<ViewHolder> lbspq = new RecyclerView.Adapter<ViewHolder>() {
private static RecyclerView.Adapter<ViewHolder> lbspq;
class spq extends RecyclerView.Adapter<ViewHolder> {
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
@ -46,11 +49,10 @@ public class floating extends Service {
public int getItemCount() {
return list.size();
}
};
}
public static void start(Context context) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M &&
Settings.canDrawOverlays(context)) {
if (Settings.canDrawOverlays(context)) {
context.startService(new Intent(context, floating.class));
}
}
@ -60,7 +62,7 @@ public class floating extends Service {
context.stopService(serviceIntent);
}
public static List<String> list = new ArrayList<>();
public static List<String> list;
private WindowManager windowManager;
private View view;
private View image, layout;
@ -75,7 +77,7 @@ public class floating extends Service {
if (lbspq == null || list == null) {
return;
}
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); // 创建一个 SimpleDateFormat 对象指定时间格式
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss", Locale.CHINA); // 创建一个 SimpleDateFormat 对象指定时间格式
String formattedDate = sdf.format(new Date()); // 格式化当前时间
list.add(0, formattedDate + ": " + str);
main.handler.post(lbspq::notifyDataSetChanged);
@ -85,6 +87,8 @@ public class floating extends Service {
@Override
public void onCreate() {
super.onCreate();
list = new ArrayList<>();
lbspq = new spq();
view = LayoutInflater.from(this).inflate(R.layout.floating_sc, null);
layout = view.findViewById(R.id.view1);
ViewGroup.LayoutParams layoutParams = layout.getLayoutParams();

View File

@ -19,7 +19,7 @@ public class wj {
public static String gd = "gd/";
public static String tx = "image/";
public static String gd_json = "gd.json", mp3_xz = "mp3_xz.json", gd_xz = "gd_xz.json",
gd_phb = "gd_phb.json", mp3_like = "like.json";
gd_phb = "gd_phb.json", mp3_like = "mp3_like.json";
public wj(Context context) {
try {

View File

@ -4,11 +4,12 @@ import android.annotation.SuppressLint;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.provider.Settings;
import android.view.MenuItem;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.app.AppCompatDelegate;
@ -68,6 +69,8 @@ public class sz extends AppCompatActivity {
});
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if (item.getItemId() == android.R.id.home) {
@ -76,15 +79,20 @@ public class sz extends AppCompatActivity {
return super.onOptionsItemSelected(item);
}
ActivityResultLauncher<Intent> intent = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(),
result -> {
if (Settings.canDrawOverlays(this)) {
com.muqingbfq.mq.floating.start(sz.this);
}
});
public void kaifazhe() {
MaterialSwitch materialSwitch = findViewById(R.id.switch_kfz);
materialSwitch.setOnCheckedChangeListener((compoundButton, b) -> {
if (b) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M &&
!Settings.canDrawOverlays(this)) {
if (!Settings.canDrawOverlays(this)) {
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, 114511);
this.intent.launch(intent);
} else {
com.muqingbfq.mq.floating.start(sz.this);
}
@ -93,15 +101,4 @@ public class sz extends AppCompatActivity {
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 114511) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && Settings.canDrawOverlays(this)) {
com.muqingbfq.mq.floating.start(sz.this);
}
}
}
}

View File

@ -6,19 +6,19 @@ import android.util.AttributeSet;
import androidx.annotation.NonNull;
public class TextView extends androidx.appcompat.widget.AppCompatTextView {
public TextView(@NonNull Context context) {
public class Text extends androidx.appcompat.widget.AppCompatTextView {
public Text(@NonNull Context context) {
super(context);
initView();
}
public TextView(Context context, AttributeSet attrs) {
public Text(Context context, AttributeSet attrs) {
super(context, attrs);
initView();
}
public TextView(Context context, AttributeSet attrs, int defStyleAttr) {
public Text(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initView();
}

View File

@ -5,8 +5,8 @@
android:viewportHeight="1024">
<path
android:pathData="M995,538.7c-13.8,-8.9 -30.3,-12 -46.4,-8.5l-182.9,39.3c-28.2,6.1 -48.6,31.4 -48.6,60.2v224.6c0,21.8 -17.7,39.5 -39.6,39.5 -21.8,0 -39.5,-17.7 -39.5,-39.5s17.7,-39.6 39.5,-39.6c15.4,0 27.8,-12.4 27.8,-27.8s-12.4,-27.8 -27.8,-27.8c-52.4,0 -95.1,42.7 -95.1,95.2 0,52.4 42.7,95.1 95.1,95.1 52.5,0 95.1,-42.7 95.1,-95.1V629.8c0,-2.9 2,-5.3 4.8,-5.9l182.9,-39.3c1.9,-0.5 3.6,0.2 4.5,0.8 1,0.6 2.2,1.8 2.7,5V814c0,21.8 -17.7,39.6 -39.6,39.6 -10.5,0 -20.5,-4.1 -27.9,-11.6 -7.5,-7.5 -11.6,-17.4 -11.6,-28 0,-21.8 17.7,-39.6 39.6,-39.6 15.4,0 27.8,-12.4 27.8,-27.8s-12.4,-27.8 -27.8,-27.8c-52.5,0 -95.1,42.7 -95.1,95.1 0,25.4 9.9,49.3 27.9,67.3s41.8,27.9 67.2,27.9c52.5,0 95.1,-42.7 95.1,-95.1V590.5c0,-4.4 -0.5,-8.7 -1.4,-12.9 -3.4,-16.1 -12.9,-29.9 -26.7,-38.9z"
android:fillColor="@color/text"/>
android:fillColor="#000000"/>
<path
android:pathData="M338.3,315.1c35.3,-63.9 90.4,-114.1 158.6,-143.6 81.4,-35.2 171.7,-36.6 254.1,-3.9 106.7,42.3 183,134.9 204.1,247.8 3.1,16.7 17.7,28.4 34.1,28.4 2.1,0 4.3,-0.2 6.4,-0.6 18.9,-3.5 31.3,-21.7 27.8,-40.5C997.9,266.2 905.7,154.1 776.6,103c-99.7,-39.5 -208.8,-37.8 -307.3,4.7 -92.5,40 -165.1,111.6 -206.4,202.8 -48.9,3.6 -96.2,19.8 -137.8,48C62.2,400.9 19.7,465.3 5.3,539.7c-14.4,74.4 1,150 43.5,212.9 52.9,78.3 140.8,125 235.2,125h153.3c19.2,0 34.7,-15.6 34.7,-34.7s-15.6,-34.7 -34.7,-34.7H284c-71.3,0 -137.7,-35.3 -177.7,-94.4C74.2,666.3 62.6,609.3 73.5,553c10.9,-56.2 43,-104.8 90.5,-136.9 47.5,-32.1 104.5,-43.7 160.8,-32.8 56.2,10.9 104.8,43 136.9,90.5 10.7,15.9 32.3,20.1 48.2,9.3 15.9,-10.7 20.1,-32.3 9.3,-48.2 -42.4,-62.8 -106.6,-105.3 -180.9,-119.8z"
android:fillColor="@color/text"/>
android:fillColor="#000000"/>
</vector>

View File

@ -0,0 +1,134 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:menu="@menu/bfq"
app:navigationIcon="@drawable/end">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="vertical">
<com.muqingbfq.view.Text
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:text="@string/name"
android:textColor="@color/text"
android:textSize="26sp" />
<TextView
android:id="@+id/zz"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="2"
android:text="@string/zz"
android:textSize="20sp" />
</LinearLayout>
</androidx.appcompat.widget.Toolbar>
<androidx.fragment.app.FragmentContainerView
android:id="@+id/fragment_bfq"
android:name="com.muqingbfq.fragment.Media"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
tools:layout="@layout/fragment_bfq" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="16dp"
android:baselineAligned="false"
android:gravity="center_vertical"
android:orientation="horizontal">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1">
<ImageView
android:id="@+id/control"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_marginEnd="26dp"
android:background="?android:attr/selectableItemBackgroundBorderless"
android:src="@drawable/mt_sx"
tools:ignore="ContentDescription" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center">
<ImageView
android:id="@+id/syq"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_marginEnd="12dp"
android:background="?android:attr/selectableItemBackgroundBorderless"
android:src="@drawable/syq"
tools:ignore="ContentDescription" />
<ImageView
android:id="@+id/kg"
android:layout_width="46dp"
android:layout_height="46dp"
android:background="?android:attr/selectableItemBackgroundBorderless"
android:src="@drawable/zt"
tools:ignore="ContentDescription" />
<ImageView
android:id="@+id/xyq"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_marginStart="12dp"
android:background="?android:attr/selectableItemBackgroundBorderless"
android:importantForAccessibility="no"
android:src="@drawable/xyq" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="end">
<ImageView
android:id="@+id/bfq_list_mp3"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_marginEnd="16dp"
android:background="?android:attr/selectableItemBackgroundBorderless"
android:src="@drawable/cd"
tools:ignore="ContentDescription" />
<ImageView
android:id="@+id/like"
android:layout_width="36dp"
android:layout_height="wrap_content"
android:layout_marginEnd="26dp"
android:background="?android:attr/selectableItemBackgroundBorderless"
android:src="@mipmap/like"
app:tint="@color/text"
tools:ignore="ContentDescription" />
</LinearLayout>
</LinearLayout>
</LinearLayout>

View File

@ -67,89 +67,4 @@
android:layout_height="wrap_content"
android:text="@string/_00_00" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="16dp"
android:baselineAligned="false"
android:gravity="center_vertical"
android:orientation="horizontal">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1">
<ImageView
android:id="@+id/control"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_marginEnd="26dp"
android:background="?android:attr/selectableItemBackgroundBorderless"
android:src="@drawable/mt_sx"
tools:ignore="ContentDescription" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center">
<ImageView
android:id="@+id/syq"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_marginEnd="12dp"
android:background="?android:attr/selectableItemBackgroundBorderless"
android:src="@drawable/syq"
tools:ignore="ContentDescription" />
<ImageView
android:id="@+id/kg"
android:layout_width="46dp"
android:layout_height="46dp"
android:background="?android:attr/selectableItemBackgroundBorderless"
android:src="@drawable/zt"
tools:ignore="ContentDescription" />
<ImageView
android:id="@+id/xyq"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_marginStart="12dp"
android:background="?android:attr/selectableItemBackgroundBorderless"
android:importantForAccessibility="no"
android:src="@drawable/xyq" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="end">
<ImageView
android:id="@+id/bfq_list_mp3"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_marginEnd="16dp"
android:background="?android:attr/selectableItemBackgroundBorderless"
android:src="@drawable/cd"
tools:ignore="ContentDescription" />
<ImageView
android:id="@+id/like"
android:layout_width="36dp"
android:layout_height="wrap_content"
android:layout_marginEnd="26dp"
android:background="?android:attr/selectableItemBackgroundBorderless"
android:src="@mipmap/like"
app:tint="@color/text"
tools:ignore="ContentDescription" />
</LinearLayout>
</LinearLayout>
</LinearLayout>

View File

@ -1,22 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:navigationIcon="@drawable/end"
app:menu="@menu/bfq">
app:menu="@menu/bfq"
app:navigationIcon="@drawable/end">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="vertical">
<com.muqingbfq.view.TextView
<com.muqingbfq.view.Text
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@ -34,10 +37,64 @@
android:textSize="20sp" />
</LinearLayout>
</androidx.appcompat.widget.Toolbar>
<androidx.fragment.app.FragmentContainerView
android:id="@+id/fragment_bfq"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="com.muqingbfq.fragment.Media"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
tools:layout="@layout/fragment_bfq" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal"
android:paddingStart="20dp"
android:paddingEnd="20dp"
android:paddingBottom="26dp">
<ImageView
android:id="@+id/control"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_marginEnd="26dp"
android:background="?android:attr/selectableItemBackgroundBorderless"
android:src="@drawable/mt_sx"/>
<ImageView
android:id="@+id/syq"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_marginEnd="12dp"
android:background="?android:attr/selectableItemBackgroundBorderless"
android:src="@drawable/syq"
tools:ignore="ContentDescription" />
<ImageView
android:id="@+id/kg"
android:layout_width="46dp"
android:layout_height="46dp"
android:background="?android:attr/selectableItemBackgroundBorderless"
android:src="@drawable/zt"
tools:ignore="ContentDescription" />
<ImageView
android:id="@+id/xyq"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_marginStart="12dp"
android:background="?android:attr/selectableItemBackgroundBorderless"
android:importantForAccessibility="no"
android:src="@drawable/xyq" />
<ImageView
android:id="@+id/bfq_list_mp3"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_marginStart="26dp"
android:background="?android:attr/selectableItemBackgroundBorderless"
android:src="@drawable/cd"
tools:ignore="ContentDescription" />
</LinearLayout>
</LinearLayout>

View File

@ -17,7 +17,8 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center">
android:gravity="center"
tools:ignore="NestedWeights">
<com.google.android.material.card.MaterialCardView
android:id="@+id/cardview"
android:layout_width="260dp"
@ -86,57 +87,4 @@
android:text="@string/_00_00" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal"
android:paddingStart="20dp"
android:paddingEnd="20dp"
android:paddingBottom="26dp">
<ImageView
android:id="@+id/control"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_marginEnd="26dp"
android:background="?android:attr/selectableItemBackgroundBorderless"
android:src="@drawable/mt_sx"
tools:ignore="ContentDescription" />
<ImageView
android:id="@+id/syq"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_marginEnd="12dp"
android:background="?android:attr/selectableItemBackgroundBorderless"
android:src="@drawable/syq"
tools:ignore="ContentDescription" />
<ImageView
android:id="@+id/kg"
android:layout_width="46dp"
android:layout_height="46dp"
android:background="?android:attr/selectableItemBackgroundBorderless"
android:src="@drawable/zt"
tools:ignore="ContentDescription" />
<ImageView
android:id="@+id/xyq"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_marginStart="12dp"
android:background="?android:attr/selectableItemBackgroundBorderless"
android:importantForAccessibility="no"
android:src="@drawable/xyq" />
<ImageView
android:id="@+id/bfq_list_mp3"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_marginStart="26dp"
android:background="?android:attr/selectableItemBackgroundBorderless"
android:src="@drawable/cd"
tools:ignore="ContentDescription" />
</LinearLayout>
</LinearLayout>

View File

@ -18,6 +18,13 @@
<style name="fragment_dialog" parent="Theme.muqing">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowFrame">@null</item>
<!--设置无标题-->
<item name="android:windowNoTitle">true</item>
<!--设置窗口内容不覆盖-->
<item name="android:windowContentOverlay">@null</item>
<item name="android:backgroundDimEnabled">true</item>
</style>
<style name="Theme.main" parent="Theme.MaterialComponents.DayNight.DarkActionBar">