方法一:代码实现
1. 自定义状态效果可以通过代码实现,也可以通过xml定义style实现。
2. 下面先介绍代码实现,通过StateListDrawable定义Button背景。
3. 由于View类中PRESSED_ENABLED_STATE_SET值不是公共常量,所以通过继承来访问了。
特注:其他控件的效果,比如ImageView,也可以通过这种方法实现,但是由于ImageView默认是没焦点,不可点击的,需要自己更改(需要点击就设置android:clickable="true" , 需要能够选中就设置android:focusable="true" )。
java 代码:
01 |
package
com.test.TestButton;
|
03 |
import
android.app.Activity;
|
04 |
import
android.content.Context;
|
05 |
import
android.graphics.drawable.Drawable;
|
06 |
import
android.graphics.drawable.StateListDrawable;
|
07 |
import
android.os.Bundle;
|
08 |
import
android.view.View;
|
09 |
import
android.widget.Button;
|
11 |
public
class TestButton extends
Activity {
|
13 |
public
void onCreate(Bundle savedInstanceState) {
|
14 |
super .onCreate(savedInstanceState);
|
15 |
setContentView(R.layout.main);
|
16 |
Integer[] mButtonState = { R.drawable.defaultbutton,
|
17 |
R.drawable.focusedpressed, R.drawable.pressed };
|
18 |
Button mButton = (Button) findViewById(R.id.button);
|
19 |
MyButton myButton =
new MyButton( this );
|
20 |
mButton.setBackgroundDrawable(myButton.setbg(mButtonState));
|
23 |
class
MyButton extends
View {
|
25 |
public
MyButton(Context context) {
|
31 |
public
StateListDrawable setbg(Integer[] mImageIds) {
|
32 |
StateListDrawable bg =
new StateListDrawable();
|
33 |
Drawable normal =
this .getResources().getDrawable(mImageIds[ 0 ]);
|
34 |
Drawable selected =
this .getResources().getDrawable(mImageIds[ 1 ]);
|
35 |
Drawable pressed =
this .getResources().getDrawable(mImageIds[ 2 ]);
|
36 |
bg.addState(View.PRESSED_ENABLED_STATE_SET, pressed);
|
37 |
bg.addState(View.ENABLED_FOCUSED_STATE_SET, selected);
|
38 |
bg.addState(View.ENABLED_STATE_SET, normal);
|
39 |
bg.addState(View.FOCUSED_STATE_SET, selected);
|
40 |
bg.addState(View.EMPTY_STATE_SET, normal);
|
XML代码:
在res/drawable下面新建mybutton_background.xml文件,内容如下:
01 |
<? xml
version=”1.0″ encoding=”utf-8″?>
|
02 |
< selector
xmlns:android=”http://schemas.android.com/apk/res/android“>
|
03 |
< item
android:state_focused=”true”
|
04 |
android:state_pressed=”false”
|
05 |
android:drawable=”@drawable/yellow” />
|
06 |
< item
android:state_focused=”true”
|
07 |
android:state_pressed=”true”
|
08 |
android:drawable=”@drawable/green” />
|
09 |
< item
android:state_focused=”false”
|
10 |
android:state_pressed=”true”
|
11 |
android:drawable=”@drawable/blue” />
|
12 |
< item
android:drawable=”@drawable/grey” />
|
这里面就定义了在不同状态下的显示图片,然后在layout里面定义Button的时候,指定它的background为这个mybutton_background
01 |
<? xml
version=”1.0″ encoding=”utf-8″?>
|
02 |
< LinearLayout
xmlns:android=”http://schemas.android.com/apk/res/android”
|
03 |
android:orientation=”vertical”
|
04 |
android:layout_width=”fill_parent”
|
05 |
android:layout_height=”fill_parent”
|
07 |
< Button
android:id=”@+id/btn”
|
08 |
android:layout_width=”wrap_content”
|
09 |
android:layout_height=”wrap_content”
|
10 |
android:text=”@string/mybtn”
|
11 |
android:background=”@drawable/mybutton_background” />
|
这种方式开发比较简单,适合做一些风格一致的Button,设置成同一个background就可以了。ImageView等控件如方法一中所述。
分享到:
相关推荐
综上所述,Android背景选择器Selector提供了丰富的视觉反馈,可以根据视图的不同状态改变其外观。通过巧妙地使用Selector,开发者可以提升应用程序的用户体验,使用户能直观地感知交互状态。无论是按钮、列表项还是...
### 浅谈Android的Selector背景选择器 #### 一、引言 在Android开发中,为了提高用户体验,经常需要对控件的外观进行定制化处理,特别是在不同的交互状态下展示不同的视觉效果。`Selector`作为Android中一个非常...
本篇文章将深入探讨Android中的Selector背景选择器的使用方法。 首先,让我们了解Selector的基本结构。Selector是XML文件,通常存储在项目的res/drawable目录下。以下是一个简单的Selector示例: ```xml <selector...
在Button中,我们主要用到两种Selector:一种是background selector(背景选择器),用于改变按钮的背景颜色或图片;另一种是text_color selector(文本颜色选择器),用于改变按钮的文字颜色。 2. **背景选择器...
在Android开发中,选择器(Selector)是一种非常重要的机制,用于定义View在不同状态下的显示样式,如按下、聚焦、默认等。`android selector注入器` 提供了一种高效且便捷的方式来管理这些状态选择器,使得开发者...
总的来说,“带有背景选择器的GridView”是一个实用的UI设计,通过合理利用Android的背景选择器特性,我们可以为用户提供更直观的交互反馈,提升应用的用户体验。通过阅读和分析提供的“带有背景选择器的GridView”...
`selectordemo`可能是包含一个示例项目的目录,展示了如何在Android Studio工程中使用`selector`实现文字和背景颜色的触摸反馈。通过分析和运行这个示例,开发者可以更直观地理解`selector`的工作原理,并将其应用到...
本文将深入探讨如何使用Selector来修改TextView的字体颜色和背景颜色。 首先,我们来创建两个XML文件,分别用于定义背景色和字体颜色的Selector。这两个文件将放在项目的res/color目录下。 1. `tbackground.xml` -...
Android selector状态选择器的使用方法主要包括以下几个方面: 一、目的效果 使用selector可以提高用户体验,提供更加直接和明显的事件反馈。例如,在一个导航栏中,使用selector可以根据不同的状态来改变图片和...
在这个"Android selector"主题中,我们将深入探讨如何创建并使用状态选择器来控制按钮(Button)和文字的样式变化。 首先,一个状态选择器通常是一个XML文件,存储在res/drawable目录下。例如,我们可以创建一个名...
这就是`selector`选择器的作用,它可以帮助我们在不同状态下切换图片,并保持住相应的状态。现在,我们将详细探讨如何在ListView、Button和ImageView中应用selector来实现这一功能。 首先,让我们了解什么是`...
在Android开发中,选择器(Selector)是一种非常重要的工具,它允许我们根据组件的状态改变其外观,如背景颜色、边框、文字颜色等。选择器主要用于按钮、列表项等交互元素,以提供视觉反馈,增强用户体验。下面我们...
这篇文章将详细讲解这两种资源的使用方法,以及如何结合使用它们来实现背景选择器、文字颜色选择器和背景渐变效果。 1. 背景选择器(Selector) Selector位于`res/drawable`目录下,它定义了不同状态下的图形资源。...
本文实例讲述了Android编程中selector背景选择器用法。分享给大家供大家参考,具体如下: 在Android开发过程中,经常对某一View的背景在不同的状态下,设置不同的背景,增强用户体验。如果按钮,在按下时,背景变化...
在Android开发中,选择器(Selector)是一种强大的工具,它允许开发者根据组件的状态改变其外观。在本场景中,我们讨论的是一个特定的实现:使用RadioGroup来创建一个具有下划线选中效果的选择器。RadioGroup是...
2. **Selector**: Selector是Android中的状态选择器,它可以定义不同状态下的图形表现。比如,当按钮被按下、聚焦或者默认状态时,背景可以有不同的颜色或样式。通过在XML中定义`<selector>`元素,可以轻松地实现...
本文将深入探讨Android选择器的应用,并通过一个实际的项目案例来阐述其工作原理和使用方法。 Android中的选择器通常指的是颜色选择器(ColorStateList)和Drawable选择器(DrawableStateList)。它们在按钮、文本...