`
Evog
  • 浏览: 3247 次
社区版块
存档分类
最新评论

android 自定义图形之层叠样式 [layer-list] 的使用

阅读更多
     通过使用层叠样式  layer-list  可以将多张图像层叠在一起   形成一张新的图像.
在第一次接触, 是为了解决一个LinearLayout 中包含一个Button ,当点击该LinearLayout和Button 多要改变LinearLayout的背景色. 由于Button无法获取焦点改变事件(OnFocusChangeListener), 而设置Button点击事件我们也只能扑捉按钮的一瞬间, 所以我们还的扑捉手势动作(GestureDetector)  . 而且这些多要代码去控制,

听说 ImageButton能解决Button的这一弱点哦..

下面是效果图





接下来发的是drawable xml图像文件

1. 默认的图片布局 : layer_main_button_life_n.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    
    <item android:drawable="@drawable/login_btn_normal" />
    <item android:drawable="@drawable/main_icon_life" 
        android:left="20dip"
        android:right="150.0dip"
        android:top="8dip"
        android:bottom="8dip"/>

</layer-list>


2. 按下 或者有焦点的图像布局:layer_main_button_life_p.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    
    <item android:drawable="@drawable/login_btn_focus" />
    <item android:drawable="@drawable/main_icon_life" 
        android:left="20dip"
        android:right="150.0dip"
        android:top="8dip"
        android:bottom="8dip"/>

</layer-list>


3. 为新的图像创建一个选择器布局 :selector_main_button_life.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/layer_main_button_life_p" android:state_pressed="true"/>
    <item android:drawable="@drawable/layer_main_button_life_p" android:state_selected="true"/>
    <item android:drawable="@drawable/layer_main_button_life_n"/>

</selector>


4. 最后在布局文件中 main.xml中的Button直接引用该选择器就OK了
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    
	<Button 
	    android:layout_centerInParent="true"
	    android:layout_width="wrap_content"
	    android:layout_height="50dp"
	    android:background="@drawable/selector_main_button_life"
	    android:paddingLeft="100dip"
	    android:text=" 生 活 资 讯 "
	    android:textSize="20sp"/>
    
</RelativeLayout>



注: layer-list 对应的Java类为LayerDrawable  ,大家也可能使用该类在类中创建自己的图像
  • 大小: 4.2 KB
  • 大小: 4.1 KB
分享到:
评论

相关推荐

    安卓Android源码——Layer-listSample.rar

    "Layer-listSample"是一个关于Android图形层叠列表(Layer-list)的示例项目,它可以帮助开发者深入理解如何使用这一XML布局资源来创建复杂的图形组合。在本文中,我们将详细探讨Layer-list在Android中的应用以及...

    android progressBar自定义 颜色 进度条

    `layer-list`是Android中的一个图形绘制元素,它可以将多个图形层叠在一起。在我们的案例中,我们可以创建一个新的XML文件,例如`progress_drawable.xml`,放置在`res/drawable`目录下,然后在其中定义颜色。 下面...

    Android 给控件添加边框阴影效果

    这个XML文件将定义一个`layer-list`,它允许我们将多个图形层叠在一起,以实现阴影和背景的效果。以下是一个典型的`bg_shadow.xml`内容: ```xml &lt;layer-list xmlns:android=...

    android使用xml实现一些常用的背景图

    3. **Layer-List**: Layer-List允许你将多个图形层叠在一起,形成复杂的背景图。这对于创建有层次感的布局特别有用。每个图形层由`&lt;item&gt;`标签表示,可以包含Shape、Bitmap或者其他布局元素。 ```xml &lt;layer-list ...

    Android中自定义水平进度条样式之黑色虚线

    总结起来,Android中自定义水平进度条样式的关键在于使用`layer-list`资源文件,并通过`item`标签创建背景和进度层。通过设置`stroke`属性中的`dashWidth`和`dashGap`,我们可以轻松地创建出黑色虚线的进度条效果。...

    shape 标签

    此外,还可以利用层叠(Layer List)来组合多个Shape,创建更复杂的图形。 总之,Android中的Shape为开发者提供了强大的绘图能力,使UI设计更加灵活和多样化。通过学习和实践`ShapeDemo`,我们可以更好地理解和掌握...

    android 漂亮的UI界面 源码

    源码可能展示了如何使用层叠图像(Layer List Drawable)来创建复杂的图形效果。 5. **动画(Animations)**:源码可能包含了使用属性动画(Property Animation)、视图动画(View Animation)或过渡动画...

    drawable之shape的学习

    在实际应用中,`shape`不仅限于简单的背景,还可以与其他`Drawable`结合使用,如层叠(`layer-list`)、帧动画(`animation-list`)等,以实现更复杂的视觉效果。同时,`shape`的属性还可以通过代码动态修改,适应不同...

    t_java_groundsbd_progress_源码

    Layer List Drawable则可以将多个Drawable层叠在一起,用于构建复杂的图形结构。 在实际应用中,为了使进度条与应用程序的其他界面元素保持一致,开发者通常需要考虑颜色方案、尺寸、动画效果等方面的设计。这个...

    Android Shape控件美化实现代码

    此外,Shape控件也可以与其他Drawable对象(如位图、层叠Drawable等)一起使用,通过`&lt;layer-list&gt;`标签来构建复杂的布局。 总之,Android Shape控件是实现UI美化的重要手段,它提供了一种灵活的方式来定义自定义...

    Shape_Drawables_Box:不断更新您的android项目的所有类型的形状可绘制对象

    1. **Android Drawable Resources**: Android中的可绘制资源是用于在屏幕上显示图像的文件,它们可以是位图(Bitmaps)、形状(Shapes)、动画(Animations)或者层叠列表(Layer List)。这些资源通常存储在项目的`...

Global site tag (gtag.js) - Google Analytics