一如既往,我们继续从微信当中寻找Android开发的思路,我们一起来看下面的这样一个效果。 这是微信里的一个界面,可以看到的是这个界面中大量使用了圆角的元素。当然,在其他的应用中,我们依然可以找到类似的影子,这自然是从IOS上移植过来的风格啦,俨然已经成了设计界的标准。

那么今天就让大家跟着我一起来实现这样一个圆角的ListView吧。首先来说说实现的原理,这里采用的是最为简单的,在我们的前面几篇文章中提到过的Shape方法。其实就是定义一个xml资源文件啦。

首先是创建这个xml文件,我们可以在res目录下创建一个drawable的文件夹,然后在此文件夹中创建这个xml文件:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" ><corners android:radius="8dp"/><solid android:color="#ffffff"/><stroke android:color="#000000" android:width="0.25dp"/>
</shape>

接下来我们创建用于列表项的布局layout_item:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><TextViewandroid:id="@+id/TextView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_alignParentTop="true"android:textSize="18sp"android:layout_margin="10dp"android:textIsSelectable="true" /><ImageViewandroid:id="@+id/ImageView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentRight="true"android:layout_alignParentTop="true"android:layout_margin="10dp"android:contentDescription="@string/Description"android:src="@drawable/arrow" />
</RelativeLayout>

这里的布局选择了最为简单的一种,即列表项显示为文本。既然有了自定义的列表项,那么我们就继续自定义一个适配器类吧:

/** 圆角列表* @作者:秦元培* @时间:2014年1月1日*/
package com.Android.ListViewEx;import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;public class Adapter extends BaseAdapter {private Context mContext;private String[] mData;public Adapter(Context mContext,String[] mData){this.mContext=mContext;this.mData=mData;}@Overridepublic int getCount() {return mData.length;}@Overridepublic Object getItem(int Index) {return mData[Index];}@Overridepublic long getItemId(int Index) {return Index;}@Overridepublic View getView(int Index, View mView, ViewGroup mParent) {mView=LayoutInflater.from(mContext).inflate(R.layout.layout_item, null);TextView tv=(TextView)mView.findViewById(R.id.TextView);tv.setText(mData[Index]);return mView;}}

最后就是主界面啦,主界面较为简单,使用ListView或者ListActivity就可以啦,主要代码如下:

/** 圆角列表* 作者:秦元培* 时间:2013年12月28日* 备注:暂时不怎么会写,等把代码研究清楚了再说吧*/
package com.Android.ListViewEx;import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.ListView;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ListView mView=(ListView)findViewById(R.id.ListView);Adapter mAdapter=new Adapter(this,new String[]{"选项1","选项2","选项3","选项4","选项5","选项6","选项7","选项8","选项9","选项10"});mView.setAdapter(mAdapter);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}

最后的运行效果如下图所示,你或许会说这个怎么和微信的效果不一样啊,其实呢,我们今天只是实现了一个ListView,而微信中却使用了多个ListView,怎么把多个

ListView放一起呢,解决方案是ScrollView,这一点大家可以自行去做更加深入的研究。

Android开发学习之快速实现圆角ListView相关推荐

  1. Android开发学习之以CameraAPI方式实现相机功能(一)——快速实现相机

    今天无意当中发现在<Android开发学习之基于ZBar实现微信扫一扫>中的一部分代码可以用来以硬件方式实现一个照相机的功能,在<Android开发学习之调用系统相机完成拍照的实现& ...

  2. Android开发学习---使用Intelij idea 13.1 进行android 开发

    Android开发学习---使用Intelij idea 13.1 进行android 开发 原文:Android开发学习---使用Intelij idea 13.1 进行android 开发 1.为 ...

  3. HTML5+app开发学习之快速入门篇

    HTML5+app开发学习之快速入门篇 5+app开发概念理解相关 开发环境与支持 快速入门实战 5+app开发概念理解相关 见博文:学习跨平台移动应用开发必须理解的一些概念 开发环境与支持 开发环境 ...

  4. android培训内容明细,记录Android开发学习

    记录Android开发学习 Menu菜单学习 1.掌握Android中菜单的创建. 2.掌握Intent信使组件. 创建菜单Menu 我们模仿微信菜单栏学习,创建一个于微信菜单栏相似的菜单 那么我们应 ...

  5. android开发学习之路——连连看之游戏逻辑(五)

    GameService组件则是整个游戏逻辑实现的核心,而且GameService是一个可以复用的业务逻辑类. (一)定义GameService组件接口 根据前面程序对GameService组件的依赖, ...

  6. 《Java和Android开发学习指南(第2版)》—— 1.5 本章小结

    本节书摘来异步社区<Java和Android开发学习指南(第2版)>一书中的第1章,第1.5节,作者:[加]Budi Kurniawan,更多章节内容可以访问云栖社区"异步社区& ...

  7. 《Java和Android开发学习指南(第2版)》——第2章,第2.10节本章小结

    本节书摘来自异步社区<Java和Android开发学习指南(第2版)>一书中的第2章,第2.10节本章小结,作者 [加]Budi Kurniawan,更多章节内容可以访问云栖社区" ...

  8. Android开发学习之基于ViewPager实现Gallery画廊效果

    通过我们前面的学习,我们知道ViewPager是可以做出近乎完美的滑动体验,回顾整个Android,我们发现Gallery具备同样的特点,于是我们大胆地猜想,Gallery是否和ViewPager之间 ...

  9. Android开发学习总结(四)——Eclipse在线安装ADT插件

    Android开发学习总结(四)--Eclipse在线安装ADT插件 要想使用Eclipse开发Android应用,首先要安装一个ADT插件,在此记录一下在Eclipse中采用在线安装的方式ADT插件 ...

最新文章

  1. JAVA正则表达式:Pattern类与Matcher类详解(转)
  2. 如何理解H264 编码
  3. token验证_Swagger中添加Token验证
  4. Nginx配置指令之listen
  5. Xilinx视频加速技术专场
  6. 电脑很卡~~~~为什么???
  7. 动态ip软件win7_IPXE+ISCSI Target安装WIN7
  8. scala 学习笔记--集合
  9. 查看Sql Server2016是否激活
  10. 怎么让计算机唱歌视频教程,如何制作快手唱歌视频
  11. Android 修改默认来电他,通知铃声
  12. 第一周-机器学习监督学习-无监督学习
  13. eNSP模拟下的vlanif配置实现(一个汇聚交换机,两个接入交换机)通过三层交换机实现vlan间的三层通信
  14. 编程训练1-每天吃鸡蛋花费最少问题
  15. opus 源码下载 以及 相关资料
  16. 2977 生理周期(简单的枚举例子)
  17. 数组-leetcode#15-找出三个数之和等于0的所有不重复序列
  18. echarts 柱状图--柱体的点击事件
  19. 教你如何生一个漂亮宝宝
  20. 正则表达式的条件用法

热门文章

  1. 全面分析RHCE7(红帽认证工程师)考试题目之 ----Samba文件共享篇
  2. 一个更好的C++序列化/反序列化库Kapok
  3. DB2建立不记录日志的表
  4. SpringMVC中自定义类型转换器
  5. 移动web app开发必备 - zepto事件问题
  6. 今天心情有点糟....
  7. Springboot 应用部署建议
  8. 使用Hyper-V Server PowerShell
  9. Android用开源优势超Windows Mobile
  10. FortiGate设备管理