通过使用层叠样式 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
分享到:
相关推荐
"Layer-listSample"是一个关于Android图形层叠列表(Layer-list)的示例项目,它可以帮助开发者深入理解如何使用这一XML布局资源来创建复杂的图形组合。在本文中,我们将详细探讨Layer-list在Android中的应用以及...
`layer-list`是Android中的一个图形绘制元素,它可以将多个图形层叠在一起。在我们的案例中,我们可以创建一个新的XML文件,例如`progress_drawable.xml`,放置在`res/drawable`目录下,然后在其中定义颜色。 下面...
这个XML文件将定义一个`layer-list`,它允许我们将多个图形层叠在一起,以实现阴影和背景的效果。以下是一个典型的`bg_shadow.xml`内容: ```xml <layer-list xmlns:android=...
3. **Layer-List**: Layer-List允许你将多个图形层叠在一起,形成复杂的背景图。这对于创建有层次感的布局特别有用。每个图形层由`<item>`标签表示,可以包含Shape、Bitmap或者其他布局元素。 ```xml <layer-list ...
总结起来,Android中自定义水平进度条样式的关键在于使用`layer-list`资源文件,并通过`item`标签创建背景和进度层。通过设置`stroke`属性中的`dashWidth`和`dashGap`,我们可以轻松地创建出黑色虚线的进度条效果。...
此外,还可以利用层叠(Layer List)来组合多个Shape,创建更复杂的图形。 总之,Android中的Shape为开发者提供了强大的绘图能力,使UI设计更加灵活和多样化。通过学习和实践`ShapeDemo`,我们可以更好地理解和掌握...
源码可能展示了如何使用层叠图像(Layer List Drawable)来创建复杂的图形效果。 5. **动画(Animations)**:源码可能包含了使用属性动画(Property Animation)、视图动画(View Animation)或过渡动画...
在实际应用中,`shape`不仅限于简单的背景,还可以与其他`Drawable`结合使用,如层叠(`layer-list`)、帧动画(`animation-list`)等,以实现更复杂的视觉效果。同时,`shape`的属性还可以通过代码动态修改,适应不同...
Layer List Drawable则可以将多个Drawable层叠在一起,用于构建复杂的图形结构。 在实际应用中,为了使进度条与应用程序的其他界面元素保持一致,开发者通常需要考虑颜色方案、尺寸、动画效果等方面的设计。这个...
此外,Shape控件也可以与其他Drawable对象(如位图、层叠Drawable等)一起使用,通过`<layer-list>`标签来构建复杂的布局。 总之,Android Shape控件是实现UI美化的重要手段,它提供了一种灵活的方式来定义自定义...
1. **Android Drawable Resources**: Android中的可绘制资源是用于在屏幕上显示图像的文件,它们可以是位图(Bitmaps)、形状(Shapes)、动画(Animations)或者层叠列表(Layer List)。这些资源通常存储在项目的`...