Android从服务器获取.9图片失效处理

前段时间,项目需要做聊天气泡的需求。要求从服务器上获取气泡图,但是从服务器上获取.9图片的话,.9图片会失效。在我苦思冥想中终于发现解决办法。我想可能是.9图片在打包成aok的时候,对图片进行了处理。果不其然,的确是这。但是我们出服务器上获取的.9图片为什么就不行了呢。接下来我将告诉大家一个巧妙的解决办法。

1.对.9图片进行处理 

1)将画好线的点9图放在任意一个Android工程中
2)从Android工程bin目录下拷贝apk
3)将apk后缀名修改为zip等可解压的文件,并对其解压
4)解压后你会发现,对应的res文件夹下有我们之前放的点9图片
5)将处理后的点9图片放到服务器上,这样我们就可以使用啦

**说明:处理后的点9图片你会发现我们这前画好的黑线没有了,这证明看我之前的猜想是正确的


2.代码处理

之前处理的图片你会发现一样不能使用
我们只需要将图片在进行以下代码处理即可

private Drawable getNinePatchDrawable(Bitmap bitmap,Context context) {
   
        byte[] chunk =bitmap.getNinePatchChunk();
        NinePatchDrawable ninePatchDrawable = null;
        if(NinePatch.isNinePatchChunk(chunk))
        {
            ninePatchDrawable = new NinePatchDrawable(context.getResources(), bitmap, chunk,
                    new Rect(), null);
        }
        return ninePatchDrawable;
**说明:即使这样,你会发现点9的右线和低线的文字区域还是不管用,不过这已经不影响我们使用啦。

    }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
你好,对于轮播图图片服务器获取的问题,我可以给你一些思路和建议。 首先,在 Vue 中使用轮播图组件时,一般会使用 `v-for` 指令来循环渲染轮播图中的每一张图片。如果你的轮播图组件是基于 Bootstrap 或其他 UI 框架的,那么它很可能会依赖于 `active` 类来控制当前显示的图片。 对于图片服务器获取的情况,你需要在获取图片数据后,将其存储在组件的 data 中,并在模板中使用 `v-for` 指令循环渲染每个图片。但是,这样做会导致轮播图的 `active` 类失效,因为在循环渲染过程中,每个图片都是动态生成的,无法准确控制当前显示的图片。 为了解决这个问题,你可以使用 Vue 的计算属性来动态计算当前显示的图片。具体来说,你可以在 data 中定义一个 `currentIndex` 属性,表示当前显示的图片的索引。然后,在计算属性中根据 `currentIndex` 的值来返回当前应该显示的图片对象,同时在模板中绑定相应的类名,来实现轮播图的效果。 下面是一个示例代码,供你参考: ```vue <template> <div class="carousel"> <div class="carousel-inner"> <div v-for="(item, index) in images" :class="['carousel-item', isActive(index)]"> <img :src="item.src" class="d-block w-100" alt="..."> </div> </div> </div> </template> <script> export default { data() { return { currentIndex: 0, images: [ { src: 'http://example.com/image1.jpg' }, { src: 'http://example.com/image2.jpg' }, { src: 'http://example.com/image3.jpg' }, ] } }, computed: { activeImage() { return this.images[this.currentIndex] } }, methods: { isActive(index) { return { active: this.currentIndex === index } }, next() { this.currentIndex = (this.currentIndex + 1) % this.images.length } }, mounted() { setInterval(() => { this.next() }, 5000) } } </script> ``` 在上面的代码中,我们定义了一个 `currentIndex` 属性来表示当前显示的图片的索引。在模板中,我们使用 `v-for` 指令来循环渲染每个图片,并使用 `isActive` 方法来动态绑定 `active` 类。在 `isActive` 方法中,我们根据当前图片的索引和 `currentIndex` 的值来判断是否应该添加 `active` 类。 为了动态计算当前显示的图片,我们使用了一个计算属性 `activeImage`,它返回当前应该显示的图片对象。在模板中,我们使用 `activeImage` 来动态绑定图片的 `src` 属性。 最后,在 mounted 生命周期钩子中,我们使用 setInterval 方法来定时切换轮播图的显示。当然,你也可以根据实际需求来实现切换逻辑。 希望这些信息能够对你有所帮助。如果你还有什么疑问或需要进一步的帮助,请随时提出。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值