今天在Android群里面有人再求圆角ListView的实现方式,正好自己以前实现过。因此就共享了现在将其实现方式写在博客中共他人学习。给出实现方式之前顺带加点自己的想法,感觉上android中方形的ListView还是太“硬性”,没有圆角的有亲和力。连Apple也为了“圆角”这个设计去申请专利。
看来圆角确实比较适合现在人们的喜好吧。
照老规矩先上两张效果图吧:
第一张:
第二张:
该方式主要就是需要重新去实现自己的ListView代码如下:
package com.kiritor.corner_listview;
import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.AdapterView;
import android.widget.ListView;
public class MyListView extends ListView {
public MyListView(Context context) {
super(context);
}
public MyListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
int x = (int) ev.getX();
int y = (int) ev.getY();
int itemnum = pointToPosition(x, y);
if (itemnum == AdapterView.INVALID_POSITION)
break;
else {
if (itemnum == 0) {
if (itemnum == (getAdapter().getCount() - 1)) {
// 只有一项数据,设置背景设置为圆角的
setSelector(R.drawable.list_round);
} else {
// 第一项,设置为上面为圆角的
setSelector(R.drawable.list_top_round);
}
} else if (itemnum == (getAdapter().getCount() - 1))
// 最后一项,设置为下面为圆角的
setSelector(R.drawable.list_bottom_round);
else {
// 中间项,不用设置为圆角
setSelector(R.drawable.list_center_round);
}
}
break;
case MotionEvent.ACTION_UP:
break;
}
return super.onTouchEvent(ev);
}
}
MainActivity
package com.kiritor.corner_listview;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
public class MainActivity extends Activity implements onItemClickListener {
private MyListView listView_1, listView_2, listView_3;
private ArrayList
差不多也就是这样了,还有相关资源文件。
这里就不一一给出了。
完整源码部分:ListView实现圆角效果
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。