在Android中,Drawable XML并不支持阴影,参考了网上诸多例子,一般都是以额外绘制的渐变或者边框来实现阴影。 这里是用叠加shape的方式来绘制的。 上图中绿色方框中的标识的色块,从外到内可以划分成几个部分: * Outer circle * Inner shadow of outer circle * Gap * Outer shadow of center circle * Center circ...
其实这个问题本来是不需要单独考虑的,但是 Android 有个坑,在一个按钮控件中设置 drawable 以后,默认是贴着控件边缘显示的,所以这个坑需要单独填。 自定义控件属性支持 shape 模式、填充颜色、按压颜色、描边颜色、描边宽度、圆角半径、按压动效是否开启、渐变开始颜色、渐变结束颜色、渐变方向、drawable 方位。 第三步,...
文章开头也讲过,Drawable XML的特征之一就是可复用。继续看res/drawable/stop_timer_btn.xml的代码: <?xml version="1.0" encoding="utf-8"?> <!-- normal --> <item android:state_enabled="true" android:state_focused="false" android:state_pressed="false"> <layer-list> <item android:drawable...
Each drawable is represented by anelement inside a singleelement. file location: res/drawable/filename.xml The filename is used as the resource ID. compiled resource datatype: Resource pointer to aLayerDrawable. resource reference: In Java:R.drawable.filename In XML:@[package:]drawable/filename...
在自定义shape中增加一层或多层,并错开,即可显示阴影效果。为增加立体感,按钮按下的时候,只设置一层。我们可以通过top, bottom, right 和 left 四个参数来控制阴影的方向和大小。 关系图 以下自定义两种阴影效果: res/drawable-hdpi/shadow1.xml <?xml version="1.0" encoding="utf-8"?> ...
在自定义shape中增加一层或多层,并错开,即可显示阴影效果。为增加立体感,按钮按下的时候,只设置一层。我们可以通过top, bottom, right 和 left 四个参数来控制阴影的方向和大小。 关系图 以下自定义两种阴影效果: res/drawable-hdpi/shadow1.xml 01.<?xml version="1.0"encoding="utf-8"?> ...
将以上xml存成btn_test, 放到res/drawable/目录下。 将该drawable xml设为一个TextView的backgroiund, <TextView android:background="@drawable/btn_test" android:layout_marginTop="20dip" android:layout_marginLeft="5dip" android:textColor="#792a03" ...
还需要将 ShadowDrawableWrapper 使用到的几个默认参数值也拷贝出来,当然我们已经有源码了,直接写死也可以,我这里选择将它们原样拷贝出来。 然后我们就可以在代码中,使用这个 RoundRectDrawableWithShadow 了。 最终,看看实现的阴影效果: 6.3 CardView 模拟阴影小结 ...
dependencies { implementation 'com.github.Liberuman:ShadowDrawable:0.1' } 使用通过一行代码即可实现阴影效果/** * 为指定View设置带阴影的背景 * @param view 目标View * @param bgColor View背景色 * @param shapeRadius View的圆角 * @param shadowColor 阴影的颜色 * @param shadowRadius 阴影的宽度 * @...
其实就是又把大部分工作交给了RoundRectDrawableWithShadow处理,然后将创建该drawable对象设为背景。然后本类中只处理一些外层间距问题,主要是外层阴影在21以下的实现方式(又是一个坑),最后我们跟踪RoundRectDrawableWithShadow,重点在 @Overridepublicvoiddraw(Canvascanvas){if(mDirty){buildComponents(getBounds());mDir...