初學(xué)android,想要找些小程序練習(xí)一下。在使用手機(jī)QQ是發(fā)現(xiàn)聯(lián)系人中的圓形圖標(biāo),比較好看。所以琢磨著自己是實(shí)現(xiàn)一下,當(dāng)然咯只是界面的效果。
成都創(chuàng)新互聯(lián)是一家專(zhuān)業(yè)提供惠陽(yáng)企業(yè)網(wǎng)站建設(shè),專(zhuān)注與網(wǎng)站建設(shè)、網(wǎng)站制作、HTML5、小程序制作等業(yè)務(wù)。10年已為惠陽(yáng)眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)的建站公司優(yōu)惠進(jìn)行中。
首先想到的就是使用Android中的ListView來(lái)顯示每一項(xiàng)的聯(lián)系人。而ListView在一個(gè)Activity中顯示出來(lái)有2中方式,一個(gè)是在XML文件中聲明一個(gè)ListView的標(biāo)簽,通過(guò)findViewById()來(lái)找到,然后通過(guò)適配器Adapter來(lái)加載。另一種方式,顯示內(nèi)容的是從Activity派生的ListActivity類(lèi),然后在使用適配器來(lái)加載內(nèi)容。(此處只是加載顯示幾項(xiàng)的內(nèi)容,如果項(xiàng)目條數(shù)太多,則要是對(duì)ListView中顯示Item進(jìn)行優(yōu)化)
理解完ListView每個(gè)Item項(xiàng)的加載,下面解決的是怎么將所給的圖片轉(zhuǎn)化為圓形在界面上顯示。解決方式是從ImageView類(lèi)中派生一個(gè)CustomImageView類(lèi),并且重寫(xiě)其中的onDraw()函數(shù)來(lái)達(dá)到顯示圓形的目的。因?yàn)楫?dāng)我們CustomImageView類(lèi)從ImageView類(lèi)派生而來(lái),所以在XML中可以使用
而我們?cè)趏nDraw()函數(shù)中需要做的是:
1、獲取父類(lèi)中的到的圖片信息Bitmap.
2、對(duì)圖片大小進(jìn)行處理,變成正方形。(可不做)
3、使用方法疊加,只顯示出中間圓形部分。
Drawable drawable = getDrawable(); if (null != drawable) { mSrc = ((BitmapDrawable) drawable).getBitmap(); } int min = Math.min(mWidth, mHeight); //長(zhǎng)度如果不一致,按小的值進(jìn)行壓縮 mSrc = Bitmap.createScaledBitmap(mSrc, min, min, false); canvas.drawBitmap(createCircleImage(mSrc, min), 0, 0, null);
ListView在ListActivity類(lèi)中的實(shí)現(xiàn)如下:
public class MainActivity extends ListActivity { private static String[] aa = new String[] { "hello world", "this is my listview", "邵洋江加油", "你會(huì)成功的", "you will success" }; private static int[] draw = new int[] { R.drawable.chutian, R.drawable.icon, R.drawable.chutian, R.drawable.chutian,R.drawable.test }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 每個(gè)list里面放的都是MAP,map里面放的是鍵值對(duì),這里指圖片和文字 List
運(yùn)行效果圖片:
Demo鏈接:http://down.51cto.com/data/1979117