2016-10-03 2 views
0

machen umkreiste ich das Profil-Bild von Google Play Spiele holen will, die mit diesem Verfahren arbeiten:Fetch Google Games Profilbild spielen und es

public void loadPlayerImage() { 
      ImageView playerImage=(ImageView) findViewById(R.id.playerImage); 
      Player me = Games.Players.getCurrentPlayer(mGoogleApiClient); 
      ImageManager mgr = ImageManager.create(this); 
      mgr.loadImage(playerImage, me.getIconImageUri()); 
} 

Aber wenn ich versuche es mit dieser Bibliothek eingekreist, um es Zeigt das Bild nicht an: https://github.com/hdodenhof/CircleImageView

Wie kann ich das Profilbild einkreisen?

Antwort

1

Sie können diese code als Helper innerhalb einer ImageHelper Klasse verwenden und sie so erweitern, dass sie die für ein bestimmtes Bild benötigte Menge an Federung übergibt.

public static Bitmap getRoundedCornerBitmap(Bitmap bitmap) { 
    Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), 
     bitmap.getHeight(), Config.ARGB_8888); 
    Canvas canvas = new Canvas(output); 

    final int color = 0xff424242; 
    final Paint paint = new Paint(); 
    final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); 
    final RectF rectF = new RectF(rect); 
    final float roundPx = 12; 

    paint.setAntiAlias(true); 
    canvas.drawARGB(0, 0, 0, 0); 
    paint.setColor(color); 
    canvas.drawRoundRect(rectF, roundPx, roundPx, paint); 

    paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); 
    canvas.drawBitmap(bitmap, rect, rect, paint); 

    return output; 
} 

Sie können auch überprüfen diese SO answer:

ich ein abgerundetes Image auch gebraucht, ich den folgenden Code verwendet, können Sie es entsprechend ändern:

import android.content.Context; 
import android.graphics.Bitmap; 
import android.graphics.Bitmap.Config; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 
import android.graphics.PorterDuff.Mode; 
import android.graphics.PorterDuffXfermode; 
import android.graphics.Rect; 
import android.graphics.drawable.BitmapDrawable; 
import android.graphics.drawable.Drawable; 
import android.util.AttributeSet; 
import android.widget.ImageView; 

public class RoundedImageView extends ImageView { 

    public RoundedImageView(Context context) { 
     super(context); 
    } 

    public RoundedImageView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public RoundedImageView(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 

     Drawable drawable = getDrawable(); 

     if (drawable == null) { 
      return; 
     } 

     if (getWidth() == 0 || getHeight() == 0) { 
      return; 
     } 
     Bitmap b = ((BitmapDrawable) drawable).getBitmap(); 
     Bitmap bitmap = b.copy(Bitmap.Config.ARGB_8888, true); 

     int w = getWidth(); 
     @SuppressWarnings("unused") 
     int h = getHeight(); 

     Bitmap roundBitmap = getCroppedBitmap(bitmap, w); 
     canvas.drawBitmap(roundBitmap, 0, 0, null); 

    } 

    public static Bitmap getCroppedBitmap(Bitmap bmp, int radius) { 
     Bitmap sbmp; 

     if (bmp.getWidth() != radius || bmp.getHeight() != radius) { 
      float smallest = Math.min(bmp.getWidth(), bmp.getHeight()); 
      float factor = smallest/radius; 
      sbmp = Bitmap.createScaledBitmap(bmp, 
        (int) (bmp.getWidth()/factor), 
        (int) (bmp.getHeight()/factor), false); 
     } else { 
      sbmp = bmp; 
     } 

     Bitmap output = Bitmap.createBitmap(radius, radius, Config.ARGB_8888); 
     Canvas canvas = new Canvas(output); 

     final String color = "#BAB399"; 
     final Paint paint = new Paint(); 
     final Rect rect = new Rect(0, 0, radius, radius); 

     paint.setAntiAlias(true); 
     paint.setFilterBitmap(true); 
     paint.setDither(true); 
     canvas.drawARGB(0, 0, 0, 0); 
     paint.setColor(Color.parseColor(color)); 
     canvas.drawCircle(radius/2 + 0.7f, radius/2 + 0.7f, 
       radius/2 + 0.1f, paint); 
     paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); 
     canvas.drawBitmap(sbmp, rect, rect, paint); 

     return output; 
    } 

} 

Hier sind einige verwandte SO Beiträge, die helfen könnten:

Verwandte Themen