一文搞懂Android主题和样式

1. 概念与作用

1.1 定义与组成

Android Theme是用于定义应用程序或其部分的视觉和界面风格的一种资源。主题在Android中扮演着重要的角色,它们允许开发者统一和自定义应用的外观和感觉。一个主题定义了一组属性集合,这些属性可以是颜色、字体、控件样式等,它们共同构成了应用的视觉表现。

主题由一系列的XML元素和属性组成,这些元素和属性在res/values/styles.xml文件中定义。每个主题都有一个唯一的名称,并且可以继承自另一个主题,从而方便地重用和扩展现有的主题样式。以下是主题的基本组成:

  • <style>标签:定义主题的开始,其中可以包含多个<item>标签来指定具体的样式属性。
  • <item>标签:指定单个样式属性,例如android:textColorandroid:background等。
  • parent属性:指定主题的父主题,允许主题继承父主题的属性。
  • 颜色和 drawable 资源:主题中常用的属性类型,用于定义应用的颜色方案和背景图案。

例如,一个简单的主题定义可能如下所示:

<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,并自定义了三个颜色属性。

1.2 作用域

Android主题的作用域可以是整个应用、单个Activity或者某个视图层次结构。这意味着开发者可以根据需要在不同的层级上应用主题,从而实现全局或局部的样式定制。

  • 应用级别的主题:在AndroidManifest.xml<application>标签中设置android:theme属性,可以为整个应用定义一个统一的主题风格。
  • Activity级别的主题:在AndroidManifest.xml<activity>标签中设置android:theme属性,可以为特定的Activity定制主题,而不影响其他部分。
  • 视图级别的主题:在布局文件中使用android:theme属性,可以为特定的视图或视图组设置主题,从而改变其子视图的样式。

例如,在AndroidManifest.xml中为整个应用设置主题:

<application android:theme="@style/AppTheme">...
</application>

或者为单个Activity设置主题:

<activity android:name=".MainActivity" android:theme="@style/AnotherTheme">...
</activity>

在布局文件中为特定视图设置主题:

<LinearLayoutandroid:theme="@style/ViewTheme"...>...
</LinearLayout>

通过这种方式,Android主题为开发者提供了强大的工具来实现应用的视觉一致性和个性化设计。

2. 主题与样式的区别

2.1 应用范围

Android 中的主题(Theme)和样式(Style)虽然在定义上具有相似的结构,但它们的应用范围和目的存在明显差异。

主题的应用范围

  • 可以应用于整个应用程序(在 AndroidManifest.xml 的 <application> 标签中设置)。
  • 可以应用于单个 Activity(在 AndroidManifest.xml 的 <activity> 标签中设置)。
  • 可以应用于特定的视图或视图组(在布局文件中通过 android:theme 属性设置)。

主题通常用于定义应用程序的整体视觉风格,包括颜色方案、字体样式、控件行为等。它们可以在不同的层级上应用,从而实现全局或局部的样式定制。

样式的应用范围

  • 主要应用于单个 View 或 ViewGroup
  • 在布局文件中通过 style 属性为特定的视图设置样式。

样式用于定义单个视图的外观和行为,例如字体颜色、背景颜色、边距和填充等。样式的更改只会影响应用它的视图,而不会影响其他视图或整个应用程序。

2.2 优先级

在Android中,当主题和样式同时应用于一个视图时,它们的优先级决定了最终的显示效果。

  1. 视图的样式(Style):直接在视图上设置的样式属性具有最高的优先级。这意味着如果一个视图通过 style 属性应用了特定的样式,那么这些样式将覆盖主题中相同的属性。

  2. 主题中的样式(Theme Style):如果视图没有直接应用样式,那么将使用主题中定义的样式。主题样式是在 styles.xml 文件中定义的,并且可以被应用到整个应用程序、单个 Activity 或视图层次结构。

  3. 默认样式(Default Style):如果既没有为视图指定样式,也没有为主题定义样式,那么将使用Android框架提供的默认样式。

优先级的顺序可以总结为:视图的样式 > 主题样式 > 默认样式。这种优先级结构确保了开发者可以灵活地覆盖和定制应用程序的样式,同时保持了样式的一致性和可维护性。开发者可以根据需要在不同的层级上应用样式和主题,以实现所需的视觉效果和用户体验。

3. 主题的创建与使用

3.1 创建主题

创建Android主题涉及到定义一组属性集合,这些属性集合在res/values/styles.xml文件中声明。主题的创建可以基于现有的主题,通过继承来扩展或修改其属性,也可以完全自定义一个新的主题。

基于现有主题创建: 开发者可以利用Android系统提供的主题或第三方库主题作为父主题,在此基础上进行扩展。例如,使用Theme.AppCompat系列主题作为父主题,可以快速地获得Material Design风格的界面元素。

<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>

完全自定义主题: 如果需要一个与现有主题完全不同的界面风格,开发者可以创建一个不继承任何现有主题的新主题。这通常涉及到定义一组全新的颜色资源、字体样式和其他界面属性。

<style name="CustomTheme"><item name="android:windowBackground">@color/background_custom</item><item name="android:textColor">@color/text_custom</item><item name="android:buttonStyle">@style/CustomButtonStyle</item>
</style>

在上述代码中,CustomTheme是一个完全自定义的主题,它定义了窗口背景、文本颜色和按钮样式等属性。这些属性将应用于应用的所有视图,除非被更具体的样式或主题覆盖。

3.2 应用主题

创建好主题后,需要在适当的位置应用它,以确保它能够影响应用的界面。应用主题可以通过以下几种方式进行:

应用级主题: 在AndroidManifest.xml文件中,通过设置<application>标签的android:theme属性来应用主题。这种方式会使得整个应用的所有Activity都使用这个主题。

<applicationandroid:theme="@style/AppTheme">...
</application>

Activity级主题: 在AndroidManifest.xml文件中,通过设置<activity>标签的android:theme属性来为特定的Activity应用主题。这允许开发者为不同的Activity设置不同的界面风格。

<activityandroid:name=".MainActivity"android:theme="@style/CustomTheme">...
</activity>

视图级主题: 在布局文件中,通过设置android:theme属性来为特定的视图或视图组应用主题。这种方式可以使得开发者对应用的某个部分进行样式定制,而不影响其他部分。

<LinearLayoutandroid:theme="@style/CustomTheme"...>...
</LinearLayout>

除了静态地在XML文件中应用主题,Android还允许开发者动态地通过代码来切换主题。这可以通过调用ActivitysetTheme()方法来实现,通常在onCreate()方法中设置。

@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setTheme(R.style.CustomTheme);setContentView(R.layout.activity_main);
}

通过这种方式,开发者可以根据用户的偏好或应用的不同状态来动态改变应用的主题,从而提供更加丰富的用户体验。

4. 主题属性详解

4.1 颜色属性

Android主题中的颜色属性是定义应用视觉风格的关键元素之一。这些颜色属性通常用于设置应用的背景、文本颜色、控件颜色等。以下是一些常用的颜色属性及其应用:

  • colorPrimary:用于定义应用的主要颜色,通常作为应用栏(AppBar)的背景颜色。根据Material Design的指导原则,这个颜色应该是品牌相关的颜色,并且在整个应用中保持一致性。例如,一个新闻应用可能将colorPrimary设置为品牌色,以确保用户在浏览内容时能够识别出应用。

  • colorPrimaryDark:通常用于状态栏的颜色。在Android 5.0(Lollipop)及以后的版本中,colorPrimaryDark用于状态栏的背景颜色,以确保状态栏的颜色与应用的主题色相协调。

  • colorAccent:用于定义应用中的强调颜色,通常用于操作按钮、选择项、开关等控件的激活状态。这个颜色应该与colorPrimary形成对比,以吸引用户的注意力。

  • android:navigationBarColor:定义导航栏的背景颜色。在支持导航栏的设备上,这个颜色可以改变导航栏的外观,以匹配应用的主题风格。

  • android:windowBackground:定义应用窗口的背景颜色。这个颜色通常用于设置应用的默认背景色,可以为应用提供一个统一的视觉背景。

4.2 字体属性

Android主题中的字体属性允许开发者自定义应用中的字体样式,包括字体系列、字重、字号等。以下是一些常用的字体属性:

  • android:textViewStyle:用于定义TextView的默认样式,包括字体系列、字重、字号等。通过设置这个属性,开发者可以确保应用中的所有TextView都遵循一致的字体风格。

  • android:buttonStyle:用于定义Button的默认样式,包括字体系列、字重、字号等。这个属性可以确保应用中的所有按钮都具有统一的字体样式。

  • android:editTextStyle:用于定义EditText的默认样式,包括字体系列、字重、字号等。这个属性可以确保用户在输入文本时获得一致的字体体验。

4.3 控件相关属性

除了颜色和字体属性,Android主题还提供了一些用于控制控件行为和样式的属性。以下是一些常用的控件相关属性:

  • android:listPreferredItemHeight:定义列表项的首选高度。这个属性可以用于确保列表项在不同的设备和屏幕尺寸上保持一致的高度。

  • android:actionBarSize:定义动作栏(ActionBar)的高度。通过设置这个属性,开发者可以确保动作栏在不同的设备和屏幕尺寸上保持一致的尺寸。

  • android:homeAsUpIndicator:定义导航抽屉(Navigation Drawer)中的“返回首页”图标。这个属性可以用于自定义导航抽屉的行为和样式。

通过合理配置这些属性,开发者可以创建出既美观又符合用户体验的Android应用界面。

5. 系统主题与自定义主题

5.1 系统内置主题

Android系统提供了一系列的内置主题,这些主题旨在为开发者提供快速的样式实现,同时也为应用提供一个一致的用户体验。系统内置主题通常与Material Design紧密集成,确保应用界面的现代化和直观性。

  • Material Design 主题:如Theme.MaterialTheme.Material.LightTheme.Material.Dialog等,这些主题遵循Material Design设计语言,提供了丰富的视觉效果和流畅的动画过渡。
  • Holo 主题:虽然在Android 5.0(Lollipop)之后逐渐被Material Design主题取代,但Holo主题如Theme.HoloTheme.Holo.Light等仍然存在于旧版本的Android系统中,它们提供了一种与众不同的视觉风格。
  • 设备默认主题:如Theme.DeviceDefaultTheme.DeviceDefault.Light等,这些主题旨在与设备的外观和感觉保持一致,为开发者提供了一种简单的方式来适配设备制造商的默认设计。

系统内置主题的优势在于它们的广泛兼容性和即时可用性,开发者可以直接在AndroidManifest.xml中引用这些主题,或者在styles.xml中继承它们来创建自定义主题。

5.2 自定义主题方法

尽管系统内置主题提供了丰富的样式选择,但在许多情况下,开发者需要根据品牌指南或特定的设计需求来创建自定义主题。以下是创建自定义主题的几种方法:

  • 继承系统主题:通过在styles.xml中定义新主题并指定一个父主题,开发者可以继承系统主题的属性并进行扩展或覆盖。这种方法的优点是可以保留系统主题的许多默认行为,同时允许进行一定程度的定制。
<style name="CustomTheme" parent="Theme.AppCompat.Light.DarkActionBar"><item name="colorPrimary">@color/colorPrimary</item><item name="colorPrimaryDark">@color/colorPrimaryDark</item><item name="colorAccent">@color/colorAccent</item>
</style>
  • 完全自定义主题:如果需要彻底改变应用的外观和风格,开发者可以创建一个不继承任何系统主题的新主题。这涉及到定义所有颜色、字体、控件样式等属性,以确保应用的一致性和个性化。
<style name="CustomTheme" ><item name="android:windowBackground">@color/background_custom</item><item name="android:textColor">@color/text_custom</item><item name="android:buttonStyle">@style/CustomButtonStyle</item>
</style>
  • 动态主题切换:为了提供更好的用户体验,开发者可以实现动态主题切换功能,允许用户在运行时更改应用的主题。这通常涉及到在代码中动态设置主题,或者使用SharedPreferences来存储用户的主题选择,并在应用启动时应用。
@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);if (userPrefersDarkTheme) {setTheme(R.style.DarkTheme);} else {setTheme(R.style.LightTheme);}setContentView(R.layout.activity_main);
}

自定义主题为开发者提供了无限的创造空间,使他们能够设计出独特且吸引人的应用界面。然而,这也要求开发者对Android的样式和主题系统有深入的理解,并能够精心设计和实现每一个细节。

6. 深色主题支持

6.1 深色主题优势

深色主题在Android平台上的引入,不仅丰富了用户的视觉体验,还带来了一系列实际优势,这些优势在用户体验和设备性能方面都有所体现。

  • 节能降耗:根据Android开发者文档,深色主题能够在OLED屏幕上实现更大幅度的电量节省。由于OLED屏幕的每个像素点都能独立发光,因此在显示深色内容时,可以通过关闭更多的像素来达到节能效果。实验数据显示,在OLED屏幕上使用深色主题,相较于浅色主题,能够节省大约41%的电量消耗。

  • 改善可视性:深色主题为弱视和对强光敏感的用户提供了更好的可视性。在光线较暗的环境中,深色背景能够减少屏幕发出的亮光对眼睛的刺激,从而降低视疲劳的风险,提高阅读和使用的舒适度。

  • 增强用户体验:深色主题提供了一种更为柔和的视觉体验,尤其在夜间或暗光环境下,能够减少屏幕亮度对用户眼睛的刺激,提升整体的用户体验。此外,深色主题的一致性也有助于减少用户在不同应用间切换时的视觉不适。

6.2 实现深色主题

在Android平台上实现深色主题,开发者可以采取多种方法,以确保应用界面在深色模式下的表现和兼容性。

  • 使用系统提供的深色主题:Android 10及以上版本提供了系统级的深色主题支持。开发者可以通过设置应用的主题为Theme.AppCompat.DayNightTheme.MaterialComponents.DayNight,使应用能够根据系统设置自动切换到深色主题。

  • 自定义深色主题资源:为了适配深色主题,开发者需要为应用中的各种颜色属性定义深色模式下的对应资源。这通常涉及到在res/values-night目录下创建对应的颜色资源文件,并定义适用于深色背景的颜色值。

  • 利用Force Dark功能:Android 10引入了Force Dark功能,该功能能够自动将应用的浅色主题转换为深色主题。通过在应用主题中设置android:forceDarkAllowed="true",系统会自动调整视图的颜色,以适应深色背景。然而,Force Dark可能不适用于所有情况,特别是在需要精确控制颜色和样式的场景下,开发者可能需要手动进行适配。

  • 动态切换主题:开发者还可以实现根据用户偏好动态切换主题的功能。这可以通过编程方式在运行时更改Activity的Theme,或者使用SharedPreferences来存储用户的主题选择,并在应用启动时应用。

  • 测试和优化:在实现深色主题后,开发者需要对应用进行充分的测试,确保在深色模式下,应用的所有元素都能正确显示,且不影响用户体验。这可能涉及到对布局、颜色、图标和字体等各方面的调整和优化。

通过上述方法,开发者可以确保应用在深色模式下提供良好的用户体验,同时充分利用深色主题带来的优势。

7. Material Design 3 (Material You)

7.1 动态颜色功能

Material Design 3(Material You)的核心特性之一是动态颜色功能,这一功能通过从用户的壁纸中提取颜色来生成应用的主题颜色,从而为用户提供更加个性化的视觉体验。动态颜色不仅增强了应用的美观度,还有助于保持品牌识别度和用户界面的一致性。

动态颜色的工作原理如下:

  • 系统算法分析用户选定的壁纸,提取出关键颜色。
  • 这些关键颜色随后扩展成一个由13种不同色调组成的调色板,以适应不同的设计场景和组件需求。
  • 每个色调都可以根据应用的需要进行调整,以确保在不同设备和光照条件下都能保持良好的可读性和美观度。
  • 动态颜色能够适应日间和夜间模式的变化,自动调整色调以适应用户的使用环境。

根据用户的研究和反馈,动态颜色功能在Android 12及以上版本的设备中得到了广泛的应用,它不仅提升了用户体验,还使得应用界面更加生动和富有表现力。例如,一项用户调查显示,超过70%的用户认为动态颜色使得他们的设备更加个性化,同时也更容易与其他用户区分开来。

7.2 主题生成器工具

为了帮助开发者和设计师更容易地实现Material You的设计语言,Google提供了一系列的主题生成器工具。这些工具允许用户通过简单的图形界面来选择和定制颜色、字体和形状等设计元素,从而快速生成符合Material Design 3规范的主题。

主题生成器工具的主要特点包括:

  • 可视化操作:用户可以通过拖放和颜色选择器来直观地选择和调整主题颜色,无需手动编写代码。
  • 实时预览:工具提供实时预览功能,用户可以立即看到更改设计元素后的效果,确保所选颜色和样式符合预期。
  • 多平台支持:主题生成器工具支持Android、Web和Flutter等多个平台,使得跨平台应用的开发更加便捷。
  • 代码导出:用户在完成主题设计后,可以将生成的主题导出为代码,直接应用到项目中,支持XML、CSS和Compose等多种格式。

例如,Material Theme Builder是一个流行的在线工具,它允许用户选择不同的颜色方案,并生成对应的Material You主题。用户可以通过这个工具来定制Primary、Secondary和Tertiary等颜色,以及选择不同的字体和形状风格。完成设计后,用户可以下载生成的主题代码,并将其应用到自己的项目中。

根据开发者社区的反馈,这些主题生成器工具极大地简化了Material You主题的创建过程,提高了开发效率,并且帮助设计师和开发者更好地遵循Material Design的设计原则。

8. 总结

本篇介绍了Android中的主题(Theme)和样式(Style)的概念、作用及其区别。主题用于定义应用的整体视觉风格,影响整个应用或特定Activity的外观,而样式则主要应用于单个视图,定义其外观属性。也还探讨了如何创建和应用主题,强调了动态主题支持的重要性,尤其是在深色模式下的应用。此外,还提到了Material Design 3(Material You)的动态颜色功能,强调其个性化和用户体验的提升。通过合理使用主题和样式,开发者可以创建一致且吸引人的用户界面。

     

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/882633.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

web API基础

作用和分类 作用: 就是使用 JS 去操作 html 和浏览器 分类&#xff1a; DOM (文档对象模型)、 BOM &#xff08;浏览器对象模型&#xff09; 什么是DOM DOM (Document Object Model) 译为文档对象模型&#xff0c;是 HTML 和 XML 文档的编程接口。 HTML DOM 定义了访问和操作 …

mingw64的Windows安装及配置教程gcc、g++等

mingw64.rar 链接&#xff1a;https://pan.baidu.com/s/18YrDRyi5NHtqnTwhJG6PuA 提取码&#xff1a;pbli &#xff08;免费永久有效&#xff0c;免安装&#xff0c;解压后配置环境变量即可使用&#xff09; 1 下载 解压后随便放到一个地方&#xff1a; 复制“bin”路径&am…

重磅:中国首个SVG技术标准发布,计育韬老师主笔起草

编辑搜图 中华人民共和国《融媒体 SVG 交互设计技术规范》是由复旦大学奇点新媒体研究中心等单位牵头&#xff0c;学科带头人计育韬等人主要起草&#xff0c;并于 2024 年 8 月起面向全社会行业从业者发布的最高技术标准。该标准前身为 2016 年计育韬与微信团队合作拟定的《SV…

置分辨率设置多显示器的时候提示, 某些设置由系统管理员进行管理

遇到的问题 设置分辨率设置多显示器的时候提示&#xff08;如下图所示&#xff09;&#xff1a; 某些设置由系统管理员进行管理 解决方法 先试试这个方法&#xff1a; https://answers.microsoft.com/zh-hans/windows/forum/all/%E6%9B%B4%E6%94%B9%E5%88%86%E8%BE%A8%E7%8…

强大的Python必备库,你知道几个?建议收藏!

在Python的世界里&#xff0c;库的丰富性让开发者的工作变得轻松而高效。那么&#xff0c;你知道哪些强大的Python必备库吗&#xff1f; 面对众多的Python库&#xff0c;如何选择适合自己的工具来提升开发效率和代码质量&#xff1f;&#xff0c;丰富多样的库如同一个个强大的…

AnaTraf | 提升网络性能:深入解析网络关键指标监控、TCP重传与TCP握手时间

AnaTraf 网络性能监控系统NPM | 全流量回溯分析 | 网络故障排除工具 在当今的数字化时代&#xff0c;网络的稳定性和性能对企业的运营效率至关重要。无论是内部通信、应用程序的运行&#xff0c;还是对外提供服务&#xff0c;网络都发挥着关键作用。对于网络工程师或IT运维人员…

EasyX图形库的安装

前言 EasyX是一个图形库&#xff0c;可以用来做一些c/c小游戏&#xff0c;帮助学习。 一、进入EasyX官网 https://easyx.cn/ 二、点击下载EasyX 三、下载好后以管理员身份运行它 四、点击下一步 五、然后它会自动检测你的编辑器&#xff0c;用哪个就在哪个点安装 六、安装成功…

【linux问题】Linux命令行终端窗口的输出,显示不全问题

Linux命令行终端窗口的输出&#xff0c;显示不全问题 问题&#xff1a; 图中显示的是一个Linux命令行终端窗口&#xff0c; nmcli dev wifi 是一个命令——列出所有能用的Wi-Fi。 执行命令后&#xff0c;窗口输出了显示了所有能用的Wi-Fi网络列表。 但是在每一行末尾有一个“…

KPaaS:基于微服务架构的低代码平台

基于微服务架构的低代码平台是当前企业数字化转型的重要工具。通过将微服务架构与低代码平台结合&#xff0c;可以实现高效、灵活且可扩展的应用开发。在当今数字化转型的浪潮中&#xff0c;企业面临着诸多挑战&#xff0c;其中IT资源有限以及对高效开发的需求尤为突出。KPaaS业…

AI一键生成钢铁是怎样炼成的ppt!用这2个工具轻松拿捏ppt制作!

钢铁是怎样炼成的&#xff0c;是中小学语文新课标必读书目&#xff0c;它是由前苏联作家尼古拉奥斯特洛夫斯基于1930年至1934年写成的半自传体长篇小说&#xff0c;全书详细记叙了保尔柯察金于20世纪初期的成长历程。 对于每个接受过九年义务教育的大小朋友来说&#xff0c;这…

漏洞挖掘JS构造新手向

前置思路文章 JS逆向混淆前端对抗 油猴JS逆向插件 JS加解密之mitmproxy工具联动Burp JS挖掘基础 伪协议 JavaScript伪协议是一种在浏览器中模拟网络请求的方法。它使用window.XMLHttpRequest对象或fetch()方法来模拟发送HTTP请求&#xff0c;而不是通过实际的网络请求来获…

碰到这个问题请更新或重新安装fastapi版本

ValueError: too many values to unpack (expected 2) ERROR: Exception in ASGI application Traceback (most recent call last) File "/usr/local/lib/python3.8/site-packages… Ubuntu&#xff0c;容器中&#xff0c; 碰到上面这个问题&#xff0c;请更新fastapi的版…

微信小程序——编写一个表白墙小程序

一、前期准备 注册微信小程序账号 在微信公众平台上注册小程序账号&#xff0c;获取小程序的 AppID。 安装开发工具 下载并安装微信开发者工具&#xff0c;用于小程序的开发、调试和预览。 二、界面设计 首页 展示最新的表白内容列表&#xff0c;每条表白可以包括发布者昵称、…

⌈ 传知代码 ⌋ 无监督动画中关节动画的运动表示

&#x1f49b;前情提要&#x1f49b; 本文是传知代码平台中的相关前沿知识与技术的分享~ 接下来我们即将进入一个全新的空间&#xff0c;对技术有一个全新的视角~ 本文所涉及所有资源均在传知代码平台可获取 以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦&#x…

开发规范 - mac系统1小时装机极速装机开发环境

idea 官网下载&#xff0c;然后想办法破解 idea必备配置 设置自动import IDEA插件安装 idea必备插件 maven helperlombokMybatisX jdk配置 jdk不用单配配置&#xff0c;在idea中&#xff0c;选择一个语言环境&#xff08;jdk8/jdk11/jdk17…&#xff09;,然后默认下载j…

unity学习笔记-Text mesh Pro

Text mesh Pro组件 组件使用的大致流程细节导入之后字体没有显示可能一可能二 注意事项 好久没更了…最近在学习使用别人的框架进行开发&#xff0c;坑也不少&#xff0c;不过学习到了很多设计思维。 言归正传。忘了是什么是时候的版本开始&#xff0c;unity多了这个组件&#…

WPF入门_02依赖属性

1、依赖属性主要有以下三个优点 1)依赖属性加入了属性变化通知、限制、验证等功能。这样可以使我们更方便地实现应用,同时大大减少了代码量 2)节约内存:在WinForm中,每个UI控件的属性都赋予了初始值,这样每个相同的控件在内存中都会保存一份初始值。而WPF依赖属性很好地…

uiautomatorviewer安卓9以上正常使用及问题处理

一、安卓9以上使用uiautomatorviewer问题现象 打开Unexpected error while obtaining UI hierarchy 问题详情 Unexpected error while obtaining UI hierarchy java.lang.reflect.InvocationTargetException 二、问题处理 需要的是替换对应D:\software\android-sdk-windows…

python将照片集导出成视频

shigen坚持更新文章的博客写手&#xff0c;记录成长&#xff0c;分享认知&#xff0c;留住感动。个人IP&#xff1a;shigen 背景 一个安静的下午&#xff0c;看着电脑里乱七八糟的照片&#xff0c;有大有小&#xff0c;宽高不一&#xff0c;突然想找个方式把他们统一起来&…

PC企业微信自动回复,群发管理,定时发送,朋友圈

服务提供了丰富的API和SDK&#xff0c;可以在企微的功能之上进行应用开发和功能扩展 自建应用可以调用企微hook或协议提供的接口来实现数据交互&#xff0c;可以直接调用hook或协议接口提供的功能来进行消息的发送与接收、用户管理、应用管理等操作&#xff0c;通过接口可以实…