# dynamicResource

public static int dynamicResource(Context context, int newVersionAttrId, int oldVersionResId)

动态获取主题资源（基于 Context 解析）

此方法根据当前激活的主题自动选择对应的资源：

- 现代化主题：从主题属性（Theme Attribute）中动态解析资源 ID，支持多主题切换
- 传统主题：直接返回指定的固定资源 ID，保持向后兼容

适用场景：

- 在 Java/Kotlin 代码中动态获取需要主题适配的资源
- 需要在运行时根据当前主题选择不同资源的场景
- 自定义 View 或 Adapter 中需要加载主题相关的图片、颜色等资源

使用示例：

    // 获取背景资源：现代化主题使用主题属性，传统主题使用固定资源
    int bgResId = IMKitThemeManager.dynamicResource(
        context,
        R.attr.rc_conversation_bg,      // 主题属性
        R.drawable.rc_old_bg            // 固定资源（用于传统主题）
    );
    view.setBackgroundResource(bgResId);

    // 获取颜色资源
    int colorResId = IMKitThemeManager.dynamicResource(
        context,
        R.attr.rc_text_primary,         // 主题属性
        R.color.rc_old_text_color       // 固定颜色（用于传统主题）
    );
    textView.setTextColor(getResources().getColor(colorResId));

Content copied to clipboard

#### Return

解析后的资源 ID

#### Parameters

context

上下文（用于解析主题属性，不能为 null）

newVersionAttrId

主题属性 ID（如 R.attr.rc_xxx）

oldVersionResId

固定资源 ID（如 R.drawable.xxx 或 R.color.xxx，用于传统主题）

public static int dynamicResource(int newVersionResId, int oldVersionResId)

动态获取主题资源（无需 Context 的快速版本）

此方法是 dynamicResource 的轻量级版本，适用于 XML 布局文件或无需立即解析的场景。

- 现代化主题：直接返回主题属性 ID，由系统在渲染时自动解析
- 传统主题：返回固定资源 ID

适用场景：

- XML 布局文件中需要根据主题类型选择资源的场景（如 android:background）
- 延迟解析场景，资源 ID 会在后续使用时由 Android 系统自动解析
- 无法获取 Context 但需要资源 ID 的场景

使用示例：

    // 在代码中使用（系统会自动解析属性）
    view.setBackgroundResource(
        IMKitThemeManager.dynamicResource(R.attr.rc_bg, R.drawable.rc_old_bg)
    );

    // 注意：返回的可能是属性 ID，需要系统自动解析
    // 如果需要立即获取解析后的资源，请使用带 Context 参数的版本

Content copied to clipboard

注意：此方法返回的是属性 ID（现代化主题）或资源 ID（传统主题），如果需要立即使用解析后的实际资源 ID，请使用 dynamicResource 方法。

#### Return

现代化主题返回资源 ID；传统主题返回资源 ID

#### Parameters

newVersionResId

主题资源 ID（如 R.drawable.rc_xxx 或 R.color.rc_xxx）

oldVersionResId

固定资源 ID（如 R.drawable.xxx 或 R.color.xxx，用于传统主题）