今天和尚我再稍稍补充一点,Java/Kotlin 代码中设置 LayerDrawable 方式实现沉浸式状态栏。...LayerDrawable 为图层叠加,对应 xml 中的 layer-list 层次化方式展示 Drawable,和尚我借用这种方式实现与以前一样的含有图片的沉浸式状态栏样式。...shapeDrawableBg.getPaint().setStyle(Paint.Style.FILL) shapeDrawableBg.getPaint().setColor(-0x444445) 设置 LayerDrawable...resources.getDrawable(R.drawable.icon_bg) 在 Toolbar 或其他布局位置设置背景 background; // 设置背景 toolbar.background = layerDrawable...test_lay.background = layerDrawable ?
进行图片合成 LayerDrawable介绍 LayerDrawable也可包含一个Drawable数组,因此系统将会按这些Drawable对象的数组顺序来绘制它们,索引最大的Drawable对象将会被绘制在最上面...LayerDrawable有点类似PhotoShop图层的概念。...layerDrawable = new LayerDrawable(drawables); int musicPicMargin = (int) ((DisplayUtil.SCALE_DISC_SIZE...其实这种也很好做,可以使用LayerDrawable加属性动画来实现。 思路如下: 1....给LayerDrawable设置两个图层,第一图层是前一个背景,第二图层是准备显示的背景。 2. 先把准备显示的背景透明度设为0,因此完全透明,此时只显示前一个背景图。 3.
进行图片合成 LayerDrawable介绍 LayerDrawable也可包含一个Drawable数组,因此系统将会按这些Drawable对象的数组顺序来绘制它们,索引最大的Drawable对象将会被绘制在最上面...LayerDrawable有点类似PhotoShop图层的概念。 我们在分析唱片布局的时候发现原View包含两个ImageView,估计是一个用来显示唱盘,一个用来显示专辑图片。 ?...使用LayerDrawable生成复合图片代码: private Drawable getDiscDrawable(int musicPicRes) { int discSize = (int)...layerDrawable = new LayerDrawable(drawables); int musicPicMargin = (int) ((DisplayUtil.SCALE_DISC_SIZE...其实这种也很好做,可以使用LayerDrawable加属性动画来实现。 思路如下: 1. 给LayerDrawable设置两个图层,第一图层是前一个背景,第二图层是准备显示的背景。 2.
不过,我们还有可以偷懒的地方,其实没必要我们自己去一个图层一个图层的绘制,我们可以利用Drawable去完成图层叠加的工作,我们有一类Drawable叫做LayerDrawable,对应的xml为layer-list...,我们可以通过使用LayerDrawable极大的简化我们的工作。.../** * Created by zhy on 15/5/14. */ public class ColourImageBaseLayerView extends View { private LayerDrawable...ColourImageBaseLayerView(Context context, AttributeSet attrs) { super(context, attrs); mDrawables = (LayerDrawable...} return drawable; } return null; } } ok,代码也比较简单,首先我们把drawable作为view的背景,然后在构造中获取drawable(LayerDrawable
ic_launcher" android:tileMode="mirror"//平铺 android:antialias="true"//消除锯齿 android:dither="true"> LayerDrawable...public void On(View v){ iv.setImageLevel( //int ); } TransitionDrawable --- transi tion drawable 为LayerDrawable...的子类,只有两张图片的变化,没有多个图片,LayerDrawable可以有多个item,而transitiondrawable只有两个item。...iv.getDrawable(); drawable.setLevel(5000); //范围0-10000; DIY的Drawable 自己动手试试吧 梳理: BitmapDrawable, LayerDrawable
android:gravity="center"/> 我们使用 layer-list 标签创建一个图层列表,实际就是一个 LayerDrawable...android:windowBackground">@drawable/splash_screen 这里只需要将窗口背景设置为我们刚才定义的 LayerDrawable
android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.LayerDrawable... array[1] = new BitmapDrawable(bitmap2); array[2] = new BitmapDrawable(bitmap3); LayerDrawable...la = new LayerDrawable(array); // 其中第一个参数为层的索引号,后面的四个参数分别为left、top、right和bottom la.setLayerInset
LayerDrawable:对应Seekbar android:progressDrawable 通常,我们用XML定义一个进度条的ProgressDrawable是这样的, <!...LayerDrawable layerDrawable = (LayerDrawable) getProgressDrawable();//背景 layerDrawable.setDrawableByLayerId...ClipDrawable clipProgressDrawable = new ClipDrawable(progressDrawable, Gravity.LEFT, ClipDrawable.HORIZONTAL); layerDrawable.setDrawableByLayerId...clipSecondaryProgressDrawable = new ClipDrawable(secondaryProgressDrawable, Gravity.LEFT, ClipDrawable.HORIZONTAL); layerDrawable.setDrawableByLayerId
LayerDrawable:对应Seekbar android:progressDrawable 通常,我们用XML定义一个进度条的ProgressDrawable是这样的, <!...LayerDrawable layerDrawable = (LayerDrawable) getProgressDrawable(); //背景 layerDrawable.setDrawableByLayerId...ClipDrawable clipProgressDrawable = new ClipDrawable(progressDrawable, Gravity.LEFT, ClipDrawable.HORIZONTAL); layerDrawable.setDrawableByLayerId...clipSecondaryProgressDrawable = new ClipDrawable(secondaryProgressDrawable, Gravity.LEFT, ClipDrawable.HORIZONTAL); layerDrawable.setDrawableByLayerId
LayerDrawable ? 它是一种层次化的Drawable集合,通过不同的Drawable放置在不同的层上面达到了叠加后的效果。并且下面的item覆盖上面的item。 ?...我们可以使用LayerDrawable来实现,只需要把中间的放大镜和文字变成一个图片,比如 ? 然后背景为: <?xml version="1.0" encoding="utf-8"?...最后使用LayerDrawable: <?xml version="1.0" encoding="utf-8"?
它的直接子类有 BitmapDrawable, ClipDrawable, ColorDrawable, DrawableContainer, GradientDrawable, InsetDrawable, LayerDrawable...Drawable就是一个可画的对象,其可能是一张位图(BitmapDrawable),也可能是一个图形(ShapeDrawable),还有可能是一个图层(LayerDrawable),我们根据画图的需求...LayerDrawable A Drawable that manages an array of other Drawables.
android.graphics.drawable.Drawable; import android.graphics.drawable.GradientDrawable; import android.graphics.drawable.LayerDrawable...defaultImage = array.getResourceId(R.styleable.BannerLayoutStyle_defaultImage, defaultImage); array.recycle(); LayerDrawable...unSelectedLayerDrawable; LayerDrawable selectedLayerDrawable; GradientDrawable unSelectedGradientDrawable...unSelectedGradientDrawable.setSize(unSelectedIndecatorWidth, unSelectedIndicatorHeight); unSelectedLayerDrawable = new LayerDrawable...selectedGradientDtawbale.setSize(selectedIndecatorWidth, selectedIndicatorHeight); selectedLayerDrawable = new LayerDrawable
android.graphics.drawable.Drawable; import android.graphics.drawable.GradientDrawable; import android.graphics.drawable.LayerDrawable...R.styleable.BannerLayoutStyle_defaultImage,defaultImage); array.recycle(); //绘制未选中状态图形 LayerDrawable...unSelectedLayerDrawable; LayerDrawable selectedLayerDrawable; GradientDrawable unSelectedGradientDrawable...unSelectedGradientDrawable.setSize(unSelectedIndicatorWidth, unSelectedIndicatorHeight); unSelectedLayerDrawable = new LayerDrawable...selectedGradientDrawable.setSize(selectedIndicatorWidth, selectedIndicatorHeight); selectedLayerDrawable = new LayerDrawable
Drawable分类 Drawable种类繁多,比如,BitmapDrawable,ShapeDrwable,LayerDrawable,StateListDrawable等,这里就不一一列举了,下面列出一些常用的做一下简单的介绍...method stub ((AnimationDrawable)mDrawable).start(); } }, 1000); LayerDrawable...layerDrawable顾名思义就是处于不同的层的,管理一组drawable,每个drawable都处于不同的层,当它们被绘制的时候,按照顺序全部都绘制到画布上。
BitmapDrawable、 NinePatchDrawable、InsetDrawable、ClipDrawable、ScaleDrawable、RotateDrawable、AnimationDrawable、LayerDrawable...LayerDrawable A Drawable that manages an array of other Drawables. These are drawn in array order....---- LayerDrawable LayerDrawable 管理一组drawable,每个drawable都处于不同的层,当它们被绘制的时候,按照顺序全部都绘制到画布上。...在xml文件中使用layer-list作为根节点来定义LayerDrawable,通过item子节点定义每一层的drawable,layer-list没有属性节点,只包含item子节点。 ? ?...---- TransitionDrawable TransitionDrawable 是LayerDrawable的子类,不过它只负责管理两层drawable,并且提供了一个透明度变化的动画,可以控制从一层
ic_launcher" android:tileMode="mirror"//平铺 android:antialias="true"//消除锯齿 android:dither="true"> LayerDrawable...public void On(View v){ iv.setImageLevel( //int ); } TransitionDrawable --- transi tion drawable 为LayerDrawable...的子类,只有两张图片的变化,没有多个图片,LayerDrawable可以有多个item,而transitiondrawable只有两个item。...drawable=iv.getDrawable(); drawable.setLevel(5000); //范围0-10000; DIY的Drawable 自己动手试试吧 梳理: BitmapDrawable, LayerDrawable
其中android:progressDrawable用于指定进度条的轨道的绘制形式,该属性可指 定为一个LayerDrawable对象的引用。
//聚合背景修改为我们要的效果 private LayerDrawable makeClusterBackground() { //读取聚合图标 InputStream inputStream...RoundRectShape(mOuterCircle, mInsertCircle, null)); outline.getPaint().setColor(0x00000000); LayerDrawable...background = new LayerDrawable(new Drawable[]{outline, mColoredCircleBackground}); //修改padding
字符串资源 color 颜色资源 dimen 尺寸资源 array 数组资源 style 样式资源 theme 主题资源 2、drawable资源 图片资源 StateListDrawable资源 LayerDrawable...LayerDrawable资源 LayerDrawable顾名思义,就表现得和图层差不多。可以在根元素layer-list中定义多个drawable对象,并且像帧布局那样将各个对象堆叠起来。
文章开头有说过Drawable,Drawable只是一个抽象类,它有许多子类,常见的有bitmapdrawable、LayerDrawable、LevelListDrawable和ClipDrawable...new LevelListDrawable(); } else if (name.equals("layer-list")) { drawable = new LayerDrawable
领取专属 10元无门槛券
手把手带您无忧上云