AndroidApp列表之圆角ListView源码Word文档下载推荐.docx
《AndroidApp列表之圆角ListView源码Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《AndroidApp列表之圆角ListView源码Word文档下载推荐.docx(15页珍藏版)》请在冰点文库上搜索。
//只有一项
04
setSelector(R.drawable.app_list_corner_round);
05
}else{
06
//第一项
07
setSelector(R.drawable.app_list_corner_round_top);
08
}
09
}elseif(itemnum==(getAdapter().getCount()-1))
10
//最后一项
11
setSelector(R.drawable.app_list_corner_round_bottom);
12
else{
13
//中间一项
14
setSelector(R.drawable.app_list_corner_shape);
15
3.定义选择器 如果只有一项,我们需要四个角都是圆角,app_list_corner_round.xml文件定义如下:
<
?
xmlversion="
1.0"
encoding="
utf-8"
>
shapexmlns:
android="
http:
//
gradientandroid:
startColor="
#B5E7B8"
android:
endColor="
#76D37B"
angle="
270"
/>
cornersandroid:
topLeftRadius="
4dip"
topRightRadius="
bottomLeftRadius="
bottomRightRadius="
/shape>
如果是顶部第一项,则上面两个角为圆角,app_list_corner_round_top.xml定义如下:
1
2
3
4
5
6
7
8
如果是底部最后一项,则下面两个角为圆角,app_list_corner_round_bottom.xml定义如下:
/>
如果是中间项,则应该不需要圆角,app_list_corner_shape.xml定义如下:
4.背景图片 因为默认的情况下,ListView就要显示一个圆角的边框,这个我们使用一张9patch背景图片来实现app_list_corner_border.9.png,在这里提示一下,做9patch背景图片的时候,记得把内容区域定义为边框线以内的区域.参考前面提供的素材和核心代码,我们初步实现如下:
(1).自定义CornerListView.java:
/**
*圆角ListView
*/
publicclassCornerListViewextendsListView{
publicCornerListView(Contextcontext){
super(context);
publicCornerListView(Contextcontext,AttributeSetattrs,intdefStyle){
super(context,attrs,defStyle);
publicCornerListView(Contextcontext,AttributeSetattrs){
super(context,attrs);
@Override
publicbooleanonInterceptTouchEvent(MotionEventev){
16
switch(ev.getAction()){
17
caseMotionEvent.ACTION_DOWN:
18
intx=(int)ev.getX();
19
inty=(int)ev.getY();
20
intitemnum=pointToPosition(x,y);
21
if(itemnum==AdapterView.INVALID_POSITION)
22
break;
23
else
24
{
25
26
27
28
29
30
31
32
33
34
35
36
37
38
caseMotionEvent.ACTION_UP:
39
break;
40
41
returnsuper.onInterceptTouchEvent(ev);
42
43
这个CornerListView主要处理了点击项的选择器的切换.
(2).列表布局文件和列表项布局文件:
列表布局文件main_tab_setting.xml:
LinearLayoutxmlns:
orientation="
vertical"
layout_width="
fill_parent"
layout_height="
com.tianxia.app.floworld.view.CornerListViewandroid:
id="
@+id/setting_list"
wrap_content"
layout_margin="
10dip"
background="
@drawable/app_list_corner_border"
cacheColorHint="
#00000000"
/com.tianxia.app.floworld.view.CornerListView>
/LinearLayout>
列表项布局文件main_tab_setting_list_item.xml:
RelativeLayoutxmlns:
ImageViewandroid:
@+id/setting_list_item_arrow"
layout_alignParentRight="
true"
layout_centerVertical="
layout_marginLeft="
15dip"
layout_marginRight="
src="
@drawable/appreciate_tab_list_item_arrow_small"
TextViewandroid:
@+id/setting_list_item_text"
layout_toLeftOf="
@id/setting_list_item_arrow"
textSize="
16dip"
textColor="
#000000"
paddingTop="
paddingBottom="
paddingLeft="
/RelativeLayout>
(3)界面实现,显示界面SettingTabActivity.java:
publicclassSettingTabActivityextendsActivity{
privateCornerListViewcornerListView=null;
privateList<
Map<
String,String>
listData=null;
privateSimpleAdapteradapter=null;
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main_tab_setting);
cornerListView=(CornerListView)findViewById(R.id.setting_list);
setListData();
adapter=newSimpleAdapter(getApplicationContext(),listData,R.layout.main_tab_setting_list_item,newString[]{"
text"
},newint[]{R.id.setting_list_item_text});
cornerListView.setAdapter(adapter);
*设置列表数据
privatevoidsetListData(){
listData=newArrayList<
();
map=newHashMap<
String,String>
map.put("
,"
图库更新"
);
listData.add(map);
map=newHashMap<
收藏图片"
下载目录"
(4).效果图