# 在 Android 上管理演示文稿中的 SmartArt 图形

> 使用 Aspose.Slides for Android 自动化 PowerPoint SmartArt 的创建、编辑和样式设置，提供简洁的 Java 代码示例和注重性能的指南。

Source: https://docs.aspose.com/slides/zh/androidjava/manage-smartart-shape/
Updated: 2025-12-16


## **创建 SmartArt 形状**
Aspose.Slides for Android via Java 提供了用于创建 SmartArt 形状的 API。要在幻灯片中创建 SmartArt 形状，请按照以下步骤操作：

1. 创建 [Presentation](https://reference.aspose.com/slides/androidjava/com.aspose.slides/Presentation) 类的实例。
2. 通过使用其索引获取幻灯片的引用。
3. 通过设置它的 [LayoutType](https://reference.aspose.com/slides/androidjava/com.aspose.slides/SmartArtLayoutType) 来[Add a SmartArt shape](https://reference.aspose.com/slides/androidjava/com.aspose.slides/IShapeCollection#addSmartArt-float-float-float-float-int-)。
4. 将修改后的演示文稿另存为 PPTX 文件。
```java
// 实例化 Presentation 类
Presentation pres = new Presentation();
try {
    // 获取第一张幻灯片
    ISlide slide = pres.getSlides().get_Item(0);
    
    // 添加 SmartArt 形状
    ISmartArt smart = slide.getShapes().addSmartArt(0, 0, 400, 400, SmartArtLayoutType.BasicBlockList);
    
    // 保存演示文稿
    pres.save("SimpleSmartArt.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}
```


|![todo:image_alt_text](https://i.imgur.com/A7PUdeV.png)|
| :- |
|**图：已添加到幻灯片的 SmartArt 形状**|

## **在幻灯片上访问 SmartArt 形状**
以下代码将用于访问演示文稿幻灯片中添加的 SmartArt 形状。在示例代码中，我们将遍历幻灯片中的每个形状，并检查其是否为 [SmartArt](https://reference.aspose.com/slides/androidjava/com.aspose.slides/SmartArt) 形状。如果形状是 SmartArt 类型，则我们会将其强制转换为 [**SmartArt**](https://reference.aspose.com/slides/androidjava/com.aspose.slides/SmartArt) 实例。
```java
// 加载所需的演示文稿
Presentation pres = new Presentation("AccessSmartArtShape.pptx");
try {
    // 遍历第一张幻灯片中的每个形状
    for (IShape shape : pres.getSlides().get_Item(0).getShapes())
    {
        // 检查形状是否为 SmartArt 类型
        if (shape instanceof ISmartArt)
        {
            // 将形状强制转换为 SmartArtEx
            ISmartArt smart = (ISmartArt)shape;
            System.out.println("Shape Name:" + smart.getName());
        }
    }
} finally {
    if (pres != null) pres.dispose();
}
```


## **使用特定布局类型访问 SmartArt 形状**
以下示例代码可帮助访问具有特定 LayoutType 的 [SmartArt](https://reference.aspose.com/slides/androidjava/com.aspose.slides/SmartArt) 形状。请注意，SmartArt 的 LayoutType 是只读的，仅在添加 [SmartArt](https://reference.aspose.com/slides/androidjava/com.aspose.slides/SmartArt) 形状时设置，无法更改。

1. 创建 [Presentation](https://reference.aspose.com/slides/androidjava/com.aspose.slides/Presentation) 类的实例并加载包含 SmartArt 形状的演示文稿。
2. 通过使用其索引获取第一张幻灯片的引用。
3. 遍历第一张幻灯片中的每个形状。
4. 检查形状是否为 [SmartArt](https://reference.aspose.com/slides/androidjava/com.aspose.slides/SmartArt) 类型，如果是 SmartArt，则将选定的形状强制转换为 SmartArt。
5. 检查具有特定 LayoutType 的 SmartArt 形状，并在之后执行所需的操作。
```java
Presentation pres = new Presentation("AccessSmartArtShape.pptx");
try {
    // 遍历第一张幻灯片中的每个形状
    for (IShape shape : pres.getSlides().get_Item(0).getShapes())
    {
        // 检查形状是否为 SmartArt 类型
        if (shape instanceof ISmartArt)
        {
            // 将形状强制转换为 SmartArtEx
            ISmartArt smart = (ISmartArt) shape;

            // 检查 SmartArt 布局
            if (smart.getLayout() == SmartArtLayoutType.BasicBlockList)
            {
                System.out.println("Do some thing here....");
            }
        }
    }
} finally {
    if (pres != null) pres.dispose();
}
```


## **更改 SmartArt 形状样式**
在本例中，我们将学习为任意 SmartArt 形状更改快速样式。

1. 创建 [Presentation](https://reference.aspose.com/slides/androidjava/com.aspose.slides/Presentation) 类的实例并加载包含 SmartArt 形状的演示文稿。
2. 通过使用其索引获取第一张幻灯片的引用。
3. 遍历第一张幻灯片中的每个形状。
4. 检查形状是否为 [SmartArt](https://reference.aspose.com/slides/androidjava/com.aspose.slides/SmartArt) 类型，如果是 SmartArt，则将选定的形状强制转换为 SmartArt。
5. 查找具有特定 Style 的 SmartArt 形状。
6. 为 SmartArt 形状设置新的 Style。
7. 保存演示文稿。
```java
// 实例化 Presentation 类
Presentation pres = new Presentation("SimpleSmartArt.pptx");
try {
    // 获取第一张幻灯片
    ISlide slide = pres.getSlides().get_Item(0);
    
    // 遍历第一张幻灯片中的每个形状
    for (IShape shape : slide.getShapes()) 
    {
        // 检查形状是否为 SmartArt 类型
        if (shape instanceof ISmartArt) 
        {
            // 将形状强制转换为 SmartArtEx
            ISmartArt smart = (ISmartArt) shape;
    
            // 检查 SmartArt 样式
            if (smart.getQuickStyle() == SmartArtQuickStyleType.SimpleFill) {
                // 更改 SmartArt 样式
                smart.setQuickStyle(SmartArtQuickStyleType.Cartoon);
            }
        }
    }
    // 保存演示文稿
    pres.save("ChangeSmartArtStyle.pptx", SaveFormat.Pptx);
} finally {
    pres.dispose();
}
```


|![todo:image_alt_text](https://i.imgur.com/A7PUdeV.png)|
| :- |
|**图：已更改样式的 SmartArt 形状**|

## **更改 SmartArt 形状颜色样式**
在本例中，我们将学习为任意 SmartArt 形状更改颜色样式。以下示例代码将访问具有特定颜色样式的 SmartArt 形状并更改其样式。

1. 创建 [Presentation](https://reference.aspose.com/slides/androidjava/com.aspose.slides/Presentation) 类的实例并加载包含 SmartArt 形状的演示文稿。
2. 通过使用其索引获取第一张幻灯片的引用。
3. 遍历第一张幻灯片中的每个形状。
4. 检查形状是否为 [SmartArt](https://reference.aspose.com/slides/androidjava/com.aspose.slides/SmartArt) 类型，如果是 SmartArt，则将选定的形状强制转换为 SmartArt。
5. 查找具有特定 Color Style 的 SmartArt 形状。
6. 为 SmartArt 形状设置新的 Color Style。
7. 保存演示文稿。
```java
// 实例化 Presentation 类
Presentation pres = new Presentation("SimpleSmartArt.pptx");
try {
    // 获取第一张幻灯片
    ISlide slide = pres.getSlides().get_Item(0);
    
    // 遍历第一张幻灯片中的每个形状
    for (IShape shape : slide.getShapes()) 
    {
        // 检查形状是否为 SmartArt 类型
        if (shape instanceof ISmartArt) 
        {
            // 将形状强制转换为 SmartArtEx
            ISmartArt smart = (ISmartArt) shape;
    
            // 检查 SmartArt 颜色类型
            if (smart.getColorStyle() == SmartArtColorType.ColoredFillAccent1) {
                // 更改 SmartArt 颜色类型
                smart.setColorStyle(SmartArtColorType.ColorfulAccentColors);
            }
        }
    }
    // 保存演示文稿
    pres.save("ChangeSmartArtColorStyle.pptx", SaveFormat.Pptx);
} finally {
    pres.dispose();
}
```


|![todo:image_alt_text](https://i.imgur.com/v2Hwocs.png)|
| :- |
|**图：已更改颜色样式的 SmartArt 形状**|

## **FAQ**

**我可以将 SmartArt 作为单个对象进行动画处理吗？**

可以。SmartArt 是一种形状，因此您可以像对其他形状一样，通过动画 API（进入、退出、强调、运动路径）应用[标准动画](/slides/zh/androidjava/powerpoint-animation/)。

**如果不知道内部 ID，如何在幻灯片上找到特定的 SmartArt？**

设置并使用替代文本（AltText），然后按该值搜索形状——这是定位目标形状的推荐方法。

**我可以将 SmartArt 与其他形状组合吗？**

可以。您可以将 SmartArt 与其他形状（图片、表格等）进行组合，然后[操作该组合](/slides/zh/androidjava/group/)。

**如何获取特定 SmartArt 的图像（例如用于预览或报告）？**

导出形状的缩略图/图像；该库能够将[单个形状渲染](/slides/zh/androidjava/create-shape-thumbnails/)为光栅文件（PNG/JPG/TIFF）。

**将整个演示文稿转换为 PDF 时，SmartArt 的外观是否会保持？**

会。渲染引擎针对[PDF 导出](/slides/zh/androidjava/convert-powerpoint-to-pdf/)实现高保真，并提供多种质量和兼容性选项。
