`
407827531
  • 浏览: 1076468 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

LayerDrawable层叠样式layer-list

 
阅读更多

 

推荐安卓开发神器(里面有各种UI特效和android代码库实例)

layer-list可以将多个图片按照顺序层叠起来。
语法:在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 滑动条拖动演示示例.rar

    本示例——"Android Layer-list 滑动条拖动演示示例",就是围绕Android中的LayerDrawable(层列表)进行的,它主要用于组合多个Drawable对象,形成一个复杂的图形元素,例如滑动条的背景和滑块。在这个项目中,我们...

    Android Layer List使用实例

    Layer List是Anroid中的一种图形的方式,它是通过叠加若干张图片的方式来形成最终的图片,最终的图片在代码中表现为一个LayerDrawable对象。在android UI 开发中会经常遇到。因此我们有发现好好学习了解它的使用方法...

    Android 使用layer-list实现微信聊天输入框功能

    layer-list&gt; 标签可是设置LayerDrawable,一种有层次的Drawable叠加效果,&lt;layer-list&gt; 可以包含多个 标签,  每个 代表一个Drawable。可以通过left、right、top、bottom设置左右上下的偏移量,可以应用一...

    Android 使用&lt;layer-list&gt;实现微信聊天输入框功能

    `&lt;layer-list&gt;`是Android资源XML文件中的一个标签,用于构建具有层次感的Drawable对象,也就是LayerDrawable。通过它,我们可以将多个Drawable对象堆叠在一起,形成复杂的图形布局。`&lt;layer-list&gt;`内部可以包含多个`...

    Android应用源码之Layer-listSample_listSample.zip

    在Android开发中,`Layer-list`是Android图形系统的一部分,用于创建由多个图形元素组成的复合图层。这个`listSample_listSample.zip`压缩包显然包含了关于如何使用`Layer-list`进行UI设计的示例源码。`Layer-list`...

    LayerDrawable

    LayerDrawable的核心是`android.graphics.drawable.LayerDrawable`类,它继承自`Drawable`,通过`&lt;layer-list&gt;`标签在XML资源文件中定义。每个`&lt;item&gt;`标签代表一个Drawable层,可以通过设置`android:top`, `android...

    Android LayerDrawable使用实例

    - **XML方式**:在XML资源文件中创建一个`layer-list`标签,并包含多个`item`标签。每个`item`标签内部可以是任意类型的Drawable,如BitmapDrawable、ShapeDrawable等。通过`android:gravity`和定位属性来控制每个...

    LayerDrawableTest

    1. **XML定义**:在资源文件的 `&lt;layer-list&gt;` 标签下定义各层的 `Drawable`。每一层都是一个 `&lt;item&gt;` 标签,其中可以包含具体的 `Drawable` 资源或属性。例如: ```xml &lt;layer-list xmlns:android=...

    android图片层叠效果

    例如,静态的图片层叠效果可以使用LayerDrawable,而动态效果则可以通过Canvas或动画库实现。同时,考虑到内存管理和加载速度,可能还需要使用到图片加载库(如Glide或Picasso)来处理图片的异步加载和缓存。 总的...

    -LayerDrawable

    1. **使用XML**:在资源文件的`res/drawable`目录下创建一个XML文件,定义`&lt;layer-list&gt;`标签,然后在其中包含多个`&lt;item&gt;`标签,每个`&lt;item&gt;`代表一个`Drawable`层。`&lt;item&gt;`标签内的`drawable`属性用于指定子`...

    android 图标 消息 数量

    LayerDrawable icon = (LayerDrawable) ContextCompat.getDrawable(context, R.drawable.badge_layer_list); // 设置角标值,如未读消息数量 ((BitmapDrawable) icon.findDrawableByLayerId(R.id.badge))....

    Android代码-SupperShape

    通过封装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:

    Android绘图机制与处理技巧(上)

    LayerDrawable layerDrawable = (LayerDrawable) ContextCompat.getDrawable(this, R.drawable.layer_drawable); ``` 总结来说,Android的绘图机制提供了丰富的功能,让开发者能够创建出各种各样的界面和动态效果。...

    Android手动绘制圆形图标

    在这个案例中,我们有三层`LayerList`,每层都包含了不同的渐变色效果,以创建一个视觉上吸引人的图标。 渐变色在Android中可以通过`GradientDrawable`来实现。`GradientDrawable`支持线性、径向、角度和螺旋形四种...

    Android 自定义阴影效果详解及实例

    总结来说,Android自定义阴影效果主要依赖于`&lt;layer-list&gt;`和LayerDrawable,通过创建多层Drawable并调整它们的相对位置和颜色,来模拟阴影。这种技术不仅适用于`TabLayout`,还可以应用于任何支持设置背景的View或 ...

    seekbar自定义

    这个属性接受一个Drawable对象,通常是层叠列表(LayerDrawable),其中包含两个状态:正常状态和选中状态。你可以创建一个XML资源文件,如`res/drawable/progress_bar.xml`,并在其中定义这两个状态的形状和颜色。...

    seekabr.rar

    可以使用GradientDrawable来创建渐变效果,或者使用LayerDrawable来组合多个Drawable,实现复杂的样式。 3. **SecondaryProgressDrawable**:二级进度条的样式,与ProgressDrawable类似,可以通过`@drawable/...

    Android重叠的图片

    10. **图层列表资源(layer-list)**:在res/drawable目录下创建一个layer-list资源文件,可以将多个图片视为一个单一的Drawable对象,通过调整各层的层级和大小实现重叠。 综上所述,Android中实现图片重叠的方法...

    以一个着色游戏展开讲解Android中区域图像填色的方法

    \n\n### 三、编码与实现\n\n#### (1) layer-list配置\n\n在Android中,我们可以使用`layer-list`资源来创建图层叠放的Drawable。在XML布局文件中定义一个`&lt;layer-list&gt;`,将每个图层的`Drawable`作为`&lt;item&gt;`添加...

Global site tag (gtag.js) - Google Analytics