如何在android中创建像脉冲一样的自定义UI

时间:2012-08-02 09:51:46

标签: android android-layout

我正在尝试创建一个类似于pulse android app的自定义UI。据我了解,首先我必须先创建一个自定义按钮,如下图所示。

enter image description here

我的按钮上有图像和文字叠加。我知道这是一个基本问题,但我正面临这个问题,因为我是android开发的初学者。请帮我理解如何使用它。

2 个答案:

答案 0 :(得分:3)

您可以使用黑色文字和一些透明度从ImageViewTextView组成一个简单的布局。两个视图都应放在RelativeLayout.内。然后为RelativeLayout设置一个点击监听器,并在点击时采取适当的操作。

例如:

<RelativeLayout
    android:id="@+id/item"
    android:layout_width="150dp"
    android:layout_height="150dp" >

    <ImageView
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:src="@drawable/my_test_image" />

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:layout_alignParentBottom="true"
        android:background="#4000"
        android:text="Giorgio Armany Galaxy S"
        android:textColor="#FFF" />

</RelativeLayout>

然后在你的程序中:

RelativeLayout item=(RelativeLayout)findViewById(R.id.item);
    item.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            // take action
        }
});

这是一个场景。另一种情况是扩展Button并根据需要编写自定义UI组件,这将涉及更多编码,但您将拥有一个独特的组件。

答案 1 :(得分:1)

如果它回答了你的问题,请接受答案。

现在关于网格集成的部分:将上面示例的XML内容(RelativeLayout + ImageView + TextView)保存到新的XML文件中,让它为layout/grid_item.xml
idImageView

添加唯一的TextView

然后在适配器的getView()方法中扩充该布局并按ID查找ImageView和TextView,并设置适当的内容。

注意,这不是完整的源代码,但基本的Scheleton应如下所示:

public View getView(int position, View convertView, ViewGroup parent) {
    ....
    convertView = mInflater.inflate(R.layout.grid_item, null);
    ....

    ImageView myImage=(ImageView)convertView.findViewById(R.id.my_image);
    TextView myTextView=(TextView)convertView.findViewById(R.id.my_textview);

    myImage.setImageResource(...);
    myTextView.setText(...);
    ...

    return convertView
}