安卓开发之Drawable巧妙的用处

本文介绍了在安卓开发中如何利用Drawable实现特殊界面效果,包括LayerDrawable、ShapeDrawable、NinePatchDrawable等类型的使用。通过示例展示了BitmapDrawable的tileMode属性,详细解释了repeat、mirror、clamp不同模式的效果,并给出了形状渐变背景的实现方式。
摘要由CSDN通过智能技术生成

平时我们想要一些特殊的界面效果大多数会使用自定义view,但相比较xml来说自定义view会稍微麻烦点,如果想要实现一些简单的效果,我们直接通过Drawable就可以实现

在Drawable的这些继承类中我们常用的主要有以下几种:LayerDrawable、ShapeDrawable、NinePatchDrawable、BitmapDrawable、StateListDrawable、LevelListDrawable、TransitionDrawable、InsetDrawable、ScaleDrawable、ClipDrawable等,下面我们简单的介绍一下

首先使用xml来构建一个drawble的BitmapDrawable对象

 

 

我设置的原图是这样的:

xml里面的内容:

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/a"
    android:antialias="true"
    android:dither="true"
    android:filter="true"
    android:gravity="top|left"
    android:tileMode="mirror">
</bitmap>

属性tileMode表示平铺模式,该属性共有四种取值,分别是disable、repeat、mirror、clamp四种,默认情况下是disable,就是不做任何处理,当我们在这里使用了除disable之外的另外三种取值时,gravity属性值失效。下面先来看一下 取值为mirror的效果

我的视图里是这样的:

最终的效果图:

这样就是实现了镜面的效果,mirror意为镜面,其效果也可想而知。需要注意的是图片的大小要小与控件的大小。否则不起作用。

当图片的大小小于控件的大小时,图片会在水平方向和垂直方向不断的重复。这个是平铺的效果 只需要将 android:tileMode="repeat" 

这个效果是带框框的哦,直接把tileMode属性的值改为clamp,当图片小于控件的大小时,图片在水平方向或者垂直方向末端的颜色会自动延伸直至将控件填充满有点像心愿墙之类的效果

最后的直接看一下这个背景的渐变吧

xml中是这样的,注意这里的类型要改成shap

<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
    android:startColor="@color/colorAccent"
    android:endColor="@color/colorPrimary" />
<size
    android:width="100dp"
    android:height="100dp"
    />
</shape>
其中 gradient 的翻译为渐变,我们只需要给他开始的颜色和结尾的颜色中间自己会进行渲染,意思很像动画里面的补间动画呢。呐呐具体的实现还有好多好多,以后在详细的介绍啦。总而言之在安卓的世界里,只有你想不到,绝对没有安卓做不到的事(除了根据手机主题改变手机壳颜色 当然也不一定 哈哈哈)

git地址:

https://github.com/SunShinezhou1/drawble

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值