单击复杂的LinearLayout时如何制作闪光效果就像单击ListView项目一样?

时间:2012-03-16 00:41:06

标签: android android-layout

我有一些ListView。其中的所有项目都是矩形,但顶部有圆角,如this照片所示。为了创建它,我用拐角剪切了顶部条纹并将其保存为 item_bg_white_top 图像,并将1px高度的条纹保存为 item_bg_white_line 图像。这就是我构建它的方式。

点击ltest布局时,我想制作闪光效果,就像点击ListView项目一样。

我怎么能这样做?

我在ltest上尝试过以下代码,但它没有帮助。当我在ltest_inner上尝试此代码时,它只是将其背景更改为黑色。

final LinearLayout ll = (LinearLayout)findViewById(R.id.ltest);     
    ll.setOnClickListener(new View.OnClickListener() {         
        public void onClick(View v) {               
            ll.setBackgroundResource(android.R.drawable.list_selector_background);               
        }
    });

item.xml

<?xml version="1.0" encoding="utf-8"?>
            <LinearLayout
                android:id="@+id/ltest"
                android:layout_width="300dp"
                android:layout_height="33dp" 
                android:orientation="vertical">

                <LinearLayout
                    android:id="@+id/ltest_inner"
                    android:layout_width="300dp"
                    android:layout_height="8dp"                  
                    android:background="@drawable/item_bg_white_top" />

                <LinearLayout
                    android:layout_width="300dp"
                    android:layout_height="25dp" 
                    android:background="@drawable/item_bg_white_line_repeat" >
                </LinearLayout>
            </LinearLayout>

item_bg_white_line_repeat.xml

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/item_bg_white_line"
    android:tileMode="repeat" />

1 个答案:

答案 0 :(得分:0)

您要做的是设置一个选择器并将其用作背景的drawable。

在drawable文件夹中创建一个xml文件,并为其添加一个选择器:

<?xml version="1.0" encoding="utf-8"?>
      <selector xmlns:android="http://schemas.android.com/apk/res/android">
          <item android:state_enabled="false" android:state_pressed="true" android:drawable="@drawable/disabled_pressed_image" />
          <item android:state_enabled="false" android:state_focused="true" android:drawable="@drawable/enabled_focused_image" />
          <item android:state_enabled="false" android:drawable="@drawable/enabled_image" />
          <item android:state_focused="true" android:drawable="@drawable/focused_image" />
          <item android:state_pressed="true" android:drawable="@drawable/pressed_image" />
          <item android:drawable="@drawable/default_image" />
</selector>

上面的drawables参考图像也在你的drawable文件夹中。您不必实现所有状态。这些只是一些可能的组合。

然后将其作为线性布局的背景附加:

<LinearLayout
    android:id="@+id/ltest"
    android:layout_width="300dp"
    android:layout_height="33dp" 
    android:background="@drawable/selector_file_name"
    android:orientation="vertical">

其中,选择器文件名只是您为上面提到的选择器xml文件指定的名称。

还要考虑删除内部LinearLayouts。您可以使用9-patch执行您要执行的操作,然后您将只拥有一个LinearLayout(如果它不会托管其他视图,您可以将其更改为ImageView)。