From e77d3a390d4210bc642044a961ebc375e206a3ae Mon Sep 17 00:00:00 2001 From: muqing <1966944300@qq.com> Date: Fri, 17 Jan 2025 14:09:39 +0800 Subject: [PATCH] =?UTF-8?q?feat(layout):=20=E9=80=82=E9=85=8D=E5=B9=B3?= =?UTF-8?q?=E6=9D=BF=E8=AE=BE=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增横屏布局文件,优化用户体验 - 重构部分代码以支持新布局 -移除不必要的工具类和适配器 --- README.md | 5 +- app/src/main/AndroidManifest.xml | 3 +- .../com/coldmint/rust/pro/ErrorActivity.kt | 27 ++-- .../com/coldmint/rust/pro/RustApplication.kt | 2 +- .../rust/pro/adapters/CodeTableAdapter.kt | 10 +- .../rust/pro/adapters/CodeTableItemAdapter.kt | 10 +- .../rust/pro/adapters/DesignAdapter.kt | 13 +- .../rust/pro/base/BaseVh.java} | 8 +- .../rust/pro/fragments/CommunityFragment.kt | 96 ++++++++++---- app/src/main/java/com/muqing/gj.java | 122 ------------------ .../main/res/layout-land/activity_main.xml | 43 ++++++ .../res/layout-land/fragment_community.xml | 25 ++++ 12 files changed, 178 insertions(+), 186 deletions(-) rename app/src/main/java/com/{muqing/VH.java => coldmint/rust/pro/base/BaseVh.java} (58%) delete mode 100644 app/src/main/java/com/muqing/gj.java create mode 100644 app/src/main/res/layout-land/activity_main.xml create mode 100644 app/src/main/res/layout-land/fragment_community.xml diff --git a/README.md b/README.md index a6f08ce..c435ca0 100644 --- a/README.md +++ b/README.md @@ -9,8 +9,6 @@ Support Chinese and English code association, automatic completion. ![](screenshots/editor.png) - - #### 源码运行问题解决: ###### 1.打包时报错,缺少SDK路径 @@ -24,3 +22,6 @@ SDK location not found. ``` sdk.dir=(安卓SDK路径) ``` + +#### DeBug +偷偷的更新一下,适配一下平板吧 \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index bbf055d..430e26d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -287,7 +287,8 @@ android:icon="@drawable/table" android:taskAffinity="@string/code_table" android:documentLaunchMode="intoExisting" - android:exported="false"> + android:exported="false" + tools:ignore="ManifestResource"> () { private val errorInfo by lazy { @@ -113,19 +104,19 @@ class ErrorActivity() : BaseActivity() { } private fun initAction() { - viewBinding.shareLogButton.setOnClickListener(View.OnClickListener { + viewBinding.shareLogButton.setOnClickListener { saveLog() if (!errorInfo.getLogFile().exists()) { Snackbar.make( - viewBinding.shareLogButton, - R.string.file_not_exist, - Snackbar.LENGTH_SHORT + viewBinding.shareLogButton, + R.string.file_not_exist, + Snackbar.LENGTH_SHORT ) - .show() + .show() } else { FileOperator.shareFile(this@ErrorActivity, errorInfo.getLogFile()) } - }) + } diff --git a/app/src/main/java/com/coldmint/rust/pro/RustApplication.kt b/app/src/main/java/com/coldmint/rust/pro/RustApplication.kt index 5305b30..3259f5e 100644 --- a/app/src/main/java/com/coldmint/rust/pro/RustApplication.kt +++ b/app/src/main/java/com/coldmint/rust/pro/RustApplication.kt @@ -79,7 +79,7 @@ class RustApplication : Application() { } // android:screenOrientation="portrait" //全局强制横屏 - activity.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT +// activity.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT } override fun onActivityStarted(activity: Activity) {} override fun onActivityResumed(activity: Activity) {} diff --git a/app/src/main/java/com/coldmint/rust/pro/adapters/CodeTableAdapter.kt b/app/src/main/java/com/coldmint/rust/pro/adapters/CodeTableAdapter.kt index caa1428..209475b 100644 --- a/app/src/main/java/com/coldmint/rust/pro/adapters/CodeTableAdapter.kt +++ b/app/src/main/java/com/coldmint/rust/pro/adapters/CodeTableAdapter.kt @@ -9,18 +9,18 @@ import com.coldmint.rust.core.database.code.CodeInfo import com.coldmint.rust.core.database.code.SectionInfo import com.coldmint.rust.core.tool.LineParser import com.coldmint.rust.pro.R +import com.coldmint.rust.pro.base.BaseVh import com.coldmint.rust.pro.databinding.ActivityCodeTableBinding import com.coldmint.rust.pro.databinding.ItemCodetableBinding import com.coldmint.rust.pro.tool.GlobalMethod import com.google.android.gms.common.internal.Objects -import com.muqing.VH class CodeTableAdapter( val context: Context, private val group: List, private val itemList: List>, private val binding: ActivityCodeTableBinding -) : RecyclerView.Adapter>() { +) : RecyclerView.Adapter>() { private var versionMap: HashMap? = null private var typeNameMap: HashMap? = null private var sectionMap: HashMap? = null @@ -182,8 +182,8 @@ class CodeTableAdapter( return resultView.root }*/ - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VH { - return VH(ItemCodetableBinding.inflate(LayoutInflater.from(parent.context), parent, false)) + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseVh { + return BaseVh(ItemCodetableBinding.inflate(LayoutInflater.from(parent.context), parent, false)) } override fun getItemCount(): Int { @@ -204,7 +204,7 @@ class CodeTableAdapter( } @SuppressLint("NotifyDataSetChanged", "StringFormatInvalid") - override fun onBindViewHolder(holder: VH, position: Int) { + override fun onBindViewHolder(holder: BaseVh, position: Int) { holder.binging.title.text = group[position].translate val format = String.format( context.getString(R.string.filenum), diff --git a/app/src/main/java/com/coldmint/rust/pro/adapters/CodeTableItemAdapter.kt b/app/src/main/java/com/coldmint/rust/pro/adapters/CodeTableItemAdapter.kt index 3ec7a06..1317fa7 100644 --- a/app/src/main/java/com/coldmint/rust/pro/adapters/CodeTableItemAdapter.kt +++ b/app/src/main/java/com/coldmint/rust/pro/adapters/CodeTableItemAdapter.kt @@ -20,16 +20,16 @@ import com.coldmint.rust.core.database.code.CodeDataBase import com.coldmint.rust.core.database.code.CodeInfo import com.coldmint.rust.core.tool.LineParser import com.coldmint.rust.pro.R +import com.coldmint.rust.pro.base.BaseVh import com.coldmint.rust.pro.databinding.CodeTableItemBinding import com.coldmint.rust.pro.dialog.MaterialBottomDialog import com.coldmint.rust.pro.tool.AppSettings import com.coldmint.rust.pro.tool.GlobalMethod import com.google.android.material.chip.Chip -import com.muqing.VH import java.util.concurrent.Executors class CodeTableItemAdapter(val recyclerView: RecyclerView, - var list: List) : RecyclerView.Adapter>() { + var list: List) : RecyclerView.Adapter>() { private val lineParser = LineParser() @@ -63,8 +63,8 @@ class CodeTableItemAdapter(val recyclerView: RecyclerView, notifyDataSetChanged() } - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VH { - return VH(CodeTableItemBinding.inflate(LayoutInflater.from(parent.context), parent, false)) + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseVh { + return BaseVh(CodeTableItemBinding.inflate(LayoutInflater.from(parent.context), parent, false)) } override fun getItemCount(): Int { @@ -112,7 +112,7 @@ class CodeTableItemAdapter(val recyclerView: RecyclerView, } @SuppressLint("StringFormatInvalid") - override fun onBindViewHolder(holder: VH, position: Int) { + override fun onBindViewHolder(holder: BaseVh, position: Int) { val context = holder.itemView.context val resultView: CodeTableItemBinding = holder.binging val codeInfo = list[position] diff --git a/app/src/main/java/com/coldmint/rust/pro/adapters/DesignAdapter.kt b/app/src/main/java/com/coldmint/rust/pro/adapters/DesignAdapter.kt index 23b968c..ed86b5d 100644 --- a/app/src/main/java/com/coldmint/rust/pro/adapters/DesignAdapter.kt +++ b/app/src/main/java/com/coldmint/rust/pro/adapters/DesignAdapter.kt @@ -8,20 +8,19 @@ import androidx.core.content.ContextCompat import androidx.recyclerview.widget.RecyclerView import com.coldmint.rust.core.turret.TurretData import com.coldmint.rust.pro.R +import com.coldmint.rust.pro.base.BaseVh import com.coldmint.rust.pro.databinding.ItemTabBinding -import com.muqing.VH -import com.muqing.gj /** * @author Cold Mint * @date 2022/1/10 8:49 */ -class DesignAdapter(private val onclick: Click) : RecyclerView.Adapter>() { +class DesignAdapter(private val onclick: Click) : RecyclerView.Adapter>() { var list: ArrayList = arrayListOf() - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VH { - return VH(ItemTabBinding.inflate(LayoutInflater.from(parent.context), parent, false)) + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseVh { + return BaseVh(ItemTabBinding.inflate(LayoutInflater.from(parent.context), parent, false)) } override fun getItemCount(): Int { @@ -31,9 +30,9 @@ class DesignAdapter(private val onclick: Click) : RecyclerView.Adapter, position: Int) { + override fun onBindViewHolder(holder: BaseVh, position: Int) { holder.binging.button.text = list[position].name - gj.sc(list[position].imageFile) +// gj.sc(list[position].imageFile) if (string == list[position]) { holder.binging.root.isEnabled = false diff --git a/app/src/main/java/com/muqing/VH.java b/app/src/main/java/com/coldmint/rust/pro/base/BaseVh.java similarity index 58% rename from app/src/main/java/com/muqing/VH.java rename to app/src/main/java/com/coldmint/rust/pro/base/BaseVh.java index 6630666..544f5d6 100644 --- a/app/src/main/java/com/muqing/VH.java +++ b/app/src/main/java/com/coldmint/rust/pro/base/BaseVh.java @@ -1,11 +1,13 @@ -package com.muqing; +package com.coldmint.rust.pro.base; + import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import androidx.viewbinding.ViewBinding; -public class VH extends RecyclerView.ViewHolder { + +public class BaseVh extends RecyclerView.ViewHolder { public Binging binging; - public VH(@NonNull Binging itemView) { + public BaseVh(@NonNull Binging itemView) { super(itemView.getRoot()); this.binging = itemView; } diff --git a/app/src/main/java/com/coldmint/rust/pro/fragments/CommunityFragment.kt b/app/src/main/java/com/coldmint/rust/pro/fragments/CommunityFragment.kt index 2fc7c87..943a4e9 100644 --- a/app/src/main/java/com/coldmint/rust/pro/fragments/CommunityFragment.kt +++ b/app/src/main/java/com/coldmint/rust/pro/fragments/CommunityFragment.kt @@ -2,14 +2,19 @@ package com.coldmint.rust.pro.fragments import android.os.Bundle import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment import androidx.viewpager2.widget.ViewPager2 import com.coldmint.rust.pro.R import com.coldmint.rust.pro.adapters.CommunityAdapter -import com.coldmint.rust.pro.base.BaseFragment -import com.coldmint.rust.pro.databinding.FragmentCommunityBinding -import com.google.android.material.tabs.TabLayoutMediator +import com.google.android.material.navigation.NavigationBarView -class CommunityFragment : BaseFragment() { +class CommunityFragment : Fragment() { + + /** + * 加载tab + */ private fun loadTab() { if (!isAdded) { return @@ -19,51 +24,98 @@ class CommunityFragment : BaseFragment() { }*/ } + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + val inflate = inflater.inflate(R.layout.fragment_community, container, false) + + onViewCreated(inflate) + return inflate - override fun getViewBindingObject(layoutInflater: LayoutInflater): FragmentCommunityBinding { - return FragmentCommunityBinding.inflate(layoutInflater) } - override fun whenViewCreated(inflater: LayoutInflater, savedInstanceState: Bundle?) { - viewBinding.pager.adapter = CommunityAdapter(this) - viewBinding.pager.isSaveEnabled = false - viewBinding.pager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() { + private fun onViewCreated(view: View) { + val navigationBarView : NavigationBarView = view.findViewById(R.id.bottomnavigationView) + val pager : ViewPager2 = view.findViewById(R.id.pager) + pager.adapter = CommunityAdapter(this) + pager.isSaveEnabled = false + pager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() { override fun onPageSelected(position: Int) { when (position) { 0 -> { - viewBinding.bottomnavigationView.selectedItemId = R.id.action_recommended + navigationBarView.selectedItemId = R.id.action_recommended } 1 -> { - viewBinding.bottomnavigationView.selectedItemId = R.id.action_follow + navigationBarView.selectedItemId = R.id.action_follow } 2 -> { - viewBinding.bottomnavigationView.selectedItemId = R.id.action_ranking + navigationBarView.selectedItemId = R.id.action_ranking } 3 -> { - viewBinding.bottomnavigationView.selectedItemId = R.id.action_my + navigationBarView.selectedItemId = R.id.action_my } } } }) - viewBinding.bottomnavigationView.setOnItemSelectedListener { + navigationBarView.setOnItemSelectedListener { when (it.itemId) { R.id.action_recommended -> { - viewBinding.pager.currentItem = 0 + pager.currentItem = 0 } R.id.action_follow -> { - viewBinding.pager.currentItem = 1 + pager.currentItem = 1 } R.id.action_ranking -> { - viewBinding.pager.currentItem = 2 + pager.currentItem = 2 } R.id.action_my -> { - viewBinding.pager.currentItem = 3 + pager.currentItem = 3 } } true } - - - loadTab() } +// override fun whenViewCreated(inflater: LayoutInflater, savedInstanceState: Bundle?) { +// viewBinding.pager.adapter = CommunityAdapter(this) +// viewBinding.pager.isSaveEnabled = false +// viewBinding.pager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() { +// override fun onPageSelected(position: Int) { +// when (position) { +// 0 -> { +// viewBinding.bottomnavigationView.selectedItemId = R.id.action_recommended +// } +// 1 -> { +// viewBinding.bottomnavigationView.selectedItemId = R.id.action_follow +// } +// 2 -> { +// viewBinding.bottomnavigationView.selectedItemId = R.id.action_ranking +// } +// 3 -> { +// viewBinding.bottomnavigationView.selectedItemId = R.id.action_my +// } +// } +// } +// }) +// viewBinding.bottomnavigationView.setOnItemSelectedListener { +// when (it.itemId) { +// R.id.action_recommended -> { +// viewBinding.pager.currentItem = 0 +// } +// R.id.action_follow -> { +// viewBinding.pager.currentItem = 1 +// } +// R.id.action_ranking -> { +// viewBinding.pager.currentItem = 2 +// } +// R.id.action_my -> { +// viewBinding.pager.currentItem = 3 +// } +// } +// true +// } +// +// +// loadTab() +// } } \ No newline at end of file diff --git a/app/src/main/java/com/muqing/gj.java b/app/src/main/java/com/muqing/gj.java deleted file mode 100644 index c90b353..0000000 --- a/app/src/main/java/com/muqing/gj.java +++ /dev/null @@ -1,122 +0,0 @@ -package com.muqing; - -import android.annotation.SuppressLint; -import android.content.ClipData; -import android.content.ClipboardManager; -import android.content.Context; -import android.content.Intent; -import android.content.res.TypedArray; -import android.util.Log; -import android.view.inputmethod.InputMethodManager; -import android.widget.EditText; -import android.widget.Toast; - -import androidx.appcompat.app.AppCompatActivity; - -import java.net.NetworkInterface; -import java.net.SocketException; -import java.util.Collections; - -/** @noinspection unused*/ -public class gj { - - public final static String log_TAB = "输出"; - - public static void ts(Context a, Object b) { - Toast.makeText(a, b.toString(), Toast.LENGTH_SHORT).show(); - } - - public static class ts implements Runnable { - String string; - Context context; - - public ts(Context context,String string) { - this.string = string; - this.context = context; - } - - @Override - public void run() { - ts(context,string); - } - } - - public static void sc(Object a) { - if (a == null) { - a = "null"; - } - Log.d(log_TAB, a.toString()); - } - public static void fx(Context context, String str) { - Intent shareIntent = new Intent(Intent.ACTION_SEND); - shareIntent.setType("text/plain"); - shareIntent.putExtra(Intent.EXTRA_TEXT, str); - context.startActivity(shareIntent); - } - - /** - * 复制文字到剪切板 - * - */ - 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); - gj.ts(context, "复制成功"); - } - - public static boolean isWiFiConnected() { - try { - for (NetworkInterface networkInterface : Collections.list(NetworkInterface.getNetworkInterfaces())) { - if (networkInterface.isUp() && !networkInterface.isLoopback()) { - if (networkInterface.getDisplayName().contains("wlan")) { - return true; // Wi-Fi网络 - } else if (networkInterface.getDisplayName().contains("rmnet")) { - return false; // 流量网络 - } - } - } - } catch (SocketException e) { - sc(e); - } - return false; // 默认为流量网络 - } - public static void tcjp(EditText editText) { - editText.requestFocus();//获取焦点 - InputMethodManager imm = (InputMethodManager) - editText.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); -// gj.sc(imm.isActive()); - //没有显示键盘,弹出 - imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT); - } - public static void ycjp(EditText editText) { - InputMethodManager imm = (InputMethodManager) - editText.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); - if (imm.isActive()) //有显示键盘,隐藏 - imm.hideSoftInputFromWindow(editText.getWindowToken(), - InputMethodManager.HIDE_NOT_ALWAYS); - } - - public static int getztl(Context context) { - // 获得状态栏高度 - @SuppressLint({"InternalInsetResource", "DiscouragedApi"}) int resourceId = - context.getResources(). - getIdentifier("status_bar_height", "dimen", "android"); - return context.getResources().getDimensionPixelSize(resourceId); - } - - public static int getbackgroundColor(AppCompatActivity appCompatActivity) { - TypedArray array = appCompatActivity.getTheme().obtainStyledAttributes(new int[] { - android.R.attr.colorBackground -// android.R.attr.textColorPrimary, - }); - int backgroundColor = array.getColor(0, 0xFF00FF); -// int textColor = array.getColor(1, 0xFF00FF); - array.recycle(); - return backgroundColor; - } -} \ No newline at end of file diff --git a/app/src/main/res/layout-land/activity_main.xml b/app/src/main/res/layout-land/activity_main.xml new file mode 100644 index 0000000..9361d3c --- /dev/null +++ b/app/src/main/res/layout-land/activity_main.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-land/fragment_community.xml b/app/src/main/res/layout-land/fragment_community.xml new file mode 100644 index 0000000..dd38040 --- /dev/null +++ b/app/src/main/res/layout-land/fragment_community.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + +