修复了播放器无播放列表闪退

音乐搜索,
歌词UI显示,
主页报错,
优化了一些体验上面的功能!
This commit is contained in:
muqing 2023-11-24 17:41:12 +08:00
parent a5d00632ca
commit b35415f172
9 changed files with 932 additions and 0 deletions

Binary file not shown.

View File

@ -0,0 +1,20 @@
{
"version": 3,
"artifactType": {
"type": "APK",
"kind": "Directory"
},
"applicationId": "com.muqingbfq",
"variantName": "debug",
"elements": [
{
"type": "SINGLE",
"filters": [],
"attributes": [],
"versionCode": 1,
"versionName": "1.6.7",
"outputFile": "Cloud_music-debug-v1.6.7.apk"
}
],
"elementType": "File"
}

View File

@ -0,0 +1,253 @@
package com.muqingbfq.fragment;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.res.Configuration;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.SeekBar;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import com.bumptech.glide.Glide;
import com.dirror.lyricviewx.LyricViewX;
import com.muqingbfq.R;
import com.muqingbfq.api.url;
import com.muqingbfq.bfq;
import com.muqingbfq.bfq_an;
import com.muqingbfq.bfqkz;
import com.muqingbfq.main;
import com.muqingbfq.xm;
import org.json.JSONObject;
public class Media extends Fragment {
@SuppressLint("StaticFieldLeak")
public static View view;
@SuppressLint("StaticFieldLeak")
private static TextView time_a, time_b;
@SuppressLint("StaticFieldLeak")
private static SeekBar tdt;
private static LyricViewX lrcview;
public static void setTime_a(String str) {
if (time_a == null) {
return;
}
time_a.setText(str);
}
public static void setTime_b(String str) {
if (time_b == null) {
return;
}
time_b.setText(str);
}
public static void setMax(int max) {
tdt.setMax(max);
}
public static void setProgress(int progress) {
tdt.setProgress(progress);
lrcview.updateTime(progress, true);
}
public static void setbf(boolean bool) {
if (bool) {
//开始
kgsetImageResource(R.drawable.bf);
} else {
//暂停
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,
@Nullable Bundle savedInstanceState) {
if (view != null) {
// main.handler.post(() -> setImageBitmap(bfq.bitmap));
return view;
}
view = inflater.inflate(R.layout.fragment_bfq, container, false);
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);
ImageView tx = view.findViewById(R.id.mttx);
tdt = view.findViewById(R.id.tdt);
tdt.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
setTime_b(bfq_an.getTime(progress));
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// 拖动条移动中
main.handler.removeCallbacks(bfqkz.mt.updateSeekBar);
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// 播放音乐到指定位置
main.handler.post(bfqkz.mt.updateSeekBar);
bfqkz.mt.seekTo(seekBar.getProgress());
}
});
time_a = view.findViewById(R.id.time_a);
time_b = view.findViewById(R.id.time_b);
//初始化歌词组件
View kp = view.findViewById(R.id.kp1);
lrcview = getlrcView();
lrcview.setDraggable(true, (time) -> {
com.muqingbfq.bfqkz.mt.build.seekTo(Math.toIntExact(time));
return true;
});
if (!isTablet(bfq.context)) {
lrcview.setOnSingerClickListener(() -> {
if (kp.getVisibility() == View.VISIBLE) {
kp.setVisibility(View.GONE);
} else {
kp.setVisibility(View.VISIBLE);
}
});
}
//初始化播放器列表
view.findViewById(R.id.bfq_list_mp3).
setOnClickListener(view1 -> com.muqingbfq.fragment.bflb_db.start(bfq.context));
view.findViewById(R.id.like).setOnClickListener(view1 -> {
ImageView like = (ImageView) view1;
try {
if (bfqkz.like_bool) {
like.setImageTintList(ContextCompat.getColorStateList(view.getContext(), R.color.text));
com.muqingbfq.fragment.gd.like.remove(String.valueOf(bfqkz.xm.id));
} else {
like.setImageTintList(ContextCompat.
getColorStateList(view.getContext(), android.R.color.holo_red_dark));
JSONObject json = new JSONObject();
json.put("name", bfqkz.xm.name);
json.put("zz", bfqkz.xm.zz);
json.put("picUrl", bfqkz.xm.picurl);
com.muqingbfq.fragment.gd.like.put(String.valueOf(bfqkz.xm.id), json);
}
com.muqingbfq.mq.wj.xrwb(com.muqingbfq.mq.wj.mp3_like,
com.muqingbfq.fragment.gd.like.toString());
bfqkz.like_bool = !bfqkz.like_bool;
} catch (Exception e) {
e.printStackTrace();
}
});
ImageView control = view.findViewById(R.id.control);
control.setOnClickListener(new bfq_an.control(control));
if (bfqkz.xm != null) {
setname(bfqkz.xm.name);
setzz(bfqkz.xm.zz);
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);
}
Glide.with(getContext())
.load(bfqkz.xm.picurl)
.error(R.drawable.icon)//图片加载失败后显示的图片
.into(tx);
bfq_an.islike(bfq.context);
new Thread() {
@Override
public void run() {
super.run();
url.gc(bfqkz.xm.id);
}
}.start();
}
return view;
}
private boolean isTablet(Context context) {
return (context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK)
>= Configuration.SCREENLAYOUT_SIZE_LARGE;
}
public static LyricViewX getlrcView() {
if (view == null) {
return null;
}
return view.findViewById(R.id.gc);
}
public static void loadLyric(String a, String b) {
lrcview.loadLyric(a, b);
}
public static void setlike(boolean bool) {
ImageView imageView = view.findViewById(R.id.like);
int color = R.color.text;
if (bool) {
color = android.R.color.holo_red_dark;
}
imageView.setImageTintList(ContextCompat.
getColorStateList(view.getContext(), color));
}
public static void setImageBitmap(Bitmap bitmap) {
if (view == null) {
return;
}
ImageView imageView = view.findViewById(R.id.mttx);
if (imageView != null) {
imageView.setImageBitmap(bitmap);
}
}
public static void setname(String str) {
if (view == null) {
return;
}
TextView name = view.findViewById(R.id.name);
name.setText(str);
}
public static void setzz(String str) {
if (view == null) {
return;
}
TextView zz = view.findViewById(R.id.zz);
zz.setText(str);
}
@Nullable
@Override
public Context getContext() {
return view.getContext();
}
}

View File

@ -0,0 +1,159 @@
package com.muqingbfq.mq;
import android.annotation.SuppressLint;
import android.content.Context;
import android.text.InputType;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.muqingbfq.R;
import com.muqingbfq.main;
public class EditViewDialog {
public EditText editText;
public Button buttona, buttonb;
public MaterialAlertDialogBuilder AlertDialogBuilder;
private AlertDialog alertDialog;
public EditViewDialog(@NonNull Context context, String str) {
AlertDialogBuilder = new MaterialAlertDialogBuilder(context);
setTitle(str);
@SuppressLint("InflateParams") View inflate = LayoutInflater.from(context).inflate(R.layout.view_edit, null);
editText = inflate.findViewById(R.id.editview);
buttona = inflate.findViewById(R.id.button1);
buttonb = inflate.findViewById(R.id.button2);
AlertDialogBuilder.setView(inflate);
buttona.setOnClickListener(view -> dismiss());
buttonb.setOnClickListener(view -> dismiss());
}
public void setTitle(String str) {
AlertDialogBuilder.setTitle(str);
}
public void setMessage(String str) {
AlertDialogBuilder.setMessage(str);
}
public AlertDialog show() {
alertDialog = AlertDialogBuilder.show();
alertDialog.setCancelable(true);
alertDialog.setCanceledOnTouchOutside(false);
return alertDialog;
}
public String getEditText() {
return editText.getText().toString();
}
public void setEditinputType(String str) {
int inputType;
switch (str) {
case "textCapCharacters":
inputType = InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS;
break;
case "textCapWords":
inputType = InputType.TYPE_TEXT_FLAG_CAP_WORDS;
break;
case "textCapSentences":
inputType = InputType.TYPE_TEXT_FLAG_CAP_SENTENCES;
break;
case "textAutoCorrect":
inputType = InputType.TYPE_TEXT_FLAG_AUTO_CORRECT;
break;
case "textAutoComplete":
inputType = InputType.TYPE_TEXT_FLAG_AUTO_COMPLETE;
break;
case "textMultiLine":
inputType = InputType.TYPE_TEXT_FLAG_MULTI_LINE;
break;
case "textImeMultiLine":
inputType = InputType.TYPE_TEXT_FLAG_IME_MULTI_LINE;
break;
case "textNoSuggestions":
inputType = InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS;
break;
case "textUri":
inputType = InputType.TYPE_TEXT_VARIATION_URI;
break;
case "textEmailAddress":
inputType = InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS;
break;
case "textEmailSubject":
inputType = InputType.TYPE_TEXT_VARIATION_EMAIL_SUBJECT;
break;
case "textShortMessage":
inputType = InputType.TYPE_TEXT_VARIATION_SHORT_MESSAGE;
break;
case "textLongMessage":
inputType = InputType.TYPE_TEXT_VARIATION_LONG_MESSAGE;
break;
case "textPersonName":
inputType = InputType.TYPE_TEXT_VARIATION_PERSON_NAME;
break;
case "textPostalAddress":
inputType = InputType.TYPE_TEXT_VARIATION_POSTAL_ADDRESS;
break;
case "textPassword":
inputType = InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD;
break;
case "textVisiblePassword":
inputType = InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD;
break;
case "textWebEditText":
inputType = InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT;
break;
case "textFilter":
inputType = InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_FILTER;
break;
case "textPhonetic":
inputType = InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PHONETIC;
break;
case "number":
inputType = InputType.TYPE_CLASS_NUMBER;
break;
case "numberSigned":
inputType = InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_SIGNED;
break;
case "numberDecimal":
inputType = InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL;
break;
case "phone":
inputType = InputType.TYPE_CLASS_PHONE;
break;
case "datetime":
inputType = InputType.TYPE_CLASS_DATETIME;
break;
case "date":
inputType = InputType.TYPE_CLASS_DATETIME | InputType.TYPE_DATETIME_VARIATION_DATE;
break;
case "time":
inputType = InputType.TYPE_CLASS_DATETIME | InputType.TYPE_DATETIME_VARIATION_TIME;
break;
case "none":
case "text":
default:
inputType = InputType.TYPE_CLASS_TEXT;
break;
}
editText.setInputType(inputType);
}
public void dismiss() {
main.handler.post(() -> alertDialog.dismiss());
}
public void setNegative(View.OnClickListener a) {
buttona.setOnClickListener(a);
}
public void setPositive(View.OnClickListener a) {
buttonb.setOnClickListener(a);
}
}

View File

@ -0,0 +1,165 @@
package com.muqingbfq.mq;
import android.annotation.SuppressLint;
import android.app.Service;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.PixelFormat;
import android.os.Build;
import android.os.IBinder;
import android.provider.Settings;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.muqingbfq.R;
import com.muqingbfq.main;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class floating extends Service {
private static RecyclerView.Adapter<ViewHolder> lbspq = new RecyclerView.Adapter<ViewHolder>() {
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new ViewHolder(new TextView(parent.getContext()));
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
String s = list.get(position);
holder.textView.setText(s);
}
@Override
public int getItemCount() {
return list.size();
}
};
public static void start(Context context) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M &&
Settings.canDrawOverlays(context)) {
context.startService(new Intent(context, floating.class));
}
}
public static void end(Context context) {
Intent serviceIntent = new Intent(context, floating.class);
context.stopService(serviceIntent);
}
public static List<String> list = new ArrayList<>();
private WindowManager windowManager;
private View view;
private View image, layout;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@SuppressLint("NotifyDataSetChanged")
public static void addtext(String str) {
if (lbspq == null || list == null) {
return;
}
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); // 创建一个 SimpleDateFormat 对象指定时间格式
String formattedDate = sdf.format(new Date()); // 格式化当前时间
list.add(0, formattedDate + ": " + str);
main.handler.post(lbspq::notifyDataSetChanged);
}
@SuppressLint("NotifyDataSetChanged")
@Override
public void onCreate() {
super.onCreate();
view = LayoutInflater.from(this).inflate(R.layout.floating_sc, null);
layout = view.findViewById(R.id.view1);
ViewGroup.LayoutParams layoutParams = layout.getLayoutParams();
layoutParams.height = main.g - main.g / 2 / 2;
layoutParams.width = main.k - main.k / 2 / 2;
layout.setLayoutParams(layoutParams);
layout.setVisibility(View.GONE);
image = view.findViewById(R.id.image);
image.setOnClickListener(vw -> {
layout.setVisibility(View.VISIBLE);
vw.setVisibility(View.GONE);
});
view.findViewById(R.id.text4).setOnClickListener(view -> {
layout.setVisibility(View.GONE);
image.setVisibility(View.VISIBLE);
});
RecyclerView recyclerView = view.findViewById(R.id.list);
recyclerView.setAdapter(lbspq);
addtext("Android stdio 2022.3.1版-调试器");
//清空按钮
view.findViewById(R.id.text1).setOnClickListener(view -> {
list.clear();
lbspq.notifyDataSetChanged();
});
//复制按钮
view.findViewById(R.id.text2).setOnClickListener(view -> {
// 获取剪贴板管理器
ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
clipboard.setPrimaryClip(ClipData.newPlainText("label", list.get(0)));
gj.ts(this,"成功复制了第一个数据");
});
//关闭按钮
view.findViewById(R.id.text3).setOnClickListener(view -> stopSelf());
int i = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
Build.VERSION.SDK_INT >= Build.VERSION_CODES.O ?
WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY :
WindowManager.LayoutParams.TYPE_PHONE,
i,
PixelFormat.TRANSLUCENT
);
params.x = -main.k;
windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
windowManager.addView(view, params);
}
@Override
public void onDestroy() {
super.onDestroy();
if (view != null && windowManager != null) {
lbspq = null;
list = null;
windowManager.removeView(view);
}
}
private static class ViewHolder extends RecyclerView.ViewHolder {
public TextView textView;
public ViewHolder(View itemview) {
super(itemview);
textView = (TextView) itemview;
textView.setTextColor(Color.WHITE);
textView.setOnLongClickListener(view -> {
// 获取剪贴板管理器
ClipboardManager clipboard = (ClipboardManager) view.getContext().
getSystemService(Context.CLIPBOARD_SERVICE);
clipboard.setPrimaryClip(ClipData.newPlainText("label", list.get(0)));
gj.ts(view.getContext(), "复制成功");
return false;
});
}
}
}

View File

@ -0,0 +1,202 @@
<?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:id="@+id/bfq"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
android:fitsSystemWindows="true"
android:orientation="vertical">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
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>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/kp1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical"
tools:ignore="NestedWeights">
<com.google.android.material.card.MaterialCardView
android:id="@+id/view1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:cardCornerRadius="16dp"
app:cardUseCompatPadding="true">
<ImageView
android:id="@+id/mttx"
android:layout_width="200dp"
android:layout_height="200dp"
android:importantForAccessibility="no"
android:scaleType="fitXY"
android:src="@drawable/icon" />
</com.google.android.material.card.MaterialCardView>
</LinearLayout>
<com.dirror.lyricviewx.LyricViewX
android:id="@+id/gc"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
app:lrcCurrentTextColor="@color/text"
app:lrcLabel="@string/app_name"
app:lrcNormalTextSize="16sp"
app:lrcPadding="16dp"
app:lrcTextSize="20sp"
app:lrcTimelineTextColor="@color/text_tm"
tools:ignore="MissingConstraints" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingStart="3dp"
android:paddingEnd="3dp">
<TextView
android:id="@+id/time_a"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/_00_00" />
<SeekBar
android:id="@+id/tdt"
android:layout_width="0dp"
android:layout_height="48dp"
android:layout_weight="1"
android:clickable="true"
android:focusable="true"
android:padding="6dp" />
<TextView
android:id="@+id/time_b"
android:layout_width="wrap_content"
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

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
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" />
<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"
tools:layout="@layout/fragment_bfq" />
</LinearLayout>

View File

@ -0,0 +1,73 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<LinearLayout
android:id="@+id/view1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#80000000">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="6dp"
android:gravity="center_horizontal">
<TextView
android:id="@+id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="清空"
android:textColor="#FFFFFF" />
<TextView
android:id="@+id/text2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="复制"
android:textColor="#FFFFFF" />
<TextView
android:id="@+id/text3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="暂停"
android:textColor="#FFFFFF" />
<TextView
android:id="@+id/text4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="隐藏"
android:textColor="#FFFFFF" />
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="6dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager">
</androidx.recyclerview.widget.RecyclerView>
</LinearLayout>
<androidx.cardview.widget.CardView
android:id="@+id/image"
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_marginStart="6dp"
android:layout_centerVertical="true"
app:cardBackgroundColor="#00CCFF"
app:cardCornerRadius="18dp">
<ImageView
android:layout_width="36dp"
android:layout_height="36dp"
android:src="@drawable/icon"/>
</androidx.cardview.widget.CardView>
</RelativeLayout>

View File

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:orientation="vertical">
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入内容">
<EditText
android:id="@+id/editview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColorHint="#546E7A"
tools:ignore="TextContrastCheck,TextFields"
android:autofillHints="" />
</com.google.android.material.textfield.TextInputLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:paddingBottom="16dp"
android:orientation="horizontal">
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/quxiao"
style="?android:attr/buttonBarButtonStyle" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="确定"
style="?android:attr/buttonBarButtonStyle" />
</LinearLayout>
</LinearLayout>