然后我们再来看一下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的值是没有什么用的
?