AndroidStudio中.9图的制作

本文详细介绍如何使用Android Studio创建9-Patch图片,并对图片进行正确的标记以实现自适应拉伸效果。步骤包括:选择PNG图片,转换为9-Patch格式,划线设置拉伸区域等。

1,用一张干净的png图片放在mipmap里面。

2,点击图片右键最后一项,create 9-patch file保存在drawable目录

3,对drawable里面生成的.9图进行划线,(注意:左和上划就可以,右边和下边不要划),直接鼠标左键划黑线,不要摁着ctrl划红线(因为这个错误耽搁好久)。 (左上分别代表图片纵向拉伸只拉伸该部分和图片横向拉伸只拉伸该部分)

4,保存并删除mipmap里面的图片,在xml里面使用。

              


 解释:1号黑色条位置向下覆盖的区域表示图片横向拉伸时,只拉伸该区域 
                        2号黑色条位置向右覆盖的区域表示图片纵向拉伸时,只拉伸该区域   
                        3号黑色条位置向左覆盖的区域表示图片纵向显示内容的区域 
                        4号黑色条位置向上覆盖的区域表示图片横向显示内容的区域 
                        没有黑色条的位置覆盖的区域是图片拉伸时保持不变(比如,如果图片的四角为弧形的时候,当图片被任意拉伸时,四角的弧形都不会发生改变)
         5、如果失误多选了部分,可按住shift键,点击鼠标左键去掉黑色条 
         6、右边3个黑色图形区域为显示当前拉伸效果 

### 如何在 Android Studio 中创建九宫格 (.9 片) #### 什么是 .9 片? `.9` 片是一种特殊的 PNG 文件,用于定义可拉伸区域和内容区域。它允许开发者指定哪些部分可以被拉伸而不会失真,从而适应不同的屏幕尺寸和分辨率。 --- #### 创建 `.9` 片的步骤 1. **准备原始片** 需要一张适合用作背景或其他 UI 元素的 PNG 像文件[^2]。确保像清晰且无损。 2. **重命名文件** 将原始 PNG 文件名改为 `*.9.png` 的形式。例如,如果原文件名为 `background.png`,则将其更名为 `background.9.png`。 3. **编辑 `.9` 片** 使用工具(如 Android Studio 或第三方软件)打开并编辑 `.9` 片: - 在片四周添加一条细线框。 - 定义 **拉伸区域** 和 **内容区域**: - 拉伸区域:通过绘制水平和垂直线条来标记片中可以安全拉伸的部分。 - 内容区域:标记出显示实际内容的安全范围,防止重要内容被裁剪或变形。 4. **保存并导入项目** 将编辑好的 `.9` 片放置到项目的 `drawable` 资源目录下。路径通常为 `..\projectname\app\src\main\res\drawable`。 5. **使用 `.9` 片** 在布局文件中引用该片作为背景或按钮资源。例如,在 XML 布局中设置如下属性: ```xml android:background="@drawable/background" ``` --- #### 示例代码 以下是实现九宫格功能的一个简单例子: ##### activity_main.xml (布局文件) ```xml <GridLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/gridLayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:columnCount="3" android:rowCount="3"> <!-- 添加子视 --> </GridLayout> ``` ##### item.xml (单个网格项布局) ```xml <ImageView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="0dp" android:layout_height="0dp" android:layout_weight="1" android:scaleType="centerCrop" android:adjustViewBounds="true"/> ``` ##### MainActivity.java (Java 主逻辑) ```java import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.widget.GridLayout; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); GridLayout gridLayout = findViewById(R.id.gridLayout); // 动态加载片 for(int i=0; i<9;i++) { ImageView imageView = new ImageView(this); imageView.setImageResource(R.drawable.background); // 替换为你的 .9 片资源 GridLayout.LayoutParams params = new GridLayout.LayoutParams(); params.width = getResources().getDisplayMetrics().widthPixels / 3; params.height = params.width; imageView.setLayoutParams(params); gridLayout.addView(imageView); } } } ``` --- #### 注意事项 - 确保 `.9` 片的边界线宽度不超过 1px,否则可能导致渲染异常。 - 如果需要更复杂的交互效果,可以通过自定义 View 来扩展功能[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值