在Android设置界面中实现颜色选择器

article/2025/8/6 2:06:52

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:在Android开发中,颜色选择器是设置界面中实现用户自定义界面主题色或字体颜色的常用功能。本教程详细介绍了如何设计颜色选择器布局,通过 GridView RecyclerView 展示颜色列表,并利用 ColorPreference 类作为设置界面中的条目来实现用户选择。教程还包括如何创建颜色资源、处理颜色选择弹窗、选择反馈以及实现细节。此外,还提供了关于如何使用第三方库来简化开发的指南。

1. 颜色选择器布局设计与实现

在这一章中,我们将探讨颜色选择器的布局设计和实现细节。从用户体验出发,合理的布局设计至关重要。我们将首先审视设计的基本原则,然后逐步深入到具体的实现技术,如使用XML布局文件进行设计,以及如何通过代码优化布局性能。

颜色选择器通常包括一系列的颜色选项,用户可以从中选择自己喜欢的颜色。一个直观的布局可以提升用户体验,因此,我们需要考虑如何展示颜色块,以及如何提供直观的交互方式。

1.1 设计原则

颜色选择器的设计应遵循以下原则: - 直观性 :颜色块要易于用户辨识和选择。 - 响应性 :布局需适应不同尺寸的屏幕和设备。 - 性能 :在保持界面流畅的前提下,快速加载和响应用户操作。

1.2 XML布局实现

使用XML布局文件可以快速定义用户界面,我们将介绍如何使用布局文件来实现基本的颜色选择器界面。重点包括如何定义颜色块、如何安排它们的布局以及如何设置间距和边距。

1.3 代码中的布局优化

在布局文件定义完成后,代码中还存在进一步优化布局的可能。我们将探讨如何在代码中使用布局属性和方法进行动态优化。这可能包括合理使用 ConstraintLayout 来优化布局层次,以及利用 RecyclerView 等组件来提高大量颜色项的滚动性能。

<!-- 基本的颜色块布局示例 -->
<LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="vertical"android:padding="10dp"><Viewandroid:id="@+id/colorBlock"android:layout_width="100dp"android:layout_height="100dp"android:background="@color/red"/>
</LinearLayout>

通过本章内容,读者将了解如何为颜色选择器设计一个直观、响应和性能优化的布局,为进一步实现和优化应用程序的UI打下坚实的基础。接下来的章节将进一步扩展这一主题,介绍颜色列表的展示、偏好设置的实现,以及颜色选择器优化和用户体验提升的技巧。

2. 使用 GridView RecyclerView 展示颜色列表

展示颜色列表是用户界面中常见的一种交互方式,无论是用于颜色选择器还是其他任何颜色相关的功能。在Android开发中, GridView RecyclerView 是实现列表展示的两种常用控件。本章节将详细探讨如何使用这两种控件来展示颜色列表。

2.1 GridView 的基本使用方法

GridView 是Android中用于显示网格视图的组件,适合用于展示固定列数的列表数据。它通过子视图的平铺形式,可以高效地展示大量数据。

2.1.1 布局的搭建和属性配置

首先,在布局文件中引入 GridView 组件。以下是一个简单的 GridView 布局示例:

<GridView xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/gridViewColors"android:layout_width="match_parent"android:layout_height="match_parent"android:numColumns="auto_fit"android:verticalSpacing="4dp"android:horizontalSpacing="4dp"android:columnWidth="90dp"android:stretchMode="columnWidth"android:gravity="center"/>

在这个布局中, numColumns 设置为 auto_fit 允许 GridView 根据屏幕大小和列宽自动调整列数。 columnWidth 定义了每列的宽度,而 stretchMode 属性确保了每列可以根据需要拉伸以填充屏幕宽度。 verticalSpacing horizontalSpacing 分别设置了项之间的垂直和水平间距。

2.1.2 数据绑定和颜色项的显示逻辑

接下来,我们需要在Activity或者Fragment中设置 GridView 的数据和适配器。首先创建一个自定义的 Adapter 来展示颜色项。

public class ColorAdapter extends BaseAdapter {private Context context;private List<Integer> colorList;public ColorAdapter(Context context, List<Integer> colorList) {this.context = context;this.colorList = colorList;}@Overridepublic int getCount() {return colorList.size();}@Overridepublic Object getItem(int position) {return colorList.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// 创建视图或复用已有的视图if (convertView == null) {LayoutInflater inflater = LayoutInflater.from(context);convertView = inflater.inflate(R.layout.item_color, parent, false);}// 获取颜色项Integer color = colorList.get(position);// 找到颜色视图并设置颜色ImageView colorView = convertView.findViewById(R.id.colorView);colorView.setColorFilter(color, PorterDuff.Mode.SRC_ATOP);return convertView;}
}

这里 item_color.xml 是一个简单的布局文件,包含一个 ImageView 来展示颜色。

<ImageView xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/colorView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/ic_color_sample"/>

在Activity中,我们将设置颜色列表并绑定到 GridView

// 颜色数据示例
List<Integer> colorList = Arrays.asList(Color.RED, Color.GREEN, Color.BLUE, Color.YELLOW);GridView gridView = findViewById(R.id.gridViewColors);
ColorAdapter adapter = new ColorAdapter(this, colorList);
gridView.setAdapter(adapter);

2.2 RecyclerView 的高级应用

虽然 GridView 足够简单,但在复杂的场景下 RecyclerView 提供了更高的灵活性和性能优势。以下是如何使用 RecyclerView 来实现颜色列表的展示。

2.2.1 适配器的设计与实现

创建一个继承自 RecyclerView.Adapter 的适配器类 ColorAdapter

public class ColorAdapter extends RecyclerView.Adapter<ColorAdapter.ViewHolder> {private List<Integer> colorList;public ColorAdapter(List<Integer> colorList) {this.colorList = colorList;}@Overridepublic ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_color, parent, false);return new ViewHolder(view);}@Overridepublic void onBindViewHolder(ViewHolder holder, int position) {int color = colorList.get(position);holder.colorView.setColorFilter(color, PorterDuff.Mode.SRC_ATOP);}@Overridepublic int getItemCount() {return colorList.size();}public static class ViewHolder extends RecyclerView.ViewHolder {ImageView colorView;public ViewHolder(View view) {super(view);colorView = view.findViewById(R.id.colorView);}}
}

2.2.2 管理器的使用和优化性能

RecyclerView 通过使用管理器( LayoutManager )来控制子视图的排列方式。常见的有 LinearLayoutManager GridLayoutManager ,和 StaggeredLayoutManager 。例如,我们使用 GridLayoutManager 来创建三列的网格布局。

RecyclerView recyclerView = findViewById(R.id.recyclerViewColors);
recyclerView.setLayoutManager(new GridLayoutManager(this, 3));
ColorAdapter adapter = new ColorAdapter(colorList);
recyclerView.setAdapter(adapter);

为了提升滚动性能,确保使用 ViewHolder 模式,避免在 onBindViewHolder 中做不必要的操作,并且合理使用 RecyclerView 缓存。

// 使用ViewHolder缓存视图
@Override
public void onBindViewHolder(ViewHolder holder, int position) {int color = colorList.get(position);holder.colorView.setColorFilter(color, PorterDuff.Mode.SRC_ATOP);
}

以上代码和逻辑分析向您展示了如何通过 GridView RecyclerView 来展示颜色列表。这种实现方式简单明了,适合初学者理解并且能迅速应用于实际项目中。当然,在性能优化方面, RecyclerView GridView 具有更多优势。希望您通过这些示例能够更加深入地理解这两种控件在展示列表方面的使用方法和性能优化。

在下一章节中,我们将探讨如何创建自定义的 Preference 类,用于在设置界面中添加颜色偏好项。

3. ColorPreference 类的创建与应用

在应用开发中,用户自定义颜色是一个常见的需求。通过继承Android的 Preference 类,我们可以轻松创建一个自定义的颜色选择器 ColorPreference 。这一类可以在应用的设置界面中方便地让用户选择和修改主题颜色。本章节将深入探讨 ColorPreference 的创建和使用细节,以及如何在设置界面中集成该组件,并保证用户选择的状态可以被保存和恢复。

3.1 Preference 类的继承与自定义

Preference 类是Android提供的用于保存用户设置选项的抽象类。通过继承并实现它,我们可以创建特定的设置项,比如 ColorPreference ,来保存颜色值。

3.1.1 自定义 Preference 类的基本结构

要创建一个自定义的 ColorPreference 类,首先需要定义类的基本结构。这里我们关注的是如何继承 Preference 类,并添加必要的功能来存储和恢复颜色数据。

class ColorPreference @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : Preference(context, attrs, defStyleAttr) {// 定义颜色选择回调interface OnColorChangedListener {fun onColorChanged(color: Int)}// 存储颜色值和监听器private var color: Int = 0private var listener: OnColorChangedListener? = null// XML中定义的属性private var colorSummary: String? = nullinit {// 在这里可以初始化组件属性,例如设置默认颜色和摘要// 可以从attrs中解析用户在XML中自定义的属性}// 设置颜色的方法fun setColor(color: Int) {if (this.color != color) {this.color = color// 更新UI和摘要notifyChanged()}}// 获取当前颜色的方法fun getColor(): Int {return color}// 注册颜色改变监听器的方法fun setOnColorChangedListener(listener: OnColorChangedListener) {this.listener = listener}// 在这里实现Preference的其他方法,如onGetDefaultValue, onSetInitialValue等
}

代码中定义了一个 ColorPreference 类,它继承自 Preference 。类中添加了用于存储颜色值的变量以及与设置项相关的回调接口 OnColorChangedListener 。这允许外部代码注册回调,以响应颜色值的变化。

3.1.2 属性的读取和设置方法

ColorPreference 类除了需要初始化属性外,还应提供方法来读取和设置属性值。例如,提供 setColor 方法以编程方式设置颜色,并在颜色改变时更新UI。

override fun onSetInitialValue(defaultValue: Any?) {setColor(if (defaultValue is Int) defaultValue else 0)
}override fun onGetSummary(): CharSequence? {return colorSummary
}

onSetInitialValue onGetSummary 方法分别用于初始化颜色值和获取颜色摘要。这确保了当 ColorPreference 被添加到设置界面时,它可以正确地显示默认值和摘要信息。

3.2 ColorPreference 在设置界面的应用

在完成 ColorPreference 类的基本结构和属性方法的实现后,下一步是在应用的设置界面中添加此组件,并处理用户选择颜色后的保存和恢复逻辑。

3.2.1 在设置界面中添加 ColorPreference

要将 ColorPreference 添加到设置界面,需要在设置的XML文件中声明一个 PreferenceScreen 并添加 ColorPreference

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"><!-- 其他设置项 --><com.example.yourapp.ColorPreferenceandroid:key="color_preference_key"android:title="@string/color_preference_title"android:summary="@string/color_preference_summary"android:defaultValue="#FF0000" />
</PreferenceScreen>

在上述代码中, ColorPreference 作为一个新项被添加到设置界面。 android:key 属性用于后续获取此 Preference 实例, android:title android:summary 用于显示标题和摘要, android:defaultValue 用于设置默认颜色值。

3.2.2 保存和恢复用户的选择状态

为了在应用重启后保持用户的选择状态,需要重写 Preference onSaveInstanceState onRestoreInstanceState 方法。

override fun onSaveInstanceState(): Parcelable? {val superState = super.onSaveInstanceState()val myState = Bundle().apply {putInt(SAVED_COLOR_KEY, color)}return BundleInstanceState(superState, myState)
}override fun onRestoreInstanceState(state: Parcelable?) {val myState = BundleInstanceState.getBundle(state)super.onRestoreInstanceState(myState超级状态)setColor(myState.getInt(SAVED_COLOR_KEY, 默认颜色))
}

在这段代码中, onSaveInstanceState 保存了当前颜色值,而 onRestoreInstanceState 则负责在活动或片段重建时恢复状态。这里使用了 Bundle 实例来保存和恢复颜色状态,确保了 ColorPreference 的状态可以在配置更改(如屏幕旋转)或系统杀死进程后恢复。

通过上述步骤,我们成功地在设置界面中添加了自定义的 ColorPreference 组件,并且能够保存用户的选择状态。这不仅提升了应用的用户体验,也增强了设置界面的可扩展性和灵活性。

[接下来,我们将探讨如何在XML资源文件中存储和管理颜色值,并了解如何在代码中高效地读取和使用这些颜色资源。]

4. XML资源文件中颜色值的存储与读取

4.1 资源文件的组织结构

4.1.1 定义颜色资源

在Android开发中,XML资源文件是用来存储不同类型资源的地方,例如字符串、尺寸、颜色等。颜色资源的定义通常位于 res/values 目录下的 colors.xml 文件中。通过在这个文件中定义颜色资源,可以在应用中统一管理颜色值,便于维护和修改。

<!-- colors.xml -->
<resources><color name="colorPrimary">#3F51B5</color><color name="colorPrimaryDark">#303F9F</color><color name="colorAccent">#FF4081</color><color name="textColorPrimary">#212121</color>
</resources>

在这个例子中,我们定义了几种颜色资源,这些颜色资源可以通过 @color/colorPrimary 的方式在布局文件或代码中引用。这种集中管理颜色的方式极大地提高了项目的可维护性,并且允许开发者轻松地进行主题或外观的变更。

4.1.2 使用 colors.xml 进行管理

通过使用 colors.xml 文件来管理颜色资源,开发者可以在不同的主题或样式文件中引用相同的资源标识符。这种方式确保了颜色的一致性,并使得对颜色的修改只需要在 colors.xml 文件中进行,而不需要逐个修改布局文件或代码。

<!-- themes.xml -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"><item name="colorPrimary">@color/colorPrimary</item><item name="colorPrimaryDark">@color/colorPrimaryDark</item><item name="colorAccent">@color/colorAccent</item>
</style>

在这个例子中,应用的主题 AppTheme 继承自 Theme.AppCompat.Light.DarkActionBar ,并且通过引用 colors.xml 文件中定义的颜色资源来设置主题颜色。这样,如果我们需要改变应用的主色调,只需要修改 colors.xml 中相应的颜色值,所有引用该颜色资源的地方都会自动更新。

4.2 在代码中读取和使用颜色资源

4.2.1 通过资源ID获取颜色值

在Android应用中,通过资源ID可以轻松地获取到在 colors.xml 中定义的颜色值。获取颜色值通常使用 ContextCompat.getColor(context, R.color.color_name) 方法,其中 context 是应用的上下文环境, R.color.color_name 是颜色资源的引用。

Context context = getContext();
int colorPrimary = ContextCompat.getColor(context, R.color.colorPrimary);

这段代码展示了如何通过上下文获取 colorPrimary 颜色值。 ContextCompat.getColor 方法是Android Support Library中提供的,用于兼容不同版本的Android系统。在旧版本的Android系统中,使用 getResources().getColor(R.color.colorPrimary) 方法来获取颜色值。

4.2.2 动态修改UI元素的颜色属性

在应用运行过程中,开发者可能需要根据用户的操作或应用的状态动态地改变UI元素的颜色。这可以通过设置视图的 setBackgroundColor(int color) setStrokeColor(int color) 方法来实现。

View view = findViewById(R.id.my_view);
view.setBackgroundColor(ContextCompat.getColor(context, R.color.colorAccent));

在这个例子中,我们通过 setBackgroundColor 方法动态地设置了视图的背景颜色。同样地,我们也可以通过类似的方式改变视图的文字颜色、边框颜色等属性。这样的动态改变增加了应用的交互性和用户体验。

在以上章节中,我们讨论了如何通过XML资源文件来组织和管理颜色资源,并且演示了如何在代码中读取和使用这些资源。通过这种方式,开发者可以轻松地在应用中复用颜色资源,提高代码的整洁性和可维护性。同时,动态修改UI元素的颜色属性也为应用带来了更多的交互性和个性化。

5. 颜色选择器的优化与用户体验提升

5.1 颜色选择器弹窗的实现

5.1.1 弹窗的布局设计

为了提供良好的用户体验,颜色选择器弹窗需要有直观和简洁的布局设计。一个典型的弹窗可能包含一个颜色板、一个颜色预览、一个颜色值显示区,以及确认和取消按钮。

<!-- color_selector_popup.xml -->
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"android:padding="16dp"android:background="@android:color/white"><GridViewandroid:id="@+id/gridViewColors"android:layout_width="match_parent"android:layout_height="wrap_content"android:numColumns="auto_fit"android:columnWidth="60dp"android:stretchMode="columnWidth"android:gravity="center"android:padding="4dp"android:layout_marginBottom="16dp"/><TextViewandroid:id="@+id/textColorValue"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="14sp"android:textColor="#000000"/><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"android:gravity="center"><Buttonandroid:id="@+id/buttonConfirm"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="确认"/><Buttonandroid:id="@+id/buttonCancel"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="取消"/></LinearLayout>
</LinearLayout>

5.1.2 弹窗的事件处理逻辑

事件处理逻辑主要包括用户点击颜色格子时的颜色选择、点击确认按钮时的颜色确认,以及点击取消按钮时的弹窗关闭处理。在 Activity Fragment 中,我们需要为这些元素设置点击监听器。

// ColorSelectorPopupActivity.java
public class ColorSelectorPopupActivity extends AppCompatActivity {private GridView gridViewColors;private TextView textColorValue;private ColorPicker colorPicker;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.color_selector_popup);gridViewColors = findViewById(R.id.gridViewColors);textColorValue = findViewById(R.id.textColorValue);// 初始化颜色选择器、适配器等colorPicker = new ColorPicker();ColorAdapter adapter = new ColorAdapter(this, colorPicker.getColors());gridViewColors.setAdapter(adapter);gridViewColors.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {// 更新颜色预览和颜色值int color = colorPicker.getColor(position);textViewColorValue.setText(colorPicker.getColorHex(color));// 更新颜色选择器选择状态colorPicker.setCurrentSelection(color);}});// 确认和取消按钮的点击事件处理findViewById(R.id.buttonConfirm).setOnClickListener(v -> {// 将用户选择的颜色持久化存储// ...dismiss();});findViewById(R.id.buttonCancel).setOnClickListener(v -> dismiss());}private void dismiss() {// 关闭弹窗逻辑// ...}
}

5.2 用户选择颜色后的反馈与保存

5.2.1 确认操作的设计与反馈

确认操作应该提供明确的反馈,告知用户他们的选择已被接受。在颜色选择器弹窗中,这通常是通过更新UI和显示一个短暂的确认提示来完成的。在Android中,我们可以通过 Toast Snackbar 来实现这样的提示。

// ColorSelectorPopupActivity.java
// ...
findViewById(R.id.buttonConfirm).setOnClickListener(v -> {// 保存颜色选择逻辑// ...Toast.makeText(ColorSelectorPopupActivity.this, "颜色已保存", Toast.LENGTH_SHORT).show();dismiss();
});

5.2.2 将用户选择的颜色持久化存储

用户选择的颜色应被持久化存储,以便在应用重启后也能恢复该状态。我们可以使用SharedPreferences来保存颜色值。

// ColorSelectorPopupActivity.java
// ...public static final String KEY_USER_COLOR = "user_color";@Override
protected void onStop() {super.onStop();SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);sharedPreferences.edit().putInt(KEY_USER_COLOR, colorPicker.getCurrentSelection()).apply();
}// 在应用的其他部分读取颜色值
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
int storedColor = sharedPreferences.getInt(KEY_USER_COLOR, Color.BLACK); // 默认值为黑色

5.3 适配不同设备和屏幕尺寸的响应式设计

5.3.1 使用适配器和布局填充器

为了确保颜色选择器在不同设备和屏幕尺寸上能够良好显示,我们需要使用适配器和布局填充器来设计弹窗。可以使用 LinearLayoutManager 来管理 RecyclerView 的布局,并使用 TableLayout GridLayout 作为 GridView 的替代方案。

// ColorAdapter.java
public class ColorAdapter extends ArrayAdapter<Integer> {// 构造函数和适配器逻辑
}

5.3.2 测试和调整以适应多种屏幕尺寸

在开发过程中,需要在不同的设备上测试颜色选择器的显示效果,并对布局进行必要的调整,确保布局在不同屏幕尺寸上均有良好的展示效果。

为了确保颜色选择器在所有设备上都表现良好,可以通过创建不同的布局资源文件夹(例如 res/layout/ res/layout-small/ res/layout-large/ res/layout-xlarge/ ),并在这些文件夹中放置适应特定屏幕尺寸的布局文件。这样,Android系统会根据设备的屏幕尺寸自动选择合适的资源文件。

通过细致的测试和不断调整,我们可以确保颜色选择器在用户体验和功能上都能满足用户的需求。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif

简介:在Android开发中,颜色选择器是设置界面中实现用户自定义界面主题色或字体颜色的常用功能。本教程详细介绍了如何设计颜色选择器布局,通过 GridView RecyclerView 展示颜色列表,并利用 ColorPreference 类作为设置界面中的条目来实现用户选择。教程还包括如何创建颜色资源、处理颜色选择弹窗、选择反馈以及实现细节。此外,还提供了关于如何使用第三方库来简化开发的指南。

本文还有配套的精品资源,点击获取 menu-r.4af5f7ec.gif


http://www.hkcw.cn/article/ZoUcbUiUIK.shtml

相关文章

小程序微信认证/年审流程

看清楚文字描述&#xff0c;别光看图&#xff0c;图并不一定准确&#xff0c;按照你想填写的填写、&#xff0c;本教程只是提供一个参考。 1.登录微信公众平台 : 微信公众平台【← ←点击这个蓝色字体】&#xff08;选择正确的小程序&#xff09;&#xff0c;或者根据第三方…

macOS版本微信 4.0 之后,双开策略

从 macOS 版本微信 3.0 升级到 4.0 之后&#xff0c;之前的双开策略实效了。 当然期待微信能够让之前方法回归。这是最理想的。 咱也该自己动手丰衣足食 &#xff5e;&#xff5e;&#xff5e; 第一步 创建微信的「分身」 sudo cp -R /Applications/WeChat.app /Applicati…

EasyPlayer-RTSP-Android:一款强大的流媒体播放器

EasyPlayer-RTSP-Android&#xff1a;一款强大的流媒体播放器 【下载地址】EasyPlayer-RTSP-Android一款强大的流媒体播放器 EasyPlayer-RTSP-Android 是一款功能强大的 Android 流媒体播放器&#xff0c;支持 RTSP、RTMP、HLS 和 HTTP 等多种协议&#xff0c;适用于各种音视频…

mac怎么安装pycharm?

安装步骤&#xff1a;1、打开PyCharm官网&#xff0c;在官网首页点击“下载”按钮&#xff0c;选择“MacOS”版本进行下载&#xff1b;2、双击打开安装包&#xff0c;将PyCharm拖动到应用程序文件夹中&#xff1b;3、根据提示进行安装&#xff0c;在第一次运行PyCharm时&#x…

【工具】Raycast – Mac提效工具

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 引入 以前看到同事们锁屏的时候,不知按了什么键,直接调出这个框,然后输入lock屏幕就锁了。 跟我习惯的按Mac开机键不大一样。个人觉得还…

【实测可用】Sublime Text4 4169 mac/windows 破解注册 20240417 实测可用

官网下载Sublime Text4 官网地址&#xff1a;https://www.sublimetext.com/ 点击下载即可 不用安装&#xff0c;可以直接使用。 MAC 破解注册 修改可执行文件sublime_text 打开网站https://hexed.it/。找到sublime所在目录&#xff0c;比如我这里是&#xff1a;/Users/xxx/s…

小程序快速实现大模型聊天机器人

需求分析&#xff1a; 基于大模型&#xff0c;打造一个聊天机器人&#xff1b;使用开放API快速搭建&#xff0c;例如&#xff1a;讯飞星火&#xff1b;先实现UI展示&#xff0c;在接入API。 最终实现效果如下&#xff1a; 一.聊天机器人UI部分 1. 创建微信小程序&#xff0c…

iOS全能签使用全攻略

适用系统&#xff1a;iOS 12及以上设备 全能签是一款免费免越狱的IPA签名工具&#xff0c; 支持一键签名、多开安装、插件注入等功能&#xff0c;无需联网即可使用。 哈士奇软件源&#xff08;解锁更多资源&#xff09;&#xff1a;https://yuan.ioska.cn/appstore &#xff0…

手把手教你在VMware虚拟机安装macOS(含避坑指南)

文章目录 ▍前期准备&#xff08;重要&#xff01;&#xff01;&#xff01;&#xff09;必备三件套&#xff1a;避坑提醒&#xff1a; ▍详细安装步骤步骤1&#xff1a;安装Unlocker补丁步骤2&#xff1a;创建虚拟机步骤3&#xff1a;修改虚拟机配置文件步骤4&#xff1a;安装…

mac intel芯片下载安卓模拟器

一、调研 目前主流两个模拟器&#xff1a; 雷神模拟器 不支持macosmumu模拟器pro版 不支持macos intel芯片 搜索到mumu的Q&A中有 “Intel芯片Mac如何安装MuMu&#xff1f;” q&a&#x1f517;&#xff1a;https://mumu.163.com/mac/faq/install-on-intel-mac.html 提…

Android Studio 历史版本下载

Android Studio 历史版本下载 官方链接&#xff1a;https://developer.android.google.cn/studio/archive 通过gradle插件版本反查Android Studio历史版本 Android Studio Meerkat | 2024.3.1 【https://r1—sn-j5o76n7e.gvt1-cn.com/edgedl/android/studio/install/2024.3.…

有手就行 | Flutter在VSCode(Visual Studio Code)中的安装与配置

目录 一、前言二、资料参考三、版本参考四、Flutter在Visual Studio Code中的安装与配置&#xff08;一&#xff09;下载Flutter插件及SDK&#xff08;二&#xff09;检查开发配置及问题解决&#xff08;1&#xff09;通过代理解决&#xff08;2&#xff09;通过镜像网站解决 五…

任务21:天气信息大屏说明及流程

任务描述 1. 大屏制作流程 1&#xff09;创建DJango项目 2&#xff09;读取MySQL数据&#xff0c;并参照ECharts图形的数据格式进行处理 3&#xff09;参照对照模板、ECharts官网配置项手册及示例&#xff0c;将相应的ECharts图形绘制到大屏对应的容器中。 2. 大屏制作说明…

精英-探索双群协同优化(Elite-Exploration Dual Swarm Cooperative Optimization, EEDSCO)

一种多群体智能优化算法&#xff0c;其核心思想是通过两个分工明确的群体——精英群和探索群——协同工作&#xff0c;平衡算法的全局探索与局部开发能力&#xff0c;从而提高收敛精度并避免早熟收敛。 一 核心概念 在传统优化算法&#xff08;如粒子群优化、遗传算法&#xf…

Go 即时通讯系统:客户端与服务端 WebSocket 通信交互

客户端和服务端的交互 客户端与服务端建立连接 客户端&#xff1a;客户端通过浏览器或者其他应用程序发起一个 HTTP 请求到服务端的 /socket.io 路径。在请求中会携带用户的 UUID 作为参数&#xff08;通过 c.Query("user") 获取&#xff09;。 // router/socket.…

Python 训练营打卡 Day 41

简单CNN 一、数据预处理 在图像数据预处理环节&#xff0c;为提升数据多样性&#xff0c;可采用数据增强&#xff08;数据增广&#xff09;策略。该策略通常不改变单次训练的样本总数&#xff0c;而是通过对现有图像进行多样化变换&#xff0c;使每次训练输入的样本呈现更丰富…

什么是模块化设计?模块和微服务是一样?

软件的模块化设计和微服务是两种不同层次的概念&#xff0c;它们有相似之处但并非等同。以下是详细解释&#xff1a; 一、软件的模块化设计&#xff08;Modular Design&#xff09; 定义 模块化设计是指将一个复杂的软件系统拆分为多个相对独立的模块&#xff08;Module&…

基于千帆大模型的AI体检报告解读系统实战:使用OSS与PDFBox实现PDF内容识别

目录 说明 前言 需求 流程说明 表结构说明 整体流程 百度智能云 注册和实名认证 创建应用 费用说明 大模型API说明 集成大模型 设计Prompt 上传体检报告 读取PDF内容 功能实现 智能评测 抽取大模型工具 功能实现 总结 说明 AI体检报告解读、病例小结或者…

PySide6 GUI 学习笔记——常用类及控件使用方法(标签控件QLabel)

文章目录 标签控件QLabel及其应用举例标签控件QLabel的常用方法及信号应用举例Python 代码示例1Python 代码示例2 小结 标签控件QLabel及其应用举例 QLabel 是 PySide6.QtWidgets 模块中的一个控件&#xff0c;用于在界面上显示文本或图像。它常用于作为标签、提示信息或图片展…

TCP三次握手四次挥手

TCP基本认识 TCP的头格式 序列号:在建立连接时由计算机生成随机数作为初始值&#xff0c;通过SYN包传给接收端。每发送一次数据就累加一次该数据字节数的大小。用来解决网络号乱序。(乱序问题:未按发送顺序到达接收端称为乱序) 确认应答号:指下一次期望收到的数据的序列号&…