推荐安卓开发神器(里面有各种UI特效和android代码库实例)
layer-list可以将多个图片按照顺序层叠起来。
语法:在drawalbe/drawable-layer.xml中
使用方式像其他图片一样:
如在样式中引用:
在java代码中引用:
((ImageView) findViewById(R.id.imageview)).setImageDrawable(getResources().getDrawable(R.drawable.drawable-layer)
在代码中实现:
再举一个例子:
要用2张图片叠加起来,看上去形成一张图片
首先创建一个drawalbe/login_head.xml的文件,内容如下:
然后就可以使用这个组合的图片了,比如在ImageView中显示:
<ImageView android:id="@+id/faceImg" android:background="@drawable/login_head"
android:layout_width="wrap_content" android:layout_height="wrap_content" />
使用java代码:
如何使多个Drawable叠加(合成图片)?
大家可能知道Bitmap的叠加处理在Android平台中可以通过Canvas一层一层的画就行了,而Drawable中如何处理呢? 除了使用BitmapDrawable的getBitmap方法将Drawable转换为Bitmap外,今天Android123给大家说下好用简单的LayerDrawable类,LayerDrawable顾名思义就是层图形对象。下面直接用一个简单的代码表示:
上面的方法中LayerDrawable是关键,Android开发网提示setLayerInset方法原型为public void setLayerInset (int index, int l, int t, int r, int b) 其中第一个参数为层的索引号,后面的四个参数分别为left、top、right和bottom。对于简单的图片合成我们可以将第一和第二层的PaintDrawable换成BitmapDrawable即可实现简单的图片合成。
语法:在drawalbe/drawable-layer.xml中
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@android:color/white" /> <item android:drawable="@drawable/logo_overlay" /> </layer-list>
使用方式像其他图片一样:
如在样式中引用:
<resources> <style name="LookupTheme" parent="@android:style/Theme.Light.NoTitleBar"> <item name="android:windowBackground">@drawable/drawable-layer</item> </style> </resources>
在java代码中引用:
((ImageView) findViewById(R.id.imageview)).setImageDrawable(getResources().getDrawable(R.drawable.drawable-layer)
在代码中实现:
Resources resources = getResources(); Drawable[] layers = new Drawable[2]; layers[0] = r.getDrawable(R.drawable.white); layers[1] = r.getDrawable(R.drawable.logo_overlay); LayerDrawable layerDrawable = new LayerDrawable(layers) ((ImageView) findViewById(R.id.imageview)).setImageDrawable(layerDrawable);
再举一个例子:
要用2张图片叠加起来,看上去形成一张图片
首先创建一个drawalbe/login_head.xml的文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/user_faceback_drawable" android:drawable="@drawable/faceback" /> <item android:id="@+id/user_face_drawable" android:drawable="@drawable/h001" android:left="10.0dip" android:top="18.0dip" android:right="25.0dip" android:bottom="35.0dip" /> </layer-list>
然后就可以使用这个组合的图片了,比如在ImageView中显示:
<ImageView android:id="@+id/faceImg" android:background="@drawable/login_head"
android:layout_width="wrap_content" android:layout_height="wrap_content" />
使用java代码:
如何使多个Drawable叠加(合成图片)?
大家可能知道Bitmap的叠加处理在Android平台中可以通过Canvas一层一层的画就行了,而Drawable中如何处理呢? 除了使用BitmapDrawable的getBitmap方法将Drawable转换为Bitmap外,今天Android123给大家说下好用简单的LayerDrawable类,LayerDrawable顾名思义就是层图形对象。下面直接用一个简单的代码表示:
Bitmap bm = BitmapFactory.decodeResource(getResources(),R.drawable.cwj); Drawable[] array = new Drawable[3]; array[0] = new PaintDrawable(Color.BLACK); //黑色 array[1] = new PaintDrawable(Color.WHITE); //白色 array[2] = new BitmapDrawable(bm); //位图资源 LayerDrawable ld = new LayerDrawable(array); //参数为上面的Drawable数组 ld.setLayerInset(1, 1, 1, 1, 1); //第一个参数1代表数组的第二个元素,为白色 ld.setLayerInset(2, 2, 2, 2, 2); //第一个参数2代表数组的第三个元素,为位图资源 mImageView.setImageDrawable(ld);
上面的方法中LayerDrawable是关键,Android开发网提示setLayerInset方法原型为public void setLayerInset (int index, int l, int t, int r, int b) 其中第一个参数为层的索引号,后面的四个参数分别为left、top、right和bottom。对于简单的图片合成我们可以将第一和第二层的PaintDrawable换成BitmapDrawable即可实现简单的图片合成。
相关推荐
本示例——"Android Layer-list 滑动条拖动演示示例",就是围绕Android中的LayerDrawable(层列表)进行的,它主要用于组合多个Drawable对象,形成一个复杂的图形元素,例如滑动条的背景和滑块。在这个项目中,我们...
Layer List是Anroid中的一种图形的方式,它是通过叠加若干张图片的方式来形成最终的图片,最终的图片在代码中表现为一个LayerDrawable对象。在android UI 开发中会经常遇到。因此我们有发现好好学习了解它的使用方法...
layer-list> 标签可是设置LayerDrawable,一种有层次的Drawable叠加效果,<layer-list> 可以包含多个 标签, 每个 代表一个Drawable。可以通过left、right、top、bottom设置左右上下的偏移量,可以应用一...
`<layer-list>`是Android资源XML文件中的一个标签,用于构建具有层次感的Drawable对象,也就是LayerDrawable。通过它,我们可以将多个Drawable对象堆叠在一起,形成复杂的图形布局。`<layer-list>`内部可以包含多个`...
在Android开发中,`Layer-list`是Android图形系统的一部分,用于创建由多个图形元素组成的复合图层。这个`listSample_listSample.zip`压缩包显然包含了关于如何使用`Layer-list`进行UI设计的示例源码。`Layer-list`...
LayerDrawable的核心是`android.graphics.drawable.LayerDrawable`类,它继承自`Drawable`,通过`<layer-list>`标签在XML资源文件中定义。每个`<item>`标签代表一个Drawable层,可以通过设置`android:top`, `android...
- **XML方式**:在XML资源文件中创建一个`layer-list`标签,并包含多个`item`标签。每个`item`标签内部可以是任意类型的Drawable,如BitmapDrawable、ShapeDrawable等。通过`android:gravity`和定位属性来控制每个...
1. **XML定义**:在资源文件的 `<layer-list>` 标签下定义各层的 `Drawable`。每一层都是一个 `<item>` 标签,其中可以包含具体的 `Drawable` 资源或属性。例如: ```xml <layer-list xmlns:android=...
例如,静态的图片层叠效果可以使用LayerDrawable,而动态效果则可以通过Canvas或动画库实现。同时,考虑到内存管理和加载速度,可能还需要使用到图片加载库(如Glide或Picasso)来处理图片的异步加载和缓存。 总的...
1. **使用XML**:在资源文件的`res/drawable`目录下创建一个XML文件,定义`<layer-list>`标签,然后在其中包含多个`<item>`标签,每个`<item>`代表一个`Drawable`层。`<item>`标签内的`drawable`属性用于指定子`...
LayerDrawable icon = (LayerDrawable) ContextCompat.getDrawable(context, R.drawable.badge_layer_list); // 设置角标值,如未读消息数量 ((BitmapDrawable) icon.findDrawableByLayerId(R.id.badge))....
通过封装GradientDrawable、StateListDrawable 、LayerDrawable ...支持Layer-list How to: Step 1. Add the JitPack repository to your build file Add it in your root build.gradle at the end of repositories:
LayerDrawable layerDrawable = (LayerDrawable) ContextCompat.getDrawable(this, R.drawable.layer_drawable); ``` 总结来说,Android的绘图机制提供了丰富的功能,让开发者能够创建出各种各样的界面和动态效果。...
在这个案例中,我们有三层`LayerList`,每层都包含了不同的渐变色效果,以创建一个视觉上吸引人的图标。 渐变色在Android中可以通过`GradientDrawable`来实现。`GradientDrawable`支持线性、径向、角度和螺旋形四种...
总结来说,Android自定义阴影效果主要依赖于`<layer-list>`和LayerDrawable,通过创建多层Drawable并调整它们的相对位置和颜色,来模拟阴影。这种技术不仅适用于`TabLayout`,还可以应用于任何支持设置背景的View或 ...
这个属性接受一个Drawable对象,通常是层叠列表(LayerDrawable),其中包含两个状态:正常状态和选中状态。你可以创建一个XML资源文件,如`res/drawable/progress_bar.xml`,并在其中定义这两个状态的形状和颜色。...
可以使用GradientDrawable来创建渐变效果,或者使用LayerDrawable来组合多个Drawable,实现复杂的样式。 3. **SecondaryProgressDrawable**:二级进度条的样式,与ProgressDrawable类似,可以通过`@drawable/...
10. **图层列表资源(layer-list)**:在res/drawable目录下创建一个layer-list资源文件,可以将多个图片视为一个单一的Drawable对象,通过调整各层的层级和大小实现重叠。 综上所述,Android中实现图片重叠的方法...
\n\n### 三、编码与实现\n\n#### (1) layer-list配置\n\n在Android中,我们可以使用`layer-list`资源来创建图层叠放的Drawable。在XML布局文件中定义一个`<layer-list>`,将每个图层的`Drawable`作为`<item>`添加...