看到百威啤酒的客户端主界面的按钮,感觉比较新奇,先看下图片:
[img]
http://images.cnblogs.com/cnblogs_com/kofi/201103/201103222037399381.png[/img]
注意图中我画的箭头,当时鼠标点击的黑色圈圈的位置,然后按钮出现了按下的效果(黄色的描边)
刚开始看到这种效果很是好奇,不知道是怎么实现的,后来仔细一想,应该是整个啤酒罐是一张图片(ImageView),该图片是布局在三个按钮之上,然后就是最关键的地方,把图片设置为不可获取焦点,也就是android:focusable="false" ,就这样简单的一行,就可以搞定了!
为了验证我的想法,我建了一个工程来做测试,效果如下图所示:
具体代码如下:
main.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="button1"
android:background="@drawable/button_selector"
/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="button2"
android:background="@drawable/button_selector"
/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="button3"
android:background="@drawable/button_selector"
/>
</LinearLayout>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/bg2"
android:focusable="false"
/>
</RelativeLayout>
button_selector.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" >
<shape>
<!-- 实心,即填充 -->
<solid android:color="#8470FF"/>
<!-- 描边 -->
<stroke
android:width="2dp"
android:color="#FFFF00"/>
<!-- 圆角 -->
<corners
android:radius="5dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
<item>
<shape>
<!-- 实心,即填充 -->
<solid android:color="#8470FF"/>
<corners
android:radius="5dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
</selector>
关于button_selector.xml中shape的使用有疑问的可以看我上次的文章:Android中shape的使用
ok,就说这么多……
分享到:
相关推荐
本文档将详细介绍Android2.2版本中的`View`类及其相关属性,帮助开发者更好地理解和使用这些重要的UI组件。 #### 已知直接子类 `View`类有许多直接子类,包括但不限于: - **AnalogClock**:模拟时钟视图。 - **...
在Android开发中,`PopupWindow` 是一个非常重要的组件,常用于实现各种弹出式菜单、下拉选择器等交互效果...在"Android源码——PopupWindow实现弹出菜单.zip"中,你将找到一个具体的实例,帮助你更好地掌握这一技术。
在Android开发中,我们经常需要对用户交互进行精细化设计,以提供更好的用户体验。"android获取焦点后按钮变大"这个话题就是关于如何在用户点击或触摸按钮时改变其大小,使其更加突出,从而吸引用户的注意力。这个...
使用RelativeLayout,我们可以使用`android:layout_alignParentTop="true"`和`android:layout_alignParentEnd="true"`属性将按钮固定在右上角。 ```xml <RelativeLayout xmlns:android=...
【标题】"安卓Android源码——android 悬浮窗.rar" 涉及到的是Android系统中的悬浮窗功能实现,这是Android应用开发中一个相对高级且实用的技术。悬浮窗通常被用于实现类似通知、快捷操作或者辅助工具的功能,可以在...
这个压缩包文件"安卓Android源码——简单实现 一条线 跟随 viewpager 滚动.zip"提供的正是这样一个功能的实现:一条简单的线条随着ViewPager的滚动而移动,显示出当前选中的页面。 这个功能主要涉及到以下几个关键...
在Android应用开发过程中,经常需要为用户提供交互式的视觉反馈,其中一种常见的需求就是改变按钮在不同状态下的显示效果,比如当用户点击按钮时,按钮的图标发生变化。本文将详细介绍如何在Android中实现按钮(特别...
透明背景可以使用`@android:color/transparent`或`@null`来实现。例如,`TextView`默认是透明的,但如果你想让`Button`、`ImageButton`或`ImageView`透明,就需要指定此属性。 `android:clickable`属性决定视图是否...
本文实例讲述了Android编程实现ListView中item部分区域添加点击事件功能。分享给大家供大家参考,具体如下: ...android:focusable=false 就是禁止点击,但试了试没有效果,后来师傅提醒我,我的这个listview使
最后,这个实例代码中的"安卓Android源码——来电弹屏实例代码,带关闭按钮.rar"文件包含了完整的实现代码,可以下载解压后进行学习和调试。通过理解并实践这个例子,开发者可以更好地掌握Android来电处理和悬浮窗口...
本资料“安卓Android源码——android 悬浮窗.zip”可能包含实现悬浮窗功能的源代码示例,帮助开发者深入理解如何在Android应用中创建和管理悬浮窗。 悬浮窗的实现主要依赖于两个关键组件:SYSTEM_ALERT_WINDOW权限...
Android UI属性是指在XML布局文件中定义的各种属性,用于控制控件和布局的外观和行为。下面我们将深入探讨Android UI属性及其应用。 一、基本布局属性 1. `layout_width` 和 `layout_height`:这两个属性定义了...
### 关于Android的XML属性详细说明 #### 概述 在Android开发中,XML文件用于定义用户界面的布局和外观。这些文件包含了丰富的属性,允许开发者定制化UI元素的各个方面。本文将详细介绍部分核心XML属性的功能及其...
这份"安卓Android源码——所有Dialog对话框.rar"压缩包很可能包含了各种类型的Dialog实现,这对于我们理解Android系统中Dialog的工作原理以及自定义Dialog的实现方法非常有帮助。 首先,我们要知道Dialog是基于...
本示例——"Android 实现水平、垂直方向文字跑马灯效果demo",将详细介绍如何在Android应用中创建这样的效果。跑马灯效果通常应用于通知栏提示、广告轮播或标题滚动等场景。 首先,我们需要理解跑马灯效果的基本...
### Android XML 属性详解 #### 一、android:alpha **相关方法:** `setAlpha(float)` **描述:** 此属性定义了视图的透明度级别。取值范围为0到1之间,其中0表示完全透明(即不可见),1表示完全不透明(即完全...
在"安卓Android源码——应用悬浮图标显示.zip"这个压缩包中,我们可以预见到包含了一个名为"FloatsWindow"的文件或目录,这很可能是一个实现悬浮窗口功能的核心类。 首先,让我们从基础知识开始。在Android中,创建...