Java 如何创建聊天室样式的ImageView?
我创建了一个Java 如何创建聊天室样式的ImageView?,java,android,android-imageview,Java,Android,Android Imageview,我创建了一个ImageView子类,它利用BitmapShader,Paint,和Canvas将图像绘制成一个圆圈,创建一个圆形的ImageView感觉和外观。Facebook的聊天室负责人做的一件事就是在他们的ImageView上放置一个通知框,说明有多少条新消息。我想模仿这种外观,并能够在我的CircularImageView上应用通知框。下面是我所说的一个例子: 注意到照片中第一个红色框了吗?我想在我的ImageView上放置类似的内容,但我不确定我将如何进行此操作。也许我可以覆盖onD
ImageView
子类,它利用BitmapShader
,Paint
,和Canvas
将图像绘制成一个圆圈,创建一个圆形的ImageView
感觉和外观。Facebook的聊天室负责人做的一件事就是在他们的ImageView
上放置一个通知框,说明有多少条新消息。我想模仿这种外观,并能够在我的CircularImageView
上应用通知框。下面是我所说的一个例子:
注意到照片中第一个红色框了吗?我想在我的ImageView
上放置类似的内容,但我不确定我将如何进行此操作。也许我可以覆盖onDraw
方法,并在canvas
对象上使用drawText
方法,但如何为文本提供正确的坐标?是相对于图像视图的坐标吗
因此,总而言之,在图像视图上放置通知框的最佳方法是什么?我的问题的解决方案正是我所想的。我必须重写onDraw
方法,在将Bitmap
绘制到Canvas
上一个圆圈后(在我的问题之前已经做过),我只需调用Canvas
实例上的drawText
方法,该实例将绘制之前绘制的内容
代码如下:
BitmapDrawable bitDraw = (BitmapDrawable) this.getDrawable();
Bitmap bitmap = bitDraw.getBitmap();
//paint for the text
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setColor(Color.WHITE);
paint.setTextSize((int) getTextSize() * scale);
paint.setShadowLayer(1f, 0f, 1f, Color.BLACK);
//draw the text to specific position
Rect bounds = new Rect();
paint.getTextBounds(String.valueOf(getNotificationAmount()), 0, String.valueOf(getNotificationAmount()).length(), bounds);
int x = bitmap.getWidth() - bounds.width();
int y = bitmap.getHeight() - bounds.height();
canvas.drawText(String.valueOf(getNotificationAmount()), x, y, paint);
注意,位图对象已经作为一个圆圈绘制到画布上,并且不是这个问题的重点,因此我没有发布该代码。剩下的就是利用x和y值来获得适当的定位。哦,如果你想把红色的长方形放在文本后面,我想你必须对一个长方形做类似的事情。我希望这能帮助任何有类似问题的人 这将是非常有帮助的,如果你能提供你如何裁剪成圆形图像的代码。