初学android,想要找些小程序练习一下。在使用手机QQ是发现联系人中的圆形图标,比较好看。所以琢磨着自己是实现一下,当然咯只是界面的效果。

首先想到的就是使用Android中的ListView来显示每一项的联系人。而ListView在一个Activity中显示出来有2中方式,一个是在XML文件中声明一个ListView的标签,通过findViewById()来找到,然后通过适配器Adapter来加载。另一种方式,显示内容的是从Activity派生的ListActivity类,然后在使用适配器来加载内容。(此处只是加载显示几项的内容,如果项目条数太多,则要是对ListView中显示Item进行优化)

理解完ListView每个Item项的加载,下面解决的是怎么将所给的图片转化为圆形在界面上显示。解决方式是从ImageView类中派生一个CustomImageView类,并且重写其中的onDraw()函数来达到显示圆形的目的。因为当我们CustomImageView类从ImageView类派生而来,所以在XML中可以使用<CustomImageView/>这个标签来定义显示内容。但是在使用时注意:要将这个CustomImageView类的路径写进去。如:

<com.android.listviewdemo.CustomImageViewandroid:id="@+id/image"android:layout_width="60dp"android:layout_height="60dp"android:paddingLeft="10dp"android:src="@drawable/test"/>

而我们在onDraw()函数中需要做的是:

1、获取父类中的到的图片信息Bitmap.

2、对图片大小进行处理,变成正方形。(可不做)

3、使用方法叠加,只显示出中间圆形部分。

Drawabledrawable=getDrawable();if(null!=drawable){mSrc=((BitmapDrawable)drawable).getBitmap();}intmin=Math.min(mWidth,mHeight);//长度如果不一致,按小的值进行压缩mSrc=Bitmap.createScaledBitmap(mSrc,min,min,false);canvas.drawBitmap(createCircleImage(mSrc,min),0,0,null);


ListView在ListActivity类中的实现如下:

publicclassMainActivityextendsListActivity{privatestaticString[]aa=newString[]{"helloworld","thisismylistview","邵洋江加油","你会成功的","youwillsuccess"};privatestaticint[]draw=newint[]{R.drawable.chutian,R.drawable.icon,R.drawable.chutian,R.drawable.chutian,R.drawable.test};@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);//每个list里面放的都是MAP,map里面放的是键值对,这里指图片和文字List<Map<String,Object>>Items=newArrayList<Map<String,Object>>();//把该显示的内容放到list中for(inti=0;i<aa.length;i++){Map<String,Object>item=newHashMap<String,Object>();item.put("image",draw[i]);item.put("textview1",aa[i]);Items.add(item);}//构建适配器Adapter,将数据与显示数据的布局页面绑定SimpleAdaptersimpleAdapter=newSimpleAdapter(this,Items,R.layout.activity_main,newString[]{"textview1","image"},newint[]{R.id.textview1,R.id.image});//通过setAdapter()方法把适配器设置给ListViewsetListAdapter(simpleAdapter);}

运行效果图片:


Demo链接:http://down.51cto.com/data/1979117

更多相关文章

  1. Android编程开发之在Canvas中利用Path绘制基本图形(圆形,矩形,椭
  2. Android常用UI组件 - ListView
  3. Idea8启蒙开发Google手机Android四步走
  4. Android中的RecyclerView的使用(一)
  5. Android(安卓)TextWatcher监控EditText中的输入内容并限制其输入
  6. Android(安卓)EditText 的使用
  7. java/android 设计模式学习笔记(6)---适配器模式
  8. 初级——程序如何打包成apk文件
  9. Android(安卓)EditText 的使用及值得注意的地方

随机推荐

  1. 详解MySQL的Seconds_Behind_Master
  2. MySQL InnoDB架构的相关总结
  3. MySQL 独立索引和联合索引的选择
  4. MySQL数据表分区策略及优缺点分析
  5. MySQL高级特性——数据表分区的概念及机
  6. MySQL 慢日志相关知识总结
  7. MySQL优化之如何写出高质量sql语句
  8. mysql数据库入门第一步之创建表
  9. MySQL 隔离数据列和前缀索引的使用总结
  10. MySQL 使用自定义变量进行查询优化