天天看點

Android 頭像定位圖示

前言

相信很多小夥伴都使用過高德地圖或者百度地圖,其中肯定或多或少的會有通過頭像定位圖示顯示使用者位置的需求。比如類似于微信的位置共享或者到位App的使用者位置顯示。都是采取了通過頭像合成頭像定位圖示的方式。其中可以在伺服器上合成直接傳回也可以在用戶端上合成,由于這是針對Android的文章,自然是需要通過Android代碼來實作的。話不多少,上效果。

效果

Android 頭像定位圖示

這是我之前寫過的一個應用,裡面正好就有這個功能。效果實作後就是這個樣子。從伺服器擷取到頭像之後動态合成定位圖示的Bitmap對象加載到地圖上顯示。

代碼

來說一下實作代碼把。代碼不多,其實就是操作Bitmap對象就行二次繪制而已。首先要擷取到頭像的Bitmap對象,然後将其繪制為圓形圖檔,然後将定位圖示作為畫布的背景,将之前的圓形圖檔再繪制在圖示畫布上達到覆寫的效果,即可生成頭像定位小圖示。先看代碼。

這段代碼是将頭像的Bitmap對象繪制為圓形圖檔。其中resource為頭像Bitmap對象,min為圓形圖檔的半徑,isWhite是表示定位圖示顔色是白色不,因為我的項目裡面有藍色定位圖示和白色定位圖示兩種,效果圖中顯示的是白色定位圖示。

public static Bitmap drawMark(Bitmap resource, final int min,boolean isWhite) {
        final Paint paint = new Paint();
        paint.setAntiAlias(true);
        Bitmap target = Bitmap.createBitmap(min, min, Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(target);
        canvas.drawCircle(min / , min / , min / , paint);
        resource=Bitmap.createScaledBitmap(resource,min,min,true);
        paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
        canvas.drawBitmap(resource, , , paint);
        resource.recycle();
        return overlying(target,isWhite);
    }
           

将頭像圓形化之後要進行圖示的覆寫。代碼如下,原理也很簡單。其将定位圖示資源提取為Bitmap對象,然後将按照比例轉化,最後作為Canvas的畫布,将source圓形頭像,再繪制在其上,達到覆寫的效果。即可生成頭像定位圖示。

public static Bitmap overlying(Bitmap source,boolean isWhite){
        Paint paint = new Paint();
        paint.setAntiAlias(true);
        Bitmap image ;
        if (isWhite){
            image = BitmapFactory.decodeResource(HereApplication.getContext()
                    .getResources(),R.drawable.white_map_head)
                    .copy(Bitmap.Config.ARGB_8888,true);
        }else {
            image = BitmapFactory.decodeResource(HereApplication.getContext()
                    .getResources(),R.drawable.bule_map_head)
                    .copy(Bitmap.Config.ARGB_8888,true);
        }
        image=Bitmap.createScaledBitmap(image,,,true);
        Canvas canvas = new Canvas(image);
        canvas.drawBitmap(source,,,paint);
        source.recycle();
        return image;
    }
           

圖示

Android 頭像定位圖示

白色圖示由于顔色問題導緻看不清,位置就在此文字下方。

Android 頭像定位圖示

結束

最後如果圖示提取有問題,邊緣不透明的話可以移步到我的github項目中自行提取,有想了解我的項目的可以下載下傳源碼試看。 項目源碼 覺得有幫助的可以幫忙star,謝謝。

繼續閱讀