如何设置具有动态颜色的自定义标记图标,该图标只能更改具有动态颜色的绿色区域
GoogleMap.addMarker(new MarkerOptions() .position(latLng) .visible(true) .icon(BitmapDescriptorFactory.fromBitmap(changeBitmapcolor(color))));
//这里将动态颜色设置为标记图标
private Bitmap changeBitmapcolor(int color) { Bitmap sourceBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.pin_def); Bitmap resultBitmap = Bitmap.createBitmap(sourceBitmap, 0, 0, sourceBitmap.getWIDth() - 1, sourceBitmap.getHeight() - 1); Paint p = new Paint(); colorFilter filter = new lightingcolorFilter(color, 0); p.setcolorFilter(filter); Canvas canvas = new Canvas(resultBitmap); canvas.drawBitmap(resultBitmap, 0, 0, p); return resultBitmap; }
/ /它的工作,但它也改变白色.如何避免这种情况,仅更改绿色并保持中心白色区域不变.谢谢.
解决方法:
我通过以下方式实现了这一目标.我使用了两个单独的图像(带有徽标和不带相同尺寸的徽标),带有徽标的图像是透明的,并将它们合并为一个图像.
GoogleMap.addMarker(new MarkerOptions() .position(latLng) .visible(true).snippet(String.valueOf(i)) .icon(BitmapDescriptorFactory.fromBitmap(changeBitmapcolor(color))));private Bitmap changeBitmapcolor(int color) { Bitmap ob = BitmapFactory.decodeResource(this.getResources(), R.drawable.pin_fill); Bitmap obm = Bitmap.createBitmap(ob.getWIDth(), ob.getHeight(), Bitmap.Config.ARGB_8888); Bitmap overlay = BitmapFactory.decodeResource(this.getResources(), R.drawable.pin_trans); Bitmap overlaym = Bitmap.createBitmap(overlay.getWIDth(), overlay.getHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(overlaym); Paint paint = new Paint(); paint.setcolorFilter(new PorterDuffcolorFilter(color, PorterDuff.Mode.SRC_Atop)); canvas.drawBitmap(ob, 0f, 0f, paint); canvas.drawBitmap(overlay, 0f, 0f, null); return overlaym; }
总结 以上是内存溢出为你收集整理的在Android中使用动态颜色设置地图标记图标全部内容,希望文章能够帮你解决在Android中使用动态颜色设置地图标记图标所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)