今晚搞android自定义View,遇到了一个小问题。。爬了半天帖子,才爬到。。现在在这记录下来
自定义view,有两种方式。。。。。。
1.先继承一个view---然后通过后台的draw方法给控件绘制前台效果。这个方法。对于我来说,有点操蛋。。我不太喜欢这个方式
2:继承view,然后用各种资源文件,layout文件,还有动画。。堆积成一个个控件,后台代码只要很少很少的东西就行 了。。。为什么要这样?因为这样写代码更爽。
第一步:写一个类,继承一个view-这里千万注意构造函数----不然会出错
packagecom.example.mycontrols;importandroid.content.Context;importandroid.util.AttributeSet;importandroid.widget.ListView;importandroid.widget.SimpleAdapter;importcom.example.controlshelpers.R;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;/*** Created by li on 2016/3/14.*/
public class Mylistview extendsListView {//构造函数
publicMylistview(Context context,AttributeSet paramAttributeSet) {super(context,paramAttributeSet);
SimpleAdapter adapter= newSimpleAdapter(context, getData(), R.layout.mylistviewitem,new String[]{"title", "info", "img"},new int[]{R.id.title, R.id.info, R.id.img});this.setAdapter(adapter);
}private List>getData() {
List> list = new ArrayList>();
Map map = new HashMap();
map.put("title", "G1");
map.put("info", "google 1");
map.put("img", R.drawable.image1);
list.add(map);
map= new HashMap();
map.put("title", "G2");
map.put("info", "google 2");
map.put("img", R.drawable.image2);
list.add(map);
map= new HashMap();
map.put("title", "G3");
map.put("info", "google 3");
map.put("img", R.drawable.image3);
list.add(map);returnlist;
}
}
注意构造函数里的那个layout文件哦。。。这个文件在这里呢
android:id="@+id/img"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_margin="5px" />
android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="vertical">
android:id="@+id/title"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textColor="#FFFFFFFF"android:textSize="22px" />
android:id="@+id/info"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textColor="#FFFFFFFF"android:textSize="13px" />
好了。。。。这也,这个控件就完成了。。虽然布局什么的都很丑。。但是,原理出来了
最后一步,在另外一个工程里引用,是一个activity哦
android:id="@+id/ivMore"android:layout_width="wrap_content"android:layout_height="wrap_content"android:scaleType="fitXY"android:src="@drawable/backgroundimage" />
android:id="@+id/listParent"android:layout_width="fill_parent"android:layout_height="fill_parent"android:layout_alignParentLeft="true"android:layout_alignParentTop="true">
android:id="@+id/listMore"android:layout_width="256px"android:layout_height="fill_parent"android:layout_alignParentLeft="true"android:layout_alignParentTop="true" />