Android中公用属性的抽取

本文介绍了在Android开发中如何通过抽取公共属性减少代码量的方法。通过定义样式(Style),可以统一多个视图组件的属性设置,提高开发效率并保持界面一致性。文章详细展示了如何创建和应用样式,并解释了局部属性与样式属性的优先级问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Android开发中可能会遇到很多页面都是差不多的的控件,属性很多都重复了,那么今天就来介绍下,怎样抽取公共属性,减少代码量

    <style name="SettingItemStyle">
        <item name="android:layout_width">match_parent</item>
        <item name="android:layout_height">wrap_content</item>
    </style>

在这里抽取了layout_width跟 Layout_height

    <john.com.mobilesafe.view.SettingItemView
        android:id="@+id/setting_update_item"
        style="@style/SettingItemStyle"    <!-- 注意这段代码 -->
        android:layout_marginTop="10dp"
        android:background="@drawable/setting_item_selector_top"
        john:title="设置自动更新" />

    <john.com.mobilesafe.view.SettingItemView
        android:id="@+id/setting_interceptor_item"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/setting_item_selector_bottom"
        john:title="设置骚扰拦截" />

在上面布局中使用了抽取的Style SettingItemStyle

这里写图片描述

还有一个需要注意的是,局部的属性优先级会大于定义在Style中的属性,例如如果在第一个SettingView中设置了android:layout_width=50dp,那么SettingView的宽度就是50dp,而不是填充父控件。

可以看到完全是一样的效果,小伙伴们快去试试把

### 如何在 Java 中抽取公用代码的最佳实践 为了提高代码复用性和可维护性,在 Java 项目中可以采用多种策略来抽取公共代码。 #### 使用工具类或静态方法 对于一些通用的功能,比如日期处理、字符串操作等,可以通过创建工具类并定义为`public static`的方法来进行封装。这种方式简单明了,便于调用[^1]。 ```java public class StringUtils { public static String join(String[] strings, String delimiter) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < strings.length; ++i) { sb.append(strings[i]); if (i != strings.length - 1) { sb.append(delimiter); } } return sb.toString(); } } ``` #### 抽象基类与接口 当多个子类具有相似的行为模式时,应该考虑设计抽象父类或者接口。通过继承机制实现具体功能的同时也实现了行为上的共享[^2]。 #### 工厂模式 工厂模式是一种常见的设计模式,用于解决对象创建过程中复杂度较高的问题。它允许客户端无需知道具体的构造函数就能获取所需实例的对象。这有助于隐藏内部逻辑,并使得系统的灵活性更高[^3]。 #### 提取常量至配置文件 为了避免硬编码带来的不便以及潜在错误风险,建议把那些不会轻易改变的数据项作为外部资源管理起来,如数据库连接串、API URL地址等都应放置于properties文件或其他形式的配置中心里统一管控[^4]。 #### 利用泛型编程 适当运用泛型可以使程序更加灵活多变而不失严谨性;同时也能减少不必要的强制转换所带来的麻烦。特别是在集合框架方面表现尤为突出。 ```java class Box<T> { private T t; public void set(T t){ this.t=t; } public T get(){ return t; } } ``` #### 遵循DRY原则(Don't Repeat Yourself) 确保每一块业务逻辑只在一个地方被编写一次,其他地方都是对该部分代码的应用而非复制粘贴。这样不仅降低了冗余还方便后期修改维护工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值