diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml index e08f42d..860d833 100644 --- a/.idea/inspectionProfiles/Project_Default.xml +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -8,7 +8,7 @@ - @@ -39,6 +39,7 @@ + diff --git a/app/build.gradle b/app/build.gradle index fc6c877..1fc8a9b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -18,7 +18,8 @@ android { //noinspection OldTargetApi targetSdk 31 versionCode 1 - versionName "1.6.8" + versionName "1.7.0" + } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 @@ -37,6 +38,9 @@ android { outputFileName = "Cloud_music-${variant.name}-v${variant.versionName}.apk" } } + viewBinding { + enabled = true + } } dependencies { implementation 'androidx.appcompat:appcompat:1.6.1' diff --git a/app/debug/Cloud_music-debug-v1.6.8.apk b/app/debug/Cloud_music-debug-v1.6.8.apk deleted file mode 100644 index f9d50a9..0000000 Binary files a/app/debug/Cloud_music-debug-v1.6.8.apk and /dev/null differ diff --git a/app/debug/output-metadata.json b/app/debug/output-metadata.json index 94e1f32..3482d42 100644 --- a/app/debug/output-metadata.json +++ b/app/debug/output-metadata.json @@ -12,8 +12,8 @@ "filters": [], "attributes": [], "versionCode": 1, - "versionName": "1.6.8", - "outputFile": "Cloud_music-debug-v1.6.8.apk" + "versionName": "1.7.0", + "outputFile": "Cloud_music-debug-v1.7.0.apk" } ], "elementType": "File" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 0e9c3c1..c15fb35 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -52,7 +52,7 @@ diff --git a/app/src/main/java/com/muqingbfq/MediaPlayer.java b/app/src/main/java/com/muqingbfq/MediaPlayer.java index ce1ab6f..7e7ef67 100644 --- a/app/src/main/java/com/muqingbfq/MediaPlayer.java +++ b/app/src/main/java/com/muqingbfq/MediaPlayer.java @@ -18,7 +18,9 @@ import com.bumptech.glide.load.engine.GlideException; import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.target.Target; import com.muqingbfq.fragment.Media; +import com.muqingbfq.fragment.bflb_db; import com.muqingbfq.fragment.bfq_db; +import com.muqingbfq.fragment.search; import com.muqingbfq.mq.gj; public class MediaPlayer { @@ -178,5 +180,12 @@ public class MediaPlayer { if (com.muqingbfq.fragment.mp3.lbspq != null) { com.muqingbfq.fragment.mp3.lbspq.notifyDataSetChanged(); } + if (search.lbspq != null) { + search.lbspq.notifyDataSetChanged(); + } + if (bflb_db.adapter != null) { + bflb_db.adapter.notifyDataSetChanged(); + gj.sc(1); + } } } \ No newline at end of file diff --git a/app/src/main/java/com/muqingbfq/activity_search.java b/app/src/main/java/com/muqingbfq/activity_search.java index ca9e0bb..608b141 100644 --- a/app/src/main/java/com/muqingbfq/activity_search.java +++ b/app/src/main/java/com/muqingbfq/activity_search.java @@ -25,7 +25,9 @@ import com.google.android.flexbox.FlexDirection; import com.google.android.flexbox.FlexWrap; import com.google.android.flexbox.FlexboxLayoutManager; import com.google.android.material.dialog.MaterialAlertDialogBuilder; +import com.muqingbfq.databinding.ActivitySearchBinding; import com.muqingbfq.fragment.search; +import com.muqingbfq.mq.ActivityToolbar; import com.muqingbfq.mq.gj; import com.muqingbfq.mq.wj; import com.muqingbfq.mq.wl; @@ -37,25 +39,22 @@ import org.json.JSONObject; import java.util.ArrayList; import java.util.List; -public class activity_search extends AppCompatActivity { +public class activity_search extends ActivityToolbar { private EditText editText; private ArrayAdapter adapter; - + private SearchRecordAdapter recordAdapter; private JSONObject json = new JSONObject(); private final List json_list = new ArrayList<>(); private final List list = new ArrayList<>(); ListView listPopupWindow; - public static AppCompatActivity appCompatActivity; + ActivitySearchBinding inflate; @SuppressLint({"RestrictedApi", "NotifyDataSetChanged"}) @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_search); - appCompatActivity = this; - setSupportActionBar(findViewById(R.id.toolbar)); - getSupportActionBar().setDisplayHomeAsUpEnabled(true); - + inflate = ActivitySearchBinding.inflate(getLayoutInflater()); + setContentView(inflate.getRoot()); RecyclerView recyclerView = findViewById(R.id.list_recycler); FlexboxLayoutManager manager = new FlexboxLayoutManager(this); //设置主轴排列方式 @@ -64,7 +63,7 @@ public class activity_search extends AppCompatActivity { manager.setFlexWrap(FlexWrap.WRAP); manager.setAlignItems(AlignItems.STRETCH); recyclerView.setLayoutManager(manager); - SearchRecordAdapter recordAdapter = new SearchRecordAdapter(); + new SearchRecordAdapter(); recyclerView.setAdapter(recordAdapter); editText = findViewById(R.id.editview); @@ -77,7 +76,7 @@ public class activity_search extends AppCompatActivity { } return false; }); - findViewById(R.id.deleat).setOnClickListener(v -> new MaterialAlertDialogBuilder(v.getContext()) + inflate.deleat.setOnClickListener(v -> new MaterialAlertDialogBuilder(v.getContext()) .setTitle("删除") .setMessage("清空历史记录?") .setNegativeButton("取消", null) @@ -116,7 +115,7 @@ public class activity_search extends AppCompatActivity { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { - if (TextUtils.isEmpty(s)){ + if (TextUtils.isEmpty(s)) { dismiss(); return; } @@ -146,6 +145,7 @@ public class activity_search extends AppCompatActivity { } }.start(); } + @Override public void afterTextChanged(Editable s) { } @@ -221,8 +221,9 @@ public class activity_search extends AppCompatActivity { } } if (json_list.isEmpty()) { - findViewById(R.id.xxbj1).setVisibility(View.INVISIBLE); + inflate.xxbj1.setVisibility(View.INVISIBLE); } + recordAdapter = this; } @NonNull @@ -270,5 +271,6 @@ public class activity_search extends AppCompatActivity { } else { finish(); } + com.muqingbfq.fragment.search.lbspq = null; } } \ No newline at end of file diff --git a/app/src/main/java/com/muqingbfq/api/playlist.java b/app/src/main/java/com/muqingbfq/api/playlist.java index bcc5ca1..8bc53b9 100644 --- a/app/src/main/java/com/muqingbfq/api/playlist.java +++ b/app/src/main/java/com/muqingbfq/api/playlist.java @@ -20,6 +20,11 @@ public class playlist extends Thread { public static final String api = "/playlist/track/all?id="; @SuppressLint("NotifyDataSetChanged") public static boolean hq(List list, String uid) { + if (uid.equals("mp3_xz.json")) { + return playlist.hq_xz(list); + } else if (uid.equals("mp3_like.json")) { + return playlist.hq_like(list); + } list.clear(); try { String hq; @@ -48,7 +53,6 @@ public class playlist extends Thread { String picUrl = al.getString("picUrl"); list.add(new xm(id, name, zz.toString(), picUrl)); } -// main.handler.post(new mp3.lbspq_sx()); return true; } catch (Exception e) { gj.sc("失败的错误 " + e); @@ -56,7 +60,7 @@ public class playlist extends Thread { return false; } - public static void hq_like(List list) { + public static boolean hq_like(List list) { list.clear(); try { JSONObject json = gd.like; @@ -69,12 +73,14 @@ public class playlist extends Thread { list.add(new xm(id, name, zz, picUrl)); } main.handler.post(new mp3.lbspq_sx()); + return true; } catch (Exception e) { gj.sc("失败的错误 " + e); } + return false; } - public static void hq_xz(List list) { + public static boolean hq_xz(List list) { list.clear(); try { JSONArray json = new JSONObject(wj.dqwb(wj.mp3_xz)) @@ -88,10 +94,11 @@ 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()); + return true; } catch (Exception e) { gj.sc("失败的错误 " + e); wj.sc(wj.mp3_xz); } + return false; } } diff --git a/app/src/main/java/com/muqingbfq/api/resource.java b/app/src/main/java/com/muqingbfq/api/resource.java index c3cd0b7..4d4ab02 100644 --- a/app/src/main/java/com/muqingbfq/api/resource.java +++ b/app/src/main/java/com/muqingbfq/api/resource.java @@ -77,7 +77,6 @@ public class resource { list.add(new xm("mp3_like.json", "喜欢", R.mipmap.like, true)); list.add(new xm("mp3_xz.json", "下载", R.drawable.icon, true)); try { - // JSONArray date = jsonObject.getJSONArray(""); JSONObject date = new JSONObject(wj.dqwb(wj.gd_xz)); for (Iterator it = date.keys(); it.hasNext(); ) { String id = it.next(); diff --git a/app/src/main/java/com/muqingbfq/bfq.java b/app/src/main/java/com/muqingbfq/bfq.java index e56f6aa..0657ad8 100644 --- a/app/src/main/java/com/muqingbfq/bfq.java +++ b/app/src/main/java/com/muqingbfq/bfq.java @@ -3,35 +3,38 @@ package com.muqingbfq; 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 androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; 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; + @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); context = this; - setContentView(R.layout.activity_bfq); - Toolbar toolbar = findViewById(R.id.toolbar); - toolbar.setNavigationIcon(R.drawable.end); + ActivityBfqBinding inflate = ActivityBfqBinding.inflate(getLayoutInflater()); + setContentView(inflate.getRoot()); + Toolbar toolbar = inflate.toolbar; toolbar.setNavigationOnClickListener(view1 -> finish()); - toolbar.inflateMenu(R.menu.bfq); toolbar.setOnMenuItemClickListener(item -> { - if (item.getItemId() == R.id.fx) { - if (bfqkz.xm != null) { - com.muqingbfq.mq.gj.fx(this, - "音乐名称:" + bfqkz.xm.name + - "\n 作者:" + bfqkz.xm.zz + - "\n 链接:https://music.163.com/#/song?id=" + bfqkz.xm.id); - } + if (item.getItemId() == R.id.fx && bfqkz.xm != null) { + com.muqingbfq.mq.gj.fx(this, + "音乐名称:" + bfqkz.xm.name + + "\n 作者:" + bfqkz.xm.zz + + "\n 链接:https://music.163.com/#/song?id=" + bfqkz.xm.id); } return false; }); @@ -39,8 +42,15 @@ public class bfq extends AppCompatActivity { Media.setname(bfqkz.xm.name); Media.setzz(bfqkz.xm.zz); } + inflate.name.setOnLongClickListener(view -> { + gj.fz(bfq.this, inflate.name.getText().toString()); + gj.ts(bfq.this, "复制成功"); + return false; + }); } + public static Bitmap bitmap; + public static void start(Context context) { Intent intent = new Intent(); intent.setClass(context, bfq.class); @@ -49,7 +59,8 @@ public class bfq extends AppCompatActivity { } @Override - public void finish() { - super.finish(); + public void onConfigurationChanged(@NonNull Configuration newConfig) { + super.onConfigurationChanged(newConfig); + Media.view = null; } } \ No newline at end of file diff --git a/app/src/main/java/com/muqingbfq/fragment/Media.java b/app/src/main/java/com/muqingbfq/fragment/Media.java index dab977a..c533063 100644 --- a/app/src/main/java/com/muqingbfq/fragment/Media.java +++ b/app/src/main/java/com/muqingbfq/fragment/Media.java @@ -8,6 +8,7 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; +import android.widget.LinearLayout; import android.widget.SeekBar; import android.widget.TextView; @@ -16,12 +17,13 @@ import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; -import com.bumptech.glide.Glide; 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.databinding.FragmentBfqBinding; +import com.muqingbfq.home; import com.muqingbfq.main; import org.json.JSONObject; @@ -30,7 +32,7 @@ import me.wcy.lrcview.LrcView; public class Media extends Fragment { @SuppressLint("StaticFieldLeak") - public static View view; + public static LinearLayout view; @SuppressLint("StaticFieldLeak") private static TextView time_a, time_b; @SuppressLint("StaticFieldLeak") @@ -84,18 +86,22 @@ public class Media extends Fragment { public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { if (view != null) { - main.handler.post(Media::setImageBitmap); return view; } - view = inflater.inflate(R.layout.fragment_bfq, container, false); + 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); - ImageView tx = view.findViewById(R.id.mttx); - - tdt = view.findViewById(R.id.tdt); + tdt = inflate.tdt; tdt.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { @@ -116,10 +122,9 @@ public class Media extends Fragment { } }); - time_a = view.findViewById(R.id.time_a); - time_b = view.findViewById(R.id.time_b); + time_a = inflate.timeA; + time_b = inflate.timeB; //初始化歌词组件 - View kp = view.findViewById(R.id.kp1); lrcview = getlrcView(); lrcview.setDraggable(true, (view, time) -> { bfqkz.mt.build.seekTo(Math.toIntExact(time)); @@ -127,6 +132,7 @@ public class Media extends Fragment { }); if (!isTablet(bfq.context)) { lrcview.setOnTapListener((view, x, y) -> { + View kp = inflate.kp1; if (kp.getVisibility() == View.VISIBLE) { kp.setVisibility(View.GONE); } else { @@ -135,10 +141,10 @@ public class Media extends Fragment { }); } //初始化播放器列表 - view.findViewById(R.id.bfq_list_mp3). + inflate.bfqListMp3. setOnClickListener(view1 -> com.muqingbfq.fragment.bflb_db.start(bfq.context)); - view.findViewById(R.id.like).setOnClickListener(view1 -> { + inflate.like.setOnClickListener(view1 -> { ImageView like = (ImageView) view1; try { if (bfqkz.like_bool) { @@ -160,8 +166,8 @@ public class Media extends Fragment { e.printStackTrace(); } }); - ImageView control = view.findViewById(R.id.control); - control.setOnClickListener(new bfq_an.control(control)); + + 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(); @@ -175,10 +181,6 @@ public class Media extends Fragment { 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 @@ -192,8 +194,7 @@ public class Media extends Fragment { } private boolean isTablet(Context context) { - return (context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) - >= Configuration.SCREENLAYOUT_SIZE_LARGE; + return (context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE; } public static LrcView getlrcView() { @@ -202,9 +203,11 @@ public class Media extends Fragment { } return view.findViewById(R.id.gc); } + public static void loadLyric(String a, String b) { lrcview.loadLrc(a, b); } + public static void setlike(boolean bool) { ImageView imageView = view.findViewById(R.id.like); int color = R.color.text; @@ -216,13 +219,10 @@ public class Media extends Fragment { } public static void setImageBitmap() { - if (view == null) { + if (home.imageView == null) { return; } - ImageView imageView = view.findViewById(R.id.mttx); - if (imageView != null) { - main.handler.post(() -> imageView.setImageBitmap(bfq.bitmap)); - } + main.handler.post(() -> home.imageView.setImageBitmap(bfq.bitmap)); } public static void setname(String str) { diff --git a/app/src/main/java/com/muqingbfq/fragment/bflb_db.java b/app/src/main/java/com/muqingbfq/fragment/bflb_db.java index 04d4a11..e397417 100644 --- a/app/src/main/java/com/muqingbfq/fragment/bflb_db.java +++ b/app/src/main/java/com/muqingbfq/fragment/bflb_db.java @@ -21,7 +21,7 @@ import com.muqingbfq.yc; public class bflb_db extends BottomSheetDialog { public static String gdid; - + public static RecyclerView.Adapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -55,6 +55,9 @@ public class bflb_db extends BottomSheetDialog { } class spq extends RecyclerView.Adapter { + public spq() { + adapter = this; + } @NonNull @Override public MyViewHoder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { @@ -73,7 +76,7 @@ public class bflb_db extends BottomSheetDialog { } holder.name.setTextColor(color); holder.zz.setTextColor(color); - holder.view.setOnClickListener(view -> { + holder.itemView.setOnClickListener(view -> { if (bfqkz.xm != x) { bfqkz.xm = x; new url(x); @@ -87,4 +90,9 @@ public class bflb_db extends BottomSheetDialog { } } + @Override + public void dismiss() { + super.dismiss(); + adapter = null; + } } diff --git a/app/src/main/java/com/muqingbfq/fragment/gd.java b/app/src/main/java/com/muqingbfq/fragment/gd.java index 1e1c4f2..32a58e6 100644 --- a/app/src/main/java/com/muqingbfq/fragment/gd.java +++ b/app/src/main/java/com/muqingbfq/fragment/gd.java @@ -7,13 +7,14 @@ import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.BaseAdapter; -import android.widget.GridView; import android.widget.ImageView; import android.widget.TextView; +import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.Glide; import com.bumptech.glide.request.RequestOptions; @@ -27,6 +28,7 @@ import com.muqingbfq.bfqkz; import com.muqingbfq.list.list_gd; import com.muqingbfq.main; import com.muqingbfq.mq.wj; +import com.muqingbfq.xm; import org.json.JSONException; import org.json.JSONObject; @@ -34,22 +36,22 @@ import org.json.JSONObject; import java.util.ArrayList; import java.util.List; -import com.muqingbfq.xm; - public class gd extends Fragment { public static String gdid; - public static BaseAdapter lbspq; - public static List list; + public static RecyclerView.Adapter lbspq; + public List list = new ArrayList<>(); public static JSONObject like = new JSONObject(); - GridView gridView; + RecyclerView gridView; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_gd, container, false); - list = new ArrayList<>(); - lbspq = new baseadapter(view.getContext()); + lbspq = new baseadapter(view.getContext(),list); gridView = view.findViewById(R.id.wgbj); + int k = (int) (main.k / getResources().getDisplayMetrics().density + 0.5f); + GridLayoutManager gridLayoutManager = new GridLayoutManager(getContext(), k / 120); + gridView.setLayoutManager(gridLayoutManager); gridView.setAdapter(lbspq); if (gdid == null) { gdid = main.mp3_csh; @@ -64,13 +66,13 @@ public class gd extends Fragment { tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { - list.clear(); - lbspq.notifyDataSetChanged(); new thread(tab.getText().toString()); } + @Override public void onTabUnselected(TabLayout.Tab tab) { } + @Override public void onTabReselected(TabLayout.Tab tab) { } @@ -85,68 +87,47 @@ public class gd extends Fragment { return view; } - class baseadapter extends BaseAdapter { + public static class baseadapter extends RecyclerView.Adapter { Context context; - LayoutInflater layoutInflater; - - public baseadapter(Context context) { + List list; + public baseadapter(Context context, List list) { this.context = context; - layoutInflater = LayoutInflater.from(context); + this.list = list; + } + @NonNull + @Override + public VH onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = LayoutInflater.from(context) + .inflate(R.layout.list_gd, parent, false); + return new VH(view); } @Override - public int getCount() { - return list.size(); - } - - @Override - public Object getItem(int i) { - return list.get(i); - } - - @Override - public long getItemId(int i) { - return i; - } - - @SuppressLint({"ResourceAsColor", "InflateParams", "ClickableViewAccessibility"}) - @Override - public View getView(int i, View view, ViewGroup viewGroup) { - ViewHoder viewHoder; - xm xm = list.get(i); - if (view == null) { - viewHoder = new ViewHoder(); - view = layoutInflater.inflate(R.layout.list_gd, null, false); - viewHoder.textView = view.findViewById(R.id.wb1); - viewHoder.imageView = view.findViewById(R.id.fh); - viewHoder.cardView = view.findViewById(R.id.cardview); - viewHoder.kg = view.findViewById(R.id.kg); - view.setTag(viewHoder); - } else { - viewHoder = (ViewHoder) view.getTag(); - } + public void onBindViewHolder(@NonNull VH holder, int position) { + xm xm = list.get(position); list_gd gd = new list_gd(xm); - viewHoder.cardView.setOnClickListener(gd); - viewHoder.cardView.setOnLongClickListener(gd); - viewHoder.textView.setText(xm.name); - viewHoder.kg.setOnClickListener(view1 -> { + holder.cardView.setOnClickListener(gd); + holder.cardView.setOnLongClickListener(gd); + holder.textView.setText(xm.name); + holder.kg.setOnClickListener(view1 -> { ImageView tx = (ImageView) view1; new Thread() { + @SuppressLint("NotifyDataSetChanged") @Override public void run() { super.run(); - boolean an=playlist.hq(bfqkz.list, xm.id); - main.handler.post(() -> { - if (an) { - bfq_an.xyq(); - tx.setImageResource(R.drawable.bf); - main.edit.putString(main.mp3, xm.id); - main.edit.commit(); - main.mp3_csh = gdid = xm.id; - } - com.muqingbfq.fragment.gd.lbspq.notifyDataSetChanged(); - }); - } + boolean an = playlist.hq(bfqkz.list, xm.id); + main.handler.post(() -> { + if (an) { + bfq_an.xyq(); + tx.setImageResource(R.drawable.bf); + main.edit.putString(main.mp3, xm.id); + main.edit.commit(); + main.mp3_csh = gdid = xm.id; + } + com.muqingbfq.fragment.gd.lbspq.notifyDataSetChanged(); + }); + } }.start(); }); int color = ContextCompat.getColor(context, R.color.text); @@ -157,19 +138,31 @@ public class gd extends Fragment { } else if (xm.cz) { color = ContextCompat.getColor(context, R.color.text_cz_tm); } - viewHoder.kg.setImageDrawable(color_kg); - viewHoder.textView.setTextColor(color); + holder.kg.setImageDrawable(color_kg); + holder.textView.setTextColor(color); Glide.with(context).load(xm.picurl).apply(new RequestOptions().placeholder(R.drawable.icon)) - .into(viewHoder.imageView); -// new wl(xm.picurl, Glide.with(context)).loadImage(bitmap -> viewHoder.imageView.setImageBitmap(bitmap)); - return view; + .into(holder.imageView); } + + @Override + public int getItemCount() { + return list.size(); + } + } - class ViewHoder { + static class VH extends RecyclerView.ViewHolder { TextView textView; ImageView imageView, kg; MaterialCardView cardView; + + public VH(@NonNull View itemView) { + super(itemView); + textView = itemView.findViewById(R.id.wb1); + imageView = itemView.findViewById(R.id.fh); + cardView = itemView.findViewById(R.id.cardview); + kg = itemView.findViewById(R.id.kg); + } } class thread extends Thread { @@ -177,9 +170,11 @@ public class gd extends Fragment { public thread(String name) { this.name = name; + list.clear(); start(); } + @SuppressLint("NotifyDataSetChanged") @Override public void run() { super.run(); diff --git a/app/src/main/java/com/muqingbfq/fragment/mp3.java b/app/src/main/java/com/muqingbfq/fragment/mp3.java index 019f75f..be32e1d 100644 --- a/app/src/main/java/com/muqingbfq/fragment/mp3.java +++ b/app/src/main/java/com/muqingbfq/fragment/mp3.java @@ -107,16 +107,13 @@ public class mp3 extends AppCompatActivity { } holder.name.setTextColor(color); holder.zz.setTextColor(color); - holder.view.setOnClickListener(view -> { + holder.itemView.setOnClickListener(view -> { if (bfqkz.xm == null || !bfqkz.xm.id.equals(x.id)) { bfqkz.xm = x; new url(x); } - bfqkz.list.clear(); - int size = list.size(); - for (int i = 0; i < size; i++) { - bfqkz.list.add(list.get(i)); - } + bfqkz.list.clear(); + bfqkz.list.addAll(list); bfq.start(mp3.this); }); } diff --git a/app/src/main/java/com/muqingbfq/fragment/search.java b/app/src/main/java/com/muqingbfq/fragment/search.java index edbd862..4085886 100644 --- a/app/src/main/java/com/muqingbfq/fragment/search.java +++ b/app/src/main/java/com/muqingbfq/fragment/search.java @@ -11,17 +11,20 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; +import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.google.android.material.tabs.TabLayout; import com.muqingbfq.R; -import com.muqingbfq.activity_search; import com.muqingbfq.api.url; import com.muqingbfq.bfq; import com.muqingbfq.bfqkz; +import com.muqingbfq.databinding.FragmentSearchBinding; import com.muqingbfq.list.MyViewHoder; import com.muqingbfq.main; import com.muqingbfq.mq.gj; +import com.muqingbfq.mq.wj; import com.muqingbfq.mq.wl; import com.muqingbfq.xm; @@ -32,50 +35,72 @@ import java.util.ArrayList; import java.util.List; public class search extends Fragment { - View view; - RecyclerView.Adapter lbspq; + public static RecyclerView.Adapter lbspq; List list = new ArrayList<>(); + private String name; + + FragmentSearchBinding inflate; + private int i = 0; + @Nullable @Override - public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - view = inflater.inflate(R.layout.fragment_search, container, false); + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, + @Nullable Bundle savedInstanceState) { + inflate = FragmentSearchBinding.inflate(inflater, container, false); + View view = inflate.getRoot(); TypedValue typedValue = new TypedValue(); requireContext().getTheme().resolveAttribute(android.R.attr.windowBackground, typedValue, true); // 设置背景颜色 - view.setBackgroundColor(typedValue.data); - RecyclerView lb = view.findViewById(R.id.recyclerview); - LinearLayoutManager manager = new LinearLayoutManager(getContext()); - lb.setLayoutManager(manager); lbspq = new spq(); - lb.setAdapter(lbspq); + view.setBackgroundColor(typedValue.data); + inflate.tablayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { + @Override + public void onTabSelected(TabLayout.Tab tab) { +// 当用户再次选择已选择的选项卡时调用。 + search.this.i = tab.getPosition(); + setStart(name); + } + + @Override + public void onTabUnselected(TabLayout.Tab tab) { +// 当选项卡退出选定状态时调用。 + } + + @Override + public void onTabReselected(TabLayout.Tab tab) { +// 当选项卡进入选定状态时调用。 + + + } + }); setVisibility(false); return view; } public void setVisibility(boolean bool) { if (bool) { - view.setVisibility(View.VISIBLE); + inflate.getRoot().setVisibility(View.VISIBLE); } else { - view.setVisibility(View.GONE); + inflate.getRoot().setVisibility(View.GONE); } } public boolean getVisibility() { - return view.isShown(); + return inflate.getRoot().isShown(); } public void setStart(String name) { setVisibility(true); - list.clear(); + gj.sc(i); new start(name); } public class start extends Thread { - String name; - public start(String name) { - this.name = name; + list.clear(); + search.this.name = name; + start(); } @@ -83,41 +108,85 @@ public class search extends Fragment { @Override public void run() { super.run(); - String hq = wl.hq("/search?keywords=" + name); - try { - JSONArray jsonArray = new JSONObject(hq).getJSONObject("result") - .getJSONArray("songs"); - 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"); - JSONArray artists = jsonObject.getJSONArray("artists"); - int length1 = artists.length(); - StringBuilder zz = null; - for (int j = 0; j < length1; j++) { - JSONObject josn = artists.getJSONObject(j); - String name_zz = josn.getString("name"); - if (zz == null) { - zz = new StringBuilder(name_zz); - } else { - zz.append("/").append(name_zz); - } - } - list.add(new xm(id, name, zz.toString(), "")); - } - main.handler.post(() -> lbspq.notifyDataSetChanged()); - } catch (Exception e) { - gj.sc(e); + if (i == 0) { + mp3(); + } else if (i == 1) { + gd(); } + main.handler.post(() -> { + if (i == 0) { + inflate.recyclerview.setLayoutManager(new LinearLayoutManager(getContext())); + inflate.recyclerview.setAdapter(new spq()); + } 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)); + } +// lbspq.notifyDataSetChanged(); + }); + } + } + + private void mp3() { + String hq = wl.hq("/search?keywords=" + name + "&type=1"); + try { + JSONArray jsonArray = new JSONObject(hq).getJSONObject("result") + .getJSONArray("songs"); + 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"); + JSONArray artists = jsonObject.getJSONArray("artists"); + int length1 = artists.length(); + StringBuilder zz = null; + for (int j = 0; j < length1; j++) { + JSONObject josn = artists.getJSONObject(j); + String name_zz = josn.getString("name"); + if (zz == null) { + zz = new StringBuilder(name_zz); + } else { + zz.append("/").append(name_zz); + } + } + list.add(new xm(id, name, zz.toString(), "")); + } + } catch (Exception e) { + gj.sc(e); + } + } + + private void gd() { + String hq = wl.hq("/search?keywords=" + name + "&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"); +// gj.sc(name); + list.add(new xm(id, name, coverImgUrl, wj.cz(wj.gd + id))); + } + + } catch (Exception e) { + gj.sc(e); } } class spq extends RecyclerView.Adapter { + public spq() { + lbspq = this; + } + @NonNull @Override public MyViewHoder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_mp3, parent, false); + View view = LayoutInflater. + from(parent.getContext()).inflate(R.layout.list_mp3, parent, false); return new MyViewHoder(view); } @@ -132,7 +201,7 @@ public class search extends Fragment { } holder.name.setTextColor(color); holder.zz.setTextColor(color); - holder.view.setOnClickListener(view1 -> { + holder.itemView.setOnClickListener(view1 -> { if (bfqkz.xm == null || !bfqkz.xm.id.equals(x.id)) { bfqkz.xm = x; new url(x); @@ -145,7 +214,7 @@ public class search extends Fragment { } } bfqkz.mt.start(); - bfq.start(activity_search.appCompatActivity); + bfq.start(getContext()); }); } diff --git a/app/src/main/java/com/muqingbfq/home.java b/app/src/main/java/com/muqingbfq/home.java index ef05188..949f5ba 100644 --- a/app/src/main/java/com/muqingbfq/home.java +++ b/app/src/main/java/com/muqingbfq/home.java @@ -7,6 +7,7 @@ import android.content.SharedPreferences; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; +import android.widget.ImageView; import androidx.appcompat.app.ActionBarDrawerToggle; import androidx.appcompat.app.AppCompatActivity; @@ -21,6 +22,7 @@ import com.muqingbfq.mq.gj; public class home extends AppCompatActivity { @SuppressLint("StaticFieldLeak") public static AppCompatActivity appCompatActivity; + public static ImageView imageView; @SuppressLint({"CommitTransaction", "ObsoleteSdkInt"}) @Override @@ -30,7 +32,14 @@ public class home extends AppCompatActivity { setContentView(R.layout.activity_home); appCompatActivity = this; new start(); - Media.view = null; + if (imageView == null) { + imageView = new ImageView(this); + imageView.setScaleType(ImageView.ScaleType.FIT_XY); + imageView.setImageResource(R.drawable.icon); + } + if (bfq.bitmap != null) { + Media.setImageBitmap(); + } try { //初始化工具栏 Toolbar toolbar = findViewById(R.id.toolbar); @@ -61,6 +70,7 @@ public class home extends AppCompatActivity { } private static Intent serviceIntent; + @Override protected void onPause() { super.onPause(); @@ -81,6 +91,7 @@ public class home extends AppCompatActivity { } private long time; + @Override public void onBackPressed() { if (bfqkz.mt.isPlaying()) { diff --git a/app/src/main/java/com/muqingbfq/list/MyViewHoder.java b/app/src/main/java/com/muqingbfq/list/MyViewHoder.java index be8a866..dd66c4e 100644 --- a/app/src/main/java/com/muqingbfq/list/MyViewHoder.java +++ b/app/src/main/java/com/muqingbfq/list/MyViewHoder.java @@ -11,16 +11,13 @@ import com.muqingbfq.R; public class MyViewHoder extends RecyclerView.ViewHolder { public TextView name, zz; - public View view; - public MyViewHoder(@NonNull View itemView) { super(itemView); - view = itemView; name = itemView.findViewById(R.id.wb1); zz = itemView.findViewById(R.id.zz); } public Context getContext() { - return view.getContext(); + return itemView.getContext(); } } \ No newline at end of file diff --git a/app/src/main/java/com/muqingbfq/login/user_editing.java b/app/src/main/java/com/muqingbfq/login/user_editing.java index 4637e33..5d82161 100644 --- a/app/src/main/java/com/muqingbfq/login/user_editing.java +++ b/app/src/main/java/com/muqingbfq/login/user_editing.java @@ -23,6 +23,7 @@ import androidx.core.content.ContextCompat; import com.bumptech.glide.Glide; import com.muqingbfq.R; +import com.muqingbfq.databinding.ActivityUserEditingBinding; import com.muqingbfq.main; import com.muqingbfq.mq.ActivityToolbar; import com.muqingbfq.mq.gj; @@ -46,9 +47,9 @@ public class user_editing extends ActivityToolbar { //头像,用户名,签名,性别,背景 ImageView imageViewa; EditText edit_name, edit_qianming; - AutoCompleteTextView autoCompleteTextView; ImageView imageViewb; String file_a, file_b; + ActivityUserEditingBinding binding; @SuppressLint("CheckResult") ActivityResultLauncher setimagea = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), @@ -86,11 +87,11 @@ public class user_editing extends ActivityToolbar { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_user_editing); + binding = ActivityUserEditingBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); imageViewa = findViewById(R.id.image1); edit_name = findViewById(R.id.edit_name); edit_qianming = findViewById(R.id.edit_qianming); - autoCompleteTextView = findViewById(R.id.autoComplete); imageViewb = findViewById(R.id.image2); new Thread() { @Override @@ -110,6 +111,13 @@ public class user_editing extends ActivityToolbar { Glide.with(user_editing.this) .load(string.cover()) .into(imageViewb); + String gender = string.gender(); + if (gender.equals("1")) { + gender = "男"; + } else { + gender = "女"; + } + binding.autoComplete.setText(gender); }); } catch (Exception e) { gj.sc(e); diff --git a/app/src/main/java/com/muqingbfq/login/user_logs.java b/app/src/main/java/com/muqingbfq/login/user_logs.java index 686edf3..d89f414 100644 --- a/app/src/main/java/com/muqingbfq/login/user_logs.java +++ b/app/src/main/java/com/muqingbfq/login/user_logs.java @@ -28,6 +28,8 @@ import com.muqingbfq.mq.wl; import org.json.JSONException; import org.json.JSONObject; +import java.util.regex.Pattern; + public class user_logs extends AppCompatActivity { EditText edituser, editpassword; @@ -98,7 +100,7 @@ public class user_logs extends AppCompatActivity { return bitmap; } - + String isEmail="false"; public String account, password; class CloudUser extends Thread { @@ -110,6 +112,10 @@ public class user_logs extends AppCompatActivity { } user_logs.this.account = account; user_logs.this.password = password; + Pattern pattern = Pattern.compile("^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"); + if (pattern.matcher(account).matches()) { + isEmail = "true"; + } start(); } @@ -122,7 +128,7 @@ public class user_logs extends AppCompatActivity { "account", "passWord", "appID", "isEmail" }, new String[]{ - account, password, UUID, "" + account, password, UUID, isEmail }); gj.sc(post); if (TextUtils.isEmpty(post)) { @@ -148,7 +154,7 @@ public class user_logs extends AppCompatActivity { "account", "passWord", "appID", "isEmail" }, new String[]{ - account, password, UUID, "" + account, password, UUID, isEmail }); gj.sc(jsonpost); if (!TextUtils.isEmpty(jsonpost.toString()) && @@ -170,8 +176,9 @@ public class user_logs extends AppCompatActivity { "account", "key", "appID", "isEmail" }, new String[]{ - account, editViewDialog.getEditText(), UUID, "false" + account, editViewDialog.getEditText(), UUID, isEmail }); + gj.sc(jsonpost.toString()); if (!TextUtils.isEmpty(jsonpost.toString())) { try { diff --git a/app/src/main/java/com/muqingbfq/login/user_message.java b/app/src/main/java/com/muqingbfq/login/user_message.java index 7c3c7b0..e60fadd 100644 --- a/app/src/main/java/com/muqingbfq/login/user_message.java +++ b/app/src/main/java/com/muqingbfq/login/user_message.java @@ -69,8 +69,9 @@ public class user_message extends Thread { if (cover.startsWith("..")) { cover = "https://rust.coldmint.top" + cover.substring(2); } + String gender = data.getString("gender"); return new string(new String[]{ - headIcon, account, userName, introduce, cover + headIcon, account, userName, introduce, cover, gender }); } return null; @@ -101,6 +102,8 @@ public class user_message extends Thread { public String cover() { return strings[4]; } - + public String gender() { + return strings[5]; + } } } diff --git a/app/src/main/java/com/muqingbfq/mq/ActivityToolbar.java b/app/src/main/java/com/muqingbfq/mq/ActivityToolbar.java index 4ad5f22..18c7fb6 100644 --- a/app/src/main/java/com/muqingbfq/mq/ActivityToolbar.java +++ b/app/src/main/java/com/muqingbfq/mq/ActivityToolbar.java @@ -28,4 +28,10 @@ public class ActivityToolbar extends AppCompatActivity { super.setContentView(view); setToolbar(); } + + @Override + public void setContentView(View view) { + super.setContentView(view); + setToolbar(); + } } diff --git a/app/src/main/java/com/muqingbfq/mq/NotificationManagerCompat.java b/app/src/main/java/com/muqingbfq/mq/NotificationManagerCompat.java index 2b0f665..77e9979 100644 --- a/app/src/main/java/com/muqingbfq/mq/NotificationManagerCompat.java +++ b/app/src/main/java/com/muqingbfq/mq/NotificationManagerCompat.java @@ -10,7 +10,6 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; -import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Build; import android.support.v4.media.session.PlaybackStateCompat; @@ -24,7 +23,7 @@ import com.muqingbfq.R; import com.muqingbfq.bfq; import com.muqingbfq.bfqkz; import com.muqingbfq.fragment.Media; -import com.muqingbfq.start; +import com.muqingbfq.home; import com.muqingbfq.yc; public class NotificationManagerCompat { @@ -52,7 +51,7 @@ public class NotificationManagerCompat { // 设置启动的程序,如果存在则找出,否则新的启动 Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_LAUNCHER); - intent.setComponent(new ComponentName(context, start.class));//用ComponentName得到class对象 + 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); @@ -133,15 +132,10 @@ public class NotificationManagerCompat { private NotificationCompat.Builder getNotificationBuilder(Context context) { // 适用于Android 8.0及以上版本 - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { +// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) return new NotificationCompat.Builder(context, CHANNEL_ID); - } else { - // Android 7.1及以下版本 - return new NotificationCompat.Builder(context); - } } - @SuppressLint("UnspecifiedImmutableFlag") private PendingIntent getBroadcast(Context context, Intent intent) { int flag; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { @@ -150,13 +144,8 @@ public class NotificationManagerCompat { flag = PendingIntent.FLAG_UPDATE_CURRENT; } return PendingIntent.getBroadcast(context, 0, intent, flag); -/* if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.S) { - return PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_IMMUTABLE); - } else { - return PendingIntent.getBroadcast(context, 0, intent, 0); - }*/ } - @SuppressLint("UnspecifiedImmutableFlag") + private PendingIntent getActivity(Context context, Intent intent) { int flag; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { diff --git a/app/src/main/java/com/muqingbfq/mq/gj.java b/app/src/main/java/com/muqingbfq/mq/gj.java index 402498c..7af6f3c 100644 --- a/app/src/main/java/com/muqingbfq/mq/gj.java +++ b/app/src/main/java/com/muqingbfq/mq/gj.java @@ -1,5 +1,7 @@ package com.muqingbfq.mq; +import android.content.ClipData; +import android.content.ClipboardManager; import android.content.Context; import android.content.Intent; import android.content.res.Configuration; @@ -45,6 +47,19 @@ public class gj { shareIntent.putExtra(Intent.EXTRA_TEXT, str); context.startActivity(shareIntent); } + /** + * 复制文字到剪切板 + * @param text + */ + public static void fz(Context context,String text){ + ClipboardManager systemService = + (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE); + // 创建能够存入剪贴板的ClipData对象 + //‘Label’这是任意文字标签 + ClipData mClipData = ClipData.newPlainText("Label", text); + //将ClipData数据复制到剪贴板: + systemService.setPrimaryClip(mClipData); + } public static boolean isWiFiConnected() { try { diff --git a/app/src/main/java/com/muqingbfq/start.java b/app/src/main/java/com/muqingbfq/start.java index d7b94ed..d761036 100644 --- a/app/src/main/java/com/muqingbfq/start.java +++ b/app/src/main/java/com/muqingbfq/start.java @@ -1,16 +1,8 @@ package com.muqingbfq; -import android.content.Intent; -import android.os.Build; -import android.os.Bundle; import android.util.DisplayMetrics; -import androidx.annotation.RequiresApi; -import androidx.appcompat.app.AppCompatActivity; - -import com.muqingbfq.login.visitor; import com.muqingbfq.mq.wj; -import com.muqingbfq.mq.wl; public class start { public start() { diff --git a/app/src/main/java/com/muqingbfq/view/TextView.java b/app/src/main/java/com/muqingbfq/view/TextView.java new file mode 100644 index 0000000..5ee4292 --- /dev/null +++ b/app/src/main/java/com/muqingbfq/view/TextView.java @@ -0,0 +1,36 @@ +package com.muqingbfq.view; + +import android.content.Context; +import android.text.TextUtils; +import android.util.AttributeSet; + +import androidx.annotation.NonNull; + +public class TextView extends androidx.appcompat.widget.AppCompatTextView { + public TextView(@NonNull Context context) { + super(context); + initView(); + } + + + public TextView(Context context, AttributeSet attrs) { + super(context, attrs); + initView(); + } + + public TextView(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + initView(); + } + + private void initView() { + this.setEllipsize(TextUtils.TruncateAt.MARQUEE); + this.setSingleLine(true); + this.setMarqueeRepeatLimit(-1); + } + + @Override + public boolean isFocused() { + return true; + } +} diff --git a/app/src/main/res/layout-land/fragment_bfq.xml b/app/src/main/res/layout-land/fragment_bfq.xml index 458a852..ca5fdb5 100644 --- a/app/src/main/res/layout-land/fragment_bfq.xml +++ b/app/src/main/res/layout-land/fragment_bfq.xml @@ -2,11 +2,8 @@ - - + app:cardUseCompatPadding="true" /> - + android:layout_height="wrap_content" + app:navigationIcon="@drawable/end" + app:menu="@menu/bfq"> - - + - - + + - + android:layout_height="wrap_content" + android:minHeight="?attr/actionBarSize" + app:layout_constraintTop_toTopOf="parent" /> + + - + + + app:menu="@menu/sz" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_user_editing.xml b/app/src/main/res/layout/activity_user_editing.xml index 9614be5..706cbff 100644 --- a/app/src/main/res/layout/activity_user_editing.xml +++ b/app/src/main/res/layout/activity_user_editing.xml @@ -89,16 +89,19 @@ android:id="@+id/menu" style="@style/Widget.Material3.TextInputLayout.FilledBox.ExposedDropdownMenu" android:layout_width="match_parent" + android:hint="性别" android:layout_height="wrap_content"> + tools:ignore="VisualLintTextFieldSize,SpeakableTextPresentCheck" /> - - + app:cardCornerRadius="16dp" /> - + android:layout_height="match_parent"/> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_search.xml b/app/src/main/res/layout/fragment_search.xml index 69fba5c..9ecb86c 100644 --- a/app/src/main/res/layout/fragment_search.xml +++ b/app/src/main/res/layout/fragment_search.xml @@ -2,6 +2,7 @@ + android:layout_height="match_parent" + app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"/> \ No newline at end of file diff --git a/app/src/main/res/layout/list_gd.xml b/app/src/main/res/layout/list_gd.xml index 18fc98e..8fc1a84 100644 --- a/app/src/main/res/layout/list_gd.xml +++ b/app/src/main/res/layout/list_gd.xml @@ -2,14 +2,16 @@ + + android:id="@+id/relativeLayout" + android:layout_width="120dp" + android:layout_height="120dp"> + + @@ -10,8 +10,8 @@