实现我的界面UI交互完整化

删除exoplayer播放器SDK改用android原生player
This commit is contained in:
muqing 2023-12-26 13:49:45 +08:00
parent 22cd5b5e30
commit c7e3897f38
12 changed files with 266 additions and 179 deletions

View File

@ -57,6 +57,7 @@
android:theme="@style/fragment_dialog" /> android:theme="@style/fragment_dialog" />
<activity android:name=".fragment.mp3" /> <activity android:name=".fragment.mp3" />
<activity android:name=".fragment.gd" />
<activity android:name=".activity_about_software" /> <activity android:name=".activity_about_software" />
<activity android:name=".sz" /> <activity android:name=".sz" />
<activity android:name=".mq.llq" /> <activity android:name=".mq.llq" />

View File

@ -171,6 +171,7 @@ public class MediaPlayer extends android.media.MediaPlayer {
Media.setProgress(0); Media.setProgress(0);
Media.setname(name); Media.setname(name);
Media.setzz(zz); Media.setzz(zz);
bfq_an.islike();
} }
bfq_db.setname(name + "/" + zz); bfq_db.setname(name + "/" + zz);
if (com.muqingbfq.fragment.mp3.lbspq != null) { if (com.muqingbfq.fragment.mp3.lbspq != null) {

View File

@ -12,9 +12,12 @@ import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat; import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentActivity;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager2.adapter.FragmentStateAdapter; import androidx.viewpager2.adapter.FragmentStateAdapter;
import androidx.viewpager2.widget.ViewPager2; import androidx.viewpager2.widget.ViewPager2;
@ -23,17 +26,22 @@ import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions; import com.bumptech.glide.request.RequestOptions;
import com.google.android.material.card.MaterialCardView; import com.google.android.material.card.MaterialCardView;
import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.muqingbfq.MP3;
import com.muqingbfq.R; import com.muqingbfq.R;
import com.muqingbfq.api.playlist; import com.muqingbfq.api.playlist;
import com.muqingbfq.api.resource;
import com.muqingbfq.bfq_an; import com.muqingbfq.bfq_an;
import com.muqingbfq.bfqkz; import com.muqingbfq.bfqkz;
import com.muqingbfq.databinding.FragmentGdBinding; import com.muqingbfq.databinding.FragmentGdBinding;
import com.muqingbfq.databinding.FragmentMp3Binding;
import com.muqingbfq.list.MyViewHoder;
import com.muqingbfq.main; import com.muqingbfq.main;
import com.muqingbfq.mq.gj; import com.muqingbfq.mq.gj;
import com.muqingbfq.mq.wj; import com.muqingbfq.mq.wj;
import com.muqingbfq.mq.wl; import com.muqingbfq.mq.wl;
import com.muqingbfq.xm; import com.muqingbfq.xm;
import org.json.JSONArray;
import org.json.JSONException; import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
@ -42,76 +50,63 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
public class gd extends Fragment { public class gd extends com.muqingbfq.mq.FragmentActivity {
public static String gdid; public static String gdid;
FragmentGdBinding binding; private final List<xm> list = new ArrayList<>();
public static RecyclerView.Adapter<VH> adapter;
int k;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FragmentMp3Binding binding = FragmentMp3Binding.inflate(getLayoutInflater());
Intent intent = getIntent();
binding.title.setText(intent.getStringExtra("name"));
// inflate.toolbar.setTitle(intent.getStringExtra("name"));
setContentView(binding.getRoot());
adapter = new baseadapter(this,list);
k = (int) (main.k / getResources().getDisplayMetrics().density + 0.5f);
GridLayoutManager gridLayoutManager = new GridLayoutManager(this, k / 120);
binding.lb.setLayoutManager(gridLayoutManager);
binding.lb.setAdapter(adapter);
String id = intent.getStringExtra("id");
// inflate.bfqDb.setBackground(gd.color);
new start(id);
}
@SuppressLint("NotifyDataSetChanged")
class start extends Thread {
String id;
public start(String id) {
this.id = id;
list.clear();
adapter.notifyDataSetChanged();
start();
}
@Override @Override
public void onResume() { public void run() {
super.onResume(); super.run();
getActivity().getSupportFragmentManager().beginTransaction() if (id.equals("排行榜")) {
.replace(R.id.bfq_db, new bfq_db()) resource.排行榜(list);
.commit(); } else {
String hq = wl.hq("/search?keywords=" + id + "&limit=" + (k * 3) + "&type=1000");
try {
JSONArray jsonArray = new JSONObject(hq).getJSONObject("result")
.getJSONArray("playlists");
int length = jsonArray.length();
for (int i = 0; i < length; i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
String id = jsonObject.getString("id");
String name = jsonObject.getString("name");
String coverImgUrl = jsonObject.getString("coverImgUrl");
list.add(new xm(id, name, coverImgUrl, false));
} }
} catch (Exception e) {
gj.sc(e);
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
binding = FragmentGdBinding.inflate(inflater, container, false);
binding.viewPager.setAdapter(new adaper(getActivity()));
// ViewPager2 绑定到 TabLayout
binding.tablayout.setOnItemSelectedListener(item -> {
int itemId = item.getItemId();
if (itemId == R.id.a) {
binding.viewPager.setCurrentItem(0);
} else if (itemId == R.id.b) {
binding.viewPager.setCurrentItem(1);
} else if (itemId == R.id.c) {
binding.viewPager.setCurrentItem(2);
}
return true;
});
binding.viewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageSelected(int position) {
switch (position) {
case 0:
binding.tablayout.setSelectedItemId(R.id.a);
break;
case 1:
binding.tablayout.setSelectedItemId(R.id.b);
break;
case 2:
binding.tablayout.setSelectedItemId(R.id.c);
wode fragment = (wode) list.get(position);
fragment.sx();
break;
} }
} }
}); main.handler.post(new lbspq_sx());
return binding.getRoot();
}
List<Fragment> list = new ArrayList<>();
private class adaper extends FragmentStateAdapter {
public adaper(@NonNull FragmentActivity fragmentActivity) {
super(fragmentActivity);
list.add(new gd_adapter());
list.add(new gd_adapter.paihangbang());
list.add(new wode());
}
@NonNull
@Override
public Fragment createFragment(int position) {
return list.get(position);
}
@Override
public int getItemCount() {
return list.size();
} }
} }
@ -124,12 +119,22 @@ public class gd extends Fragment {
this.list = list; this.list = list;
} }
boolean bool = false;
public baseadapter(Context context, List<xm> list,boolean bool) {
this.context = context;
this.list = list;
this.bool = bool;
}
@NonNull @NonNull
@Override @Override
public VH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { public VH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context) if (bool) {
.inflate(R.layout.list_gd, parent, false); return new VH(LayoutInflater.from(context)
return new VH(view); .inflate(R.layout.list_gd_b, parent, false));
}
return new VH(LayoutInflater.from(context)
.inflate(R.layout.list_gd, parent, false));
} }
public void setList(List<xm> list) { public void setList(List<xm> list) {
@ -247,4 +252,12 @@ public class gd extends Fragment {
kg = itemView.findViewById(R.id.kg); kg = itemView.findViewById(R.id.kg);
} }
} }
private class lbspq_sx implements Runnable {
@SuppressLint("NotifyDataSetChanged")
@Override
public void run() {
adapter.notifyDataSetChanged();
}
}
} }

View File

@ -52,34 +52,6 @@ public class gd_adapter extends Fragment {
}.start(); }.start();
return layout; return layout;
} }
public static class paihangbang extends Fragment {
List<xm> list = new ArrayList<>();
gd.baseadapter baseadapter;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
FrameLayout layout = new FrameLayout(getContext());
RecyclerView recyclerView = new RecyclerView(layout.getContext());
int k = (int) (main.k / getResources().getDisplayMetrics().density + 0.5f);
GridLayoutManager gridLayoutManager = new GridLayoutManager(layout.getContext(), k / 120);
recyclerView.setLayoutManager(gridLayoutManager);
layout.addView(recyclerView);
baseadapter = new gd.baseadapter(getContext(), list);
recyclerView.setAdapter(baseadapter);
new Thread() {
@SuppressLint("NotifyDataSetChanged")
@Override
public void run() {
super.run();
resource.排行榜(list);
main.handler.postDelayed(new sx(baseadapter),500);
}
}.start();
return layout;
}
}
private static class sx implements Runnable { private static class sx implements Runnable {
gd.baseadapter baseadapter; gd.baseadapter baseadapter;

View File

@ -178,7 +178,6 @@ public class search extends Fragment {
xmList.add(new xm(id, name, coverImgUrl, false)); xmList.add(new xm(id, name, coverImgUrl, false));
} }
} catch (Exception e) { } catch (Exception e) {
gj.sc(e); gj.sc(e);
} }

View File

@ -42,6 +42,7 @@ public class wode extends Fragment {
FragmentWdBinding binding; FragmentWdBinding binding;
private final List<com.muqingbfq.xm> list = new ArrayList<>(); private final List<com.muqingbfq.xm> list = new ArrayList<>();
@Nullable @Nullable
@Override @Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
@ -59,18 +60,18 @@ public class wode extends Fragment {
}); });
new user_message(); new user_message();
int k = (int) (main.k / getResources().getDisplayMetrics().density + 0.5f); // int k = (int) (main.k / getResources().getDisplayMetrics().density + 0.5f);
GridLayoutManager gridLayoutManager = new GridLayoutManager(getContext(), k / 120); GridLayoutManager gridLayoutManager = new GridLayoutManager(getContext(), 4);
binding.recyclerview1.setLayoutManager(gridLayoutManager); binding.recyclerview1.setLayoutManager(gridLayoutManager);
final Object[][] lista = { final Object[][] lista = {
{R.drawable.bf,"最近播放"}, {R.drawable.bf, "最近播放", "mp3_hc.json"},
{R.drawable.download,"下载音乐"}, {R.drawable.download, "下载音乐", "mp3_xz.json"},
{R.drawable.like,"喜欢音乐"}, {R.drawable.like, "喜欢音乐", "mp3_like.json"},
{R.drawable.icon,"本地搜索"}, {R.drawable.icon, "本地搜索", ""},
{R.drawable.icon,"我的歌单"}, {R.drawable.icon, "我的歌单", ""},
{R.drawable.icon,"导入歌单"}, {R.drawable.icon, "导入歌单", ""},
{R.drawable.icon,"开发中"}, {R.drawable.paihangbang, "排行榜", "排行榜"},
{R.drawable.icon,"开发者"} {R.drawable.icon, "开发中", ""}
}; };
binding.recyclerview1.setAdapter(new RecyclerView.Adapter<VH>() { binding.recyclerview1.setAdapter(new RecyclerView.Adapter<VH>() {
@NonNull @NonNull
@ -87,27 +88,23 @@ public class wode extends Fragment {
Glide.with(getContext()) Glide.with(getContext())
.load(lista[position][0]) .load(lista[position][0])
.into(holder.imageView); .into(holder.imageView);
String data = lista[position][2].toString();
holder.itemView.setOnClickListener(view -> { holder.itemView.setOnClickListener(view -> {
switch (data) {
case "mp3_hc.json":
case "mp3_xz.json":
case "mp3_like.json":
Intent a = new Intent(getContext(), com.muqingbfq.fragment.mp3.class); Intent a = new Intent(getContext(), com.muqingbfq.fragment.mp3.class);
switch (position) { a.putExtra("id", data);
case 0:
a.putExtra("id", "mp3_hc.json");
a.putExtra("name", s); a.putExtra("name", s);
getContext().startActivity(a); getContext().startActivity(a);
break; break;
case 1: case "排行榜":
a.putExtra("id", "mp3_xz.json"); Intent b = new Intent(getContext(), com.muqingbfq.fragment.gd.class);
a.putExtra("name", s); b.putExtra("id", data);
getContext().startActivity(a); b.putExtra("name", s);
getContext().startActivity(b);
break; break;
case 2:
a.putExtra("id", "mp3_like.json");
a.putExtra("name", s);
getContext().startActivity(a);
break;
case 3:
break;
} }
}); });
} }
@ -125,13 +122,14 @@ public class wode extends Fragment {
} }
}); });
binding.recyclerview2.setFocusable(false); binding.recyclerview2.setFocusable(false);
binding.recyclerview2.setAdapter(new gd.baseadapter(getContext(),list)); binding.recyclerview2.setAdapter(new gd.baseadapter(getContext(), list, true));
return view; return view;
} }
class VH extends RecyclerView.ViewHolder { class VH extends RecyclerView.ViewHolder {
public ImageView imageView; public ImageView imageView;
public TextView textView; public TextView textView;
public VH(@NonNull View itemView) { public VH(@NonNull View itemView) {
super(itemView); super(itemView);
imageView = itemView.findViewById(R.id.image); imageView = itemView.findViewById(R.id.image);
@ -139,8 +137,10 @@ public class wode extends Fragment {
} }
} }
@SuppressLint("NotifyDataSetChanged")
public void sx() { public void sx() {
try { try {
List<xm> a = new ArrayList<>(list);
list.clear(); list.clear();
JSONObject date = new JSONObject(wj.dqwb(wj.gd_xz)); JSONObject date = new JSONObject(wj.dqwb(wj.gd_xz));
for (Iterator<String> it = date.keys(); it.hasNext(); ) { for (Iterator<String> it = date.keys(); it.hasNext(); ) {
@ -151,14 +151,19 @@ public class wode extends Fragment {
String picUrl = jsonObject.getString("picUrl"); String picUrl = jsonObject.getString("picUrl");
list.add(new xm(id, name, picUrl, cz)); list.add(new xm(id, name, picUrl, cz));
} }
binding.recyclerview2.getAdapter().notifyDataSetChanged(); if (list.equals(a)) {
return;
}
main.handler.post(() -> binding.recyclerview2.getAdapter().notifyDataSetChanged());
} catch (Exception e) { } catch (Exception e) {
gj.sc(e); gj.sc(e);
} }
} }
public static void setname(String string) { public static void setname(String string) {
main.handler.post(() -> name.setText(string)); main.handler.post(() -> name.setText(string));
} }
public static void setqianming(String string) { public static void setqianming(String string) {
main.handler.post(() -> { main.handler.post(() -> {
if (string == null) { if (string == null) {

View File

@ -11,20 +11,27 @@ import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
import android.widget.ImageView; import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBarDrawerToggle; import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar; import androidx.core.content.ContextCompat;
import androidx.drawerlayout.widget.DrawerLayout; import androidx.drawerlayout.widget.DrawerLayout;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.viewpager2.adapter.FragmentStateAdapter;
import androidx.viewpager2.widget.ViewPager2;
import com.google.android.material.navigation.NavigationView; import com.muqingbfq.databinding.ActivityHomeBinding;
import com.muqingbfq.fragment.Media; import com.muqingbfq.fragment.Media;
import com.muqingbfq.fragment.bfq_db; import com.muqingbfq.fragment.bfq_db;
import com.muqingbfq.fragment.gd; import com.muqingbfq.fragment.gd;
import com.muqingbfq.fragment.gd_adapter;
import com.muqingbfq.fragment.wode;
import com.muqingbfq.mq.gj; import com.muqingbfq.mq.gj;
import com.muqingbfq.mq.wj; import com.muqingbfq.mq.wj;
import java.io.FileOutputStream; import java.util.ArrayList;
import java.io.ObjectOutputStream; import java.util.List;
import me.wcy.lrcview.LrcView; import me.wcy.lrcview.LrcView;
@ -33,16 +40,18 @@ public class home extends AppCompatActivity {
public static AppCompatActivity appCompatActivity; public static AppCompatActivity appCompatActivity;
@SuppressLint("StaticFieldLeak") @SuppressLint("StaticFieldLeak")
public static ImageView imageView; public static ImageView imageView;
ActivityHomeBinding binding;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
appCompatActivity = this; appCompatActivity = this;
setTheme(R.style.Theme_muqing); setTheme(R.style.Theme_muqing);
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
if (true) { if (false) {
com.muqingbfq.mq.floating.start(this); com.muqingbfq.mq.floating.start(this);
} }
setContentView(R.layout.activity_home); binding = ActivityHomeBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
DisplayMetrics dm = getResources().getDisplayMetrics(); DisplayMetrics dm = getResources().getDisplayMetrics();
main.k = dm.widthPixels; main.k = dm.widthPixels;
main.g = dm.heightPixels; main.g = dm.heightPixels;
@ -60,27 +69,25 @@ public class home extends AppCompatActivity {
Media.lrcview = new LrcView(this); Media.lrcview = new LrcView(this);
// 请将Context替换为实际的上下文对象 // 请将Context替换为实际的上下文对象
// 设置LrcView的属性 // 设置LrcView的属性
Media.lrcview.setCurrentColor(getResources().getColor(R.color.text)); Media.lrcview.setCurrentColor(ContextCompat.getColor(this,R.color.text));
Media.lrcview.setLabel(getString(R.string.app_name)); Media.lrcview.setLabel(getString(R.string.app_name));
Media.lrcview.setCurrentTextSize(TypedValue.applyDimension( Media.lrcview.setCurrentTextSize(TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_SP, 16, getResources().getDisplayMetrics())); TypedValue.COMPLEX_UNIT_SP, 16, getResources().getDisplayMetrics()));
// lrcView.setLrcPadding(16); // lrcView.setLrcPadding(16);
Media.lrcview.setCurrentTextSize(TypedValue.applyDimension( Media.lrcview.setCurrentTextSize(TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_SP, 20, getResources().getDisplayMetrics())); TypedValue.COMPLEX_UNIT_SP, 20, getResources().getDisplayMetrics()));
Media.lrcview.setTimelineTextColor(getResources().getColor(R.color.text_tm)); Media.lrcview.setTimelineTextColor(ContextCompat.getColor(this,R.color.text_tm));
} }
try { try {
//初始化工具栏 //初始化工具栏
Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(binding.toolbar);
setSupportActionBar(toolbar);
DrawerLayout drawerLayout = findViewById(R.id.chct); DrawerLayout drawerLayout = findViewById(R.id.chct);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle( ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawerLayout, toolbar, R.string.app_name, R.string.app_name); this, drawerLayout, binding.toolbar, R.string.app_name, R.string.app_name);
drawerLayout.addDrawerListener(toggle); drawerLayout.addDrawerListener(toggle);
toggle.syncState(); toggle.syncState();
//初始化侧滑 //初始化侧滑
NavigationView chb = findViewById(R.id.chb); binding.chb.setNavigationItemSelectedListener(item -> {
chb.setNavigationItemSelectedListener(item -> {
com.muqingbfq.fragment.sz.switch_sz(home.this, item.getItemId()); com.muqingbfq.fragment.sz.switch_sz(home.this, item.getItemId());
return false; return false;
}); });
@ -92,12 +99,75 @@ public class home extends AppCompatActivity {
} }
//检测更新 //检测更新
new gj.jianchagengxin(this); new gj.jianchagengxin(this);
binding.editView.setOnClickListener(view ->
startActivity(new Intent(this, activity_search.class)));
UI();
} catch (Exception e) { } catch (Exception e) {
yc.tc(this, e); yc.tc(this, e);
} }
} }
List<Fragment> list = new ArrayList<>();
private class adaper extends FragmentStateAdapter {
public adaper(@NonNull FragmentActivity fragmentActivity) {
super(fragmentActivity);
list.add(new gd_adapter());
list.add(new wode());
}
@NonNull
@Override
public Fragment createFragment(int position) {
return list.get(position);
}
@Override
public int getItemCount() {
return list.size();
}
}
public void UI() {
binding.viewPager.setAdapter(new adaper(this));
// ViewPager2 绑定到 TabLayout
binding.tablayout.setOnItemSelectedListener(item -> {
int itemId = item.getItemId();
if (itemId == R.id.a) {
binding.viewPager.setCurrentItem(0);
} else if (itemId == R.id.c) {
binding.viewPager.setCurrentItem(1);
}
return true;
});
binding.viewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageSelected(int position) {
switch (position) {
case 0:
binding.tablayout.setSelectedItemId(R.id.a);
break;
case 1:
binding.tablayout.setSelectedItemId(R.id.c);
new Thread() {
@Override
public void run() {
super.run();
try {
sleep(1000);
} catch (InterruptedException e) {
e.toString();
}
wode fragment = (wode) list.get(position);
fragment.sx();
}
}.start();
break;
}
}
});
}
private static Intent serviceIntent; private static Intent serviceIntent;
@Override @Override
@ -114,6 +184,13 @@ public class home extends AppCompatActivity {
} }
@Override
public void onResume() {
super.onResume();
getSupportFragmentManager().beginTransaction()
.replace(R.id.bfq_db, new bfq_db())
.commit();
}
private long time; private long time;
@Override @Override

View File

@ -24,33 +24,43 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"> android:minHeight="?attr/actionBarSize">
<LinearLayout <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent" android:id="@+id/editView"
android:layout_height="wrap_content"> android:background="@drawable/ui_editview"
<EditText android:layout_width="match_parent"
android:id="@+id/editview" android:layout_height="wrap_content"
android:layout_margin="10dp">
<TextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="6dp"
android:autofillHints="" android:autofillHints=""
android:background="@drawable/ui_editview" android:enabled="false"
android:hint="@string/search"
android:gravity="center" android:gravity="center"
android:imeOptions="actionSearch" android:text="@string/search"
android:inputType="text"
android:minHeight="48dp" android:minHeight="48dp"
android:paddingStart="3dp" android:paddingStart="3dp"
android:paddingEnd="3dp" /> android:paddingEnd="3dp"
</LinearLayout> app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.appbar.MaterialToolbar> </com.google.android.material.appbar.MaterialToolbar>
<androidx.fragment.app.FragmentContainerView <androidx.viewpager2.widget.ViewPager2
android:id="@+id/gd" android:id="@+id/viewPager"
android:name="com.muqingbfq.fragment.gd"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_weight="1" android:layout_weight="1"/>
tools:layout="@layout/fragment_gd" />
<androidx.fragment.app.FragmentContainerView
android:id="@+id/bfq_db"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:layout="@layout/fragment_bfq_db" />
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/tablayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:contentDescription="@string/Playlist"
app:menu="@menu/bottom_gd"/>
</androidx.appcompat.widget.LinearLayoutCompat> </androidx.appcompat.widget.LinearLayoutCompat>
<com.google.android.material.navigation.NavigationView <com.google.android.material.navigation.NavigationView

View File

@ -3,23 +3,27 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"> android:orientation="vertical">
<androidx.viewpager2.widget.ViewPager2 <com.google.android.material.appbar.MaterialToolbar
android:id="@+id/viewPager" android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.muqingbfq.view.Text
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textSize="26sp"
android:textColor="@color/text"/>
</com.google.android.material.appbar.MaterialToolbar>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/lb"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_weight="1"/> android:layout_weight="1"/>
<androidx.fragment.app.FragmentContainerView <androidx.fragment.app.FragmentContainerView
android:id="@+id/bfq_db" android:id="@+id/bfq_db"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:name="com.muqingbfq.fragment.bfq_db"
tools:layout="@layout/fragment_bfq_db" /> tools:layout="@layout/fragment_bfq_db" />
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/tablayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:contentDescription="@string/Playlist"
app:menu="@menu/bottom_gd"/>
</LinearLayout> </LinearLayout>

View File

@ -8,7 +8,6 @@
android:id="@+id/toolbar" android:id="@+id/toolbar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content">
<com.muqingbfq.view.Text <com.muqingbfq.view.Text
android:id="@+id/title" android:id="@+id/title"
android:layout_width="match_parent" android:layout_width="match_parent"

View File

@ -5,7 +5,17 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical" android:orientation="vertical"
tools:context=".fragment.sz" tools:context=".fragment.sz">
android:fitsSystemWindows="true" <TextView
android:focusable="true"> android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="36sp"
android:text="云音乐"
android:layout_margin="16dp" />
<com.google.android.material.divider.MaterialDivider
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:dividerInsetStart="16dp"
app:dividerInsetEnd="16dp"/>
</androidx.appcompat.widget.LinearLayoutCompat> </androidx.appcompat.widget.LinearLayoutCompat>

View File

@ -4,10 +4,6 @@
android:id="@+id/a" android:id="@+id/a"
android:icon="@drawable/zhuye" android:icon="@drawable/zhuye"
android:title="推荐" /> android:title="推荐" />
<item
android:id="@+id/b"
android:icon="@drawable/paihangbang"
android:title="排行榜" />
<item <item
android:id="@+id/c" android:id="@+id/c"
android:icon="@drawable/user" android:icon="@drawable/user"