四时宝库

程序员的知识宝库

AndroidStudio安卓原生开发_UI高级_Shape的使用

然后我们再来看一下android中的shape怎么用,可以看到上面就是

用shape做出来的效果.

用来做按钮的背景,等.

?

?

?

这个就是用了扫描线渐变.

上面是,对shape做了一些的,介绍和解释,我们一个个去写代码去看看,怎么用.

?

首先我们去看,线和虚线等

这个line_shape.xml

可以看到我们写了一个stroke这个指定描边,可以看到我们指定了

width是1px,就是说,线的宽度是1px

然后我们指定颜色是black黑色.

?

然后我们在activity_main.xml中,我们去写一个button,然后

我们给这个按钮的background,去设置,上面我们做的那个line_shape去.

?

设置以后,我们去看看效果,可以看到按钮的背景,出现了一个线.

?

我们放大看看.

?

然后我们给这个按钮两个文字,登录,我们再去看看

?

可以看到在登录,两个字,后面有个直线的背景.

?

然后这里我们可以给这个线,描边,设置为红色

color,设置为holo_red_dark,深红

同时,我们把这个线设置为虚线去看看,可以看到设置dashGap,这个是虚线线段之间的距离

dashWidth,这个是线段的长度是10dp我们设置.


?

可以看到效果.并没有出现我们想要的,虚线的效果对吧,怎么回事呢>?

?

因为android4.0以后,就启用了硬件加速功能,activity的硬件加速功能

我们去关闭就好了

比如上面:

我们在AndroidManifest.xml中的

activity上面设置,关闭硬件加速功能,就可以了

hardwareAccelerated = false


但是有人说如果关闭了activity的硬件加速功能,会不会影响activity的,响应速度啊,等.

那这样的话,我们还是保持activity的硬件加速功能打开.

?

然后我们在activity_main.xml的button上面,添加一个id是btn


?

然后我在MainActivi的onCreate方法中,我们去

获取这个btn按钮,然后

给这个按钮单独,启用软件加速,不用硬件加速.第二个参数传入null

?

去看看效果就有了.

这样,我们仅仅是对button,这个按钮,取消了硬件加速功能,这样不会影响整个activity的性能.

?

然后我们再去看矩形的形状,我们用solid这个,属性,指定填充的颜色是红色.

可以看到shape= rectangle

?

然后我们再去在activity_main.xml中去写一个按钮

text是注册.背景是rect_shape 这样指定就可以了.

?

然后我们去看看,有效果了,注册按钮,就有了一个我们上面去做的那个矩形的红色背景了,

但是这个时候,这个矩形是,没有圆角的不好看.

?

我们用corners这个属性,去设置一下,圆角的角度,这里设置为10dp

?

然后去看看,可以看到矩形,就有圆角了.

?

那么实际上,我们如果想要,下面没有圆角,上面有圆角,可以看到上面,我们可以单独设置,4个角的某个角

上是否有圆角.

?

然后我们再去给这个矩形,去用stroke,添加一个描边,蓝色的,1dp宽度的描边

?

去看看,就看到有个蓝色,1dp宽的描边了.

?

然后我们再去把这个描边,指定成,蓝色的虚线去.

dashGap,dashWidth

?

可以看到就有虚线了.

?

然后我们再去,看看这个矩形的,颜色的渐变

可以看到,我们这里渐变,我们首先用这个linear是线性渐变.去看看效果

可以看到我们设置了,垂直的线性渐变,所以这里angle是270度.

然后开始渐变的颜色是startColor是#f00是红色,然后中间的颜色centerColor是绿色,然后结束地方渐变的颜色是#00f蓝色


这样的话,他就会按照,先是红色,然后绿色,然后蓝色的规律,去渐变.效果没有截图可以自己运行试试

?

然后我们再去看看,我们这里渐变类型,选择radial,这个是径向渐变,

径向半径我们设置为20dp,同样,我们也设置了开始,中间,结束的渐变颜色.



?

然后我们去查看效果可以看到有效果,并且是按照,红色开始颜色,绿色中间颜色,蓝色结束颜色渐变的.

?

上面的渐变范围太小了不好看,我们弄大一点,

这个gradientRadius=200db这个渐变半径我们设置为200dp再去看看效果.

?

可以看到这样效果会明显一些了.

?

然后我们再去看一种渐变sweep,是扫描渐变.

64 .2021/5/25 8:49 .
64 .radial .n. 子午线轮胎;射线,光线 adj. 辐射状的;光线的
64 .gradient .n. 坡度,倾斜度;梯度 adj. 倾斜的
64 .Radius .半径(长度);半径(距离) 【数学】
64 .sweep .n. 打扫;延伸,伸展 v. 扫;清除;席卷;扫荡;掠过;扫视;延伸;绵延


?

然后我们为了看这个扫描渐变的效果明显,我们把这个

button按钮的高度设置成200dp

?

然后我们去看,扫描渐变的效果可以看到,他是从右边开始扫描,

从开始色红色,中间色绿色,结束色蓝色,扫描的.

要做一个GPS,雷达扫描的功能,那么用这个扫描渐变是可以用的.

?

然后我们再去看一个这个shape的熟悉,padding这个作用是什么

这里我们设置了left,right的padding是50dp,50dp

?

然后我们把渐变,先删除掉,为了看padding的效果比较方便看

?

然后我们去看看效果

?

可以看到,看不到任何效果是怎么回事呢?

?

现在我们这样做,我们把button的background指定的那个shape删除,然后添加到

LinearLayout上面,然后我们去看看效果

?

可以看到效果就有了.他是距离按钮的距离是多少.

?

其实相当于我们在LinearLayout中,添加paddingLeft/或者paddingRight这个属性,效果是一样的.

但是这个padding我们用的还真是不多.

?

然后我们再去看看shape的size属性.

?

然后我们去看看,也没有效果,这个size属性,我们几乎是用不到的.


实际上他就是没有什么用,只是可以通过shapeDriver.getInstrentHeight,width

获取设置的值而已.一般情况下,对于我们开发者来说这个size的值是没有什么用的


?




发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接