1

我用自定义适配器构建了一个 ListView,这样我就有了一个 Checkbox(当时不可见)和一个 TextView 来显示一些文本。

现在我想在列表中选择一个项目时有漂亮的动画(当你触摸元素时背景是蓝色的)。这可能吗?

我已经添加了一个 OnLongTouchListener 并且它工作但没有动画!

得到一些帮助会很酷:)

布局-XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >

    <CheckBox
        android:id="@+id/list_checkbox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checked="false"
        android:visibility="gone"
        android:text="" 
        android:focusable="false"
        android:clickable="false">
    </CheckBox>

    <TextView
        android:id="@+id/list_text"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text=""
        android:clickable="true"
        android:longClickable="true" >
    </TextView>

</LinearLayout>

Java代码:

private class CommunityListAdapter extends ArrayAdapter<Community> {

    private List<Community> items;
    private Context context;

    public CommunityListAdapter(Context context, List<Community> communities) {
        super(context, R.layout.list_item, communities);
        this.items = communities;
        this.context = context;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view = convertView;
        if (view == null) {
            LayoutInflater inflater = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = inflater.inflate(R.layout.list_item, null);
        }

        Community item = items.get(position);
        if(item != null) {
            TextView textView = (TextView) view.findViewById(R.id.list_text);
            if(textView != null) {
                textView.setText(item.getName());
                textView.setOnLongClickListener(new OnLongClickListener() {

                    public boolean onLongClick(View view) {
                        startActionMode(new MultiChoiseCABListener());
                        Toast.makeText(context, "TEST", 10).show();
                        return false;
                    }

                });
            }
        }

        return view;
    }
}
4

2 回答 2

0

在您的可绘制对象中创建按下状态 xml,您可以在其中设置不同的位图以在不同的点击状态下显示,并将该 xml 设置为您的主要布局背景。

示例状态 xml。

list_item_bg_state.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item  android:state_pressed="true" android:drawable="@drawable/blue_bg" />
    <item android:drawable="@drawable/white_bg"/>
</selector>

其中 blue_bg 和 white_bg 是可绘制对象中的两个.png 图像。

注意上面的 xml 应该在你的 drawables 文件夹中。现在将此 xml 设置为列表项主布局的背景。喜欢,

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/list_item_bg_state"
    android:orientation="horizontal" >
</LinearLayout>

问候, Aqif

于 2012-06-22T13:24:05.307 回答
0

您尚未定义动画,请定义动画并与此视图关联。

        Animation a = new AlphaAnimation(1.00f, 0.00f);
        a.setDuration(1000);
        YOURTEXTVIEW.startAnimation(a);
于 2012-06-22T13:19:12.603 回答