在Android开发中,.9图片(NinePatch图)是一种可伸缩的PNG格式图片,通过定义拉伸区域和内容区域来适配不同屏幕尺寸。以下是详细使用方法和注意事项:
1. 创建与编辑工具
- 使用Android Studio内置的Draw 9-patch工具(路径:`右键图片 → 选择`Create 9-Patch`),或通过第三方工具(如Panda等)编辑黑边标记。
- 上方和左侧的黑边定义拉伸区域(Scale Area),图片仅在该区域被拉伸;右侧和底部黑边定义内容区域(Padding Area),文本或子视图会被约束在此区域内。
2. 代码中引用
- 将.9图片放入`res/drawable`目录,直接通过`@drawable/文件名`引用,无需写`.9`后缀。例如:
xml
android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/nine_patch_bg" /> 3. 注意事项 - 黑边必须纯黑(#000000),否则编译报错。 - 文件扩展名必须为`.9.png`,且需保留原始PNG的透明通道。 - 拉伸区域避免包含圆角或渐变,否则拉伸后可能变形。 4. 高级适配技巧 - 多分辨率适配:为不同DPI(如`drawable-hdpi`、`drawable-xhdpi`)提供对应的.9图,但缩放比例需一致。 - 动态内容区域:通过代码动态调整内容区域(使用`NinePatchDrawable.setPadding()`)。 - 与View结合:常用作`TextView`背景,确保文字在内容区域内居中显示。 5. 常见问题排查 - 图片未拉伸:检查黑边是否正确定义,或确认布局宽高是否为`wrap_content`。 - 边缘模糊:拉伸区域过小会导致像素重复,建议至少保留2像素宽的黑边。 - 编译失败:检查文件命名或黑边颜色是否符合规范。 扩展知识:.9图原理是通过添加1像素宽的黑边作为元数据标记,Android系统解析这些标记实现动态缩放,相比普通图片更节省资源和内存。在Material Design中,常用作按钮背景或对话框阴影优化。