我知道如何将Picasso用于图像,但我不知道如何在底部和边框上添加“标记图标”.
Picasso.with(mContext) .load(url) .resize(250,250) .centerInsIDe() .into(new Target() { @OverrIDe public voID onBitmapLoaded(Bitmap bitmap,Picasso.LoadedFrom from) { Marker driver_marker = mMap.addMarker(new MarkerOptions() .position(new LatLng(Double.parseDouble(lat),Double.parseDouble(lng))) .icon(BitmapDescriptorFactory.fromBitmap(bitmap)) .Title(name) .snippet(address) ); @OverrIDe public voID onBitmapFailed (Drawable errorDrawable){ } @OverrIDe public voID onPrepareLoad (Drawable placeHolderDrawable){ } }); }
我在onBitmapLoaded中添加了这个:
Paint paint = new Paint(); paint.setcolor(color.YELLOW); paint.setstrokeWIDth(10); paint.setShadowLayer(5,1,color.RED); Canvas canvas = new Canvas(bitmap); canvas.drawline(0,canvas.getWIDth(),paint); canvas.drawline(0,canvas.getHeight(),paint); canvas.drawline(canvas.getWIDth(),paint);
这似乎增加了边框,但我如何用Canvas添加倒金字塔?谢谢,在那之后,我已经完成了! :d
解决方法 这是我工作的转型课程.它缺少角落半径和任何渐变,但底部有倒金字塔,它应该是一个很好的起点.这是转换类:
import androID.graphics.Bitmap;import androID.graphics.BitmapShader;import androID.graphics.Canvas;import androID.graphics.color;import androID.graphics.Paint;import androID.graphics.Path;import androID.graphics.RectF;import androID.graphics.Shader;public class Bubbletransformation implements com.squareup.picasso.transformation { private static final int outermargin = 40; private final int margin; // dp // margin is the board in dp public Bubbletransformation(final int margin) { this.margin = margin; } @OverrIDe public Bitmap transform(final Bitmap source) { Bitmap output = Bitmap.createBitmap(source.getWIDth(),source.getHeight(),Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(output); Paint paintborder = new Paint(); paintborder.setcolor(color.CYAN); paintborder.setstrokeWIDth(margin); canvas.drawRoundRect(new RectF(outermargin,outermargin,source.getWIDth() - outermargin,source.getHeight() - outermargin),paintborder); Paint trianglePaint = new Paint(Paint.ANTI_AliAS_FLAG); trianglePaint.setstrokeWIDth(2); trianglePaint.setcolor(color.CYAN); trianglePaint.setStyle(Paint.Style.FILL_AND_stroke); trianglePaint.setAntiAlias(true); Path triangle = new Path(); triangle.setFillType(Path.FillType.EVEN_ODD); triangle.moveto(outermargin,source.getHeight() / 2); triangle.lineto(source.getWIDth()/2,source.getHeight()); triangle.lineto(source.getWIDth()-outermargin,source.getHeight()/2); triangle.close(); canvas.drawPath(triangle,trianglePaint); final Paint paint = new Paint(); paint.setAntiAlias(true); paint.setShader(new BitmapShader(source,Shader.TileMode.CLAMP,Shader.TileMode.CLAMP)); canvas.drawRoundRect(new RectF(margin+outermargin,margin+outermargin,source.getWIDth() - (margin + outermargin),source.getHeight() - (margin + outermargin)),paint); if (source != output) { source.recycle(); } return output; } @OverrIDe public String key() { return "rounded"; }}
对毕加索的呼吁:
Picasso.with(getActivity()) .load(user_photo_url) .resize(250,250) .centerCrop() .transform(new Bubbletransformation(20)) .into(mTarget);
目标:
Target mTarget = new Target() { @OverrIDe public voID onBitmapLoaded(Bitmap bitmap,Picasso.LoadedFrom from) { Marker driver_marker = mMap.addMarker(new MarkerOptions() .position(latLng) .icon(BitmapDescriptorFactory.fromBitmap(bitmap)) .Title("test") .snippet("test address") ); } @OverrIDe public voID onBitmapFailed(Drawable errorDrawable) { Log.d("picasso","onBitmapFailed"); } @OverrIDe public voID onPrepareLoad(Drawable placeHolderDrawable) { }};
结果:
总结以上是内存溢出为你收集整理的android – 如何使用Picasso为Google Marker自定义图标创建语音泡泡边框?全部内容,希望文章能够帮你解决android – 如何使用Picasso为Google Marker自定义图标创建语音泡泡边框?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)