今天在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; /*** * 自定义listview * * @author Kiritor * */ 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
差不多也就是这样了,还有相关资源文件
这里就不一一给出了
完整源码部分:
http://download.csdn.net/detail/kiritor/5176655
- Android(安卓)入门第十讲02-广播(广播概述,使用方法(系统广播,自定义
- Android上实现仿IOS弹性ListView
- Android(安卓)Studio连接真机没反应
- android上传文件至服务器(android端+服务器端)
- Js中JSON.parse函数解析导致的数据异常
- android 解码出来的视频frame数据,是如何一步步的传递到显示端的(
- Android桌面组件开发之桌面快捷方式(一)
- 金三银四背后,一个 Android(安卓)程序员从被裁到拿到 Offer 的面
- Android(安卓)R.java类的手动生成
随机推荐
-
android 实现一个按钮按下时总触发一个事
-
Android(安卓)应用和系统优化V1.2
-
史上最全的Android常规知识点面试题集锦
-
Android中用html代码来实现界面 WebView
-
乐博Android客户端发布
-
Android中RTL布局的适配
-
特殊情况下的APP设计⑤:最全的临时框设计
-
Android(安卓)运行时权限管理最佳实践
-
Android(安卓)混淆器 - ProGuard
-
【工作感悟】Android(安卓)开发者,如何提