Android中AS创建点9图片与使用

软件环境:Android  Studio 2.1.2win10家庭版电脑


.9图片,对于Android开发者而言,想必并不陌生。只是偶尔开发中涉及,难免因搁置太久,已忘却。今有重拾此知识,现亲测汇总,望于其他人有所助益!


一、.9概述

.9图片是andriod app开发里一种特殊的图片形式,文件的扩展名为:.9.png

作用:就是在图片拉伸的时候保证其不会失真。具体则是通过设置其四个“边框”处,是图片在指定位置进行水平/垂直拉伸并且指定其图片被覆盖内容的显示位置,从而使得图片的边角处不致失真而影响美观;

二、.9图片制作详解

1)打开AS,选择需要.9操作的图片,右击,Create 9-Patch file

《论Android开发AS创建点9图片》

AS将默认生成至当前文件夹中,如下图

《论Android开发AS创建点9图片》

双击打开,如下图

《论Android开发AS创建点9图片》

如果仅是如此,不对此.9图片做任何操作,其与一般图片无异。

下面是我的测试页面同布局,

《论Android开发AS创建点9图片》

2)将原图片(icon_dialog.png)作为TextView的背景,运行之后你会发现两个问题:

其一,你会发现右下角变得很模糊,影响美观

其二,就是“灯火辉煌”这几个文字显示的位置不对

此处不做运行结果截图展示。

3)了解AS单击.9图片之后的页面属性(*

《论Android开发AS创建点9图片》

标识1“Zoom”选项,是来放大或缩小“1号区域”中我们的图片,方便大家编辑;

标识2:“patch scale”选项,是来放大或缩小“2号区域”中我们的.9示例图片;

标识3“Show lock”选中该选项,把鼠标放到我们编辑过的图片上就会发现,在图片上显示了一个类似于对角线的东西,那个是锁,锁住了不可编辑的区域;

标识4“Show content”选项是在右边的查看区域中的图片显示我们需要拉伸的地方;

标识5:,“Show patches”选项是将降级过的图片的区域用其他颜色表示出来,方便我们查看;

标识6:“Show bad patches” 选中该选项就会出现红色的线条将我们需要拉伸的区域,圈起来,方便我们查看自己编辑过的需要拉伸的区域;

标识7:顶部:在水平拉伸的时候,保持其他位置不动,只在这个点的区域做无限的延伸;

标识8:左边:在竖直拉伸的时候,保持其他位置不动,只在这个点的区域做无限的延伸;

标识9:底部:在水平拉伸的时候,指定图片里的内容显示的区域;

标识10:右边:在竖直拉伸的时候,指定图片里的内容显示的区域;

4)制作流程

进入.9图片的操作界面,右边则是实时的显示界面。接下来,我们要对图片进行描边了,描边之前一定要清楚四条边的含义,上左控制拉伸位置,下右控制内容显示位置。

4.1描边时,按下鼠标左键,然后放在图片边界移动就能描边了,要是想要去掉黑边,可以按下Shift键,然后点击鼠标左键。

我们先绘制左上两边,控制拉伸位置,如下绘制完成了之后,可以看右边的阅览图,明显比没有绘制时边角的清晰度更高。

《论Android开发AS创建点9图片》

此时为了防止右下角被拉伸,划线的时候,特意将右下角处空出来。

4.2绘制完了图片的拉伸区域之后,我们还需要绘制图片包裹的内容的显示区域,如果没有绘制的话,里边的内容是会从左到右依次显示,这样有时达不到我们想要的效果。

Demo中的图片我想要图片里面的文本显示在中央区域,即不显示在文本区域,所以我的黑色描边可以这样描。

《论Android开发AS创建点9图片》

通过对四条边的描黑边处理,我们就成功了避免了上述我们遇到的两个问题,拉伸的都是我们设置的区域,显示的也是我们想要显示的位置。

4.3对不同情况下描边的远行结果运行测试

4.3.1上诉四边描述成功下的运行界面展示

《论Android开发AS创建点9图片》

4.3.2四边都不描的的运行界面展示(编译出错)

《论Android开发AS创建点9图片》

4.3.3只描顶边的运行界面展示(编译出错)

《论Android开发AS创建点9图片》

4.3.4只描顶边与左边的运行界面展示

 

《论Android开发AS创建点9图片》

运行结果是右下角没有拉伸变形,但是文字位置没有处于正中间。

《论Android开发AS创建点9图片》

4.3.5只描底边与右边的运行界面展示(编译出错)

《论Android开发AS创建点9图片》

4.3.6只描底边与右边,还有顶边的运行界面展示(编译出错)

《论Android开发AS创建点9图片》

5)综上所述

其一、AS 2.1.2对于.9图片的编译,至少需要描两条边——顶边与左边;

其二、AS制作.9图,一定要分清楚左上边,与右下边的作用;

其三、AS对于解决边角拉伸与内容位置只是基于一些简单的操作,对于一些比较复杂的图片需求,可能就不会那么容易了。

其四、.9.png图片放在 drawable目录下引用,放在mipmap目录下回报错

总之,技术路漫漫兮,吾将上下而求索!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Android实现背景虚化,可以使用以下步骤: 1. 在布局文件添加一个ImageView来显示背景图片。 2. 在Java代码使用BitmapFactory.decodeResource()方法将背景图像文件加载到Bitmap。 3. 使用RenderScript库来创建一个RenderScript对象并使用它来创建一个Allocation对象。 4. 创建一个ScriptIntrinsicBlur对象并使用它来处理Allocation对象。 5. 将处理后的Allocation对象写入到一个新的Bitmap。 6. 最后,将处理后的Bitmap设置为ImageView的背景。 以下是示例代码: XML布局文件: ``` <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ImageView android:id="@+id/background_image" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="centerCrop" android:src="@drawable/background_image" /> </LinearLayout> ``` Java代码: ``` // Load the background image into a Bitmap Bitmap backgroundBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.background_image); // Create a RenderScript context RenderScript rsContext = RenderScript.create(this); // Create an Allocation object from the Bitmap Allocation inputAllocation = Allocation.createFromBitmap(rsContext, backgroundBitmap); // Create an Allocation object for the output Allocation outputAllocation = Allocation.createTyped(rsContext, inputAllocation.getType()); // Create a ScriptIntrinsicBlur object ScriptIntrinsicBlur blurScript = ScriptIntrinsicBlur.create(rsContext, Element.U8_4(rsContext)); // Set the blur radius (0 < radius <= 25) blurScript.setRadius(10); // Process the inputAllocation and write the result to the outputAllocation blurScript.setInput(inputAllocation); blurScript.forEach(outputAllocation); // Copy the outputAllocation to a new Bitmap Bitmap blurredBitmap = Bitmap.createBitmap(backgroundBitmap.getWidth(), backgroundBitmap.getHeight(), Bitmap.Config.ARGB_8888); outputAllocation.copyTo(blurredBitmap); // Set the blurredBitmap as the background of the ImageView ImageView backgroundImageView = findViewById(R.id.background_image); backgroundImageView.setImageBitmap(blurredBitmap); ``` 这将在ImageView显示一个虚化的背景图片。请注意,这可能会影响应用程序的性能,因此应该尽量避免在频繁更新的UI元素使用背景虚化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值